2014年2月14日金曜日

SpockでPandocをCharacterization Testする

SpockでPandocのCharacterization Testを行う手順は、以下の通り。なお、Characterization Testとは、テストが用意されていないソースコードに対して、現状の挙動をそのまま記録するテストのこと(もちろん、Pandocは例として使用しているだけで、Pandoc自体がテストされていないという意味ではない)。詳細は、『Working Effectively with Legacy Code Chapter 13』を参照。

 

前提

 

手順

まずは、Markdownで書かれた、以下のファイル(header.md)を用意する。
#Header Test
次に、Spockのテストを用意する。


このテストでは、PandocでMarkdownファイルをHTMLファイルに変換し、そのHTMLファイルの内容をテストしている。期待値が空文字になっているため、当然このテストは失敗する。
Condition not satisfied:

"" == result
   |  |
   |  <h1 id="header-test">Header Test</h1>
   false
   39 differences (0% similarity)
   (--------------------------------------~-~)
   (<h1 id="header-test">Header Test</h1>\r\n)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
実際の変換結果はheader.htmlに出力されているので、その内容をテストコードに反映する。


再度テストを実行すると、成功するはずのテストが、まだ失敗する。
Condition not satisfied:

"""<h1 id="header-test">Header Test</h1> //""" == result
                                               |  |
                                               |  <h1 id="header-test">Header Test</h1>
                                               false
                                               3 differences (92% similarity)
                                               <h1 id="header-test">Header Test</h1>(-~)\n(//)
                                               <h1 id="header-test">Header Test</h1>(\r)\n(--)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
どうも、期待値と検証値で改行コードが異なるのが原因らしい。期待値と検証値それぞれでnormalizeメソッドを実行して、改行コードの違いを吸収する。


上記の修正後、再度テストを実行すると、無事テストが成功する。

2014年2月13日木曜日

Amazonの「納品書兼領収書」が「納品書」に変更されている件

Amazonから商品が送付される際に基本的に同梱されていた「納品書兼領収書」が、「納品書」に変更されている模様。詳細は、下記リンクに詳しい。


手元にある書類を確認したところ、昨年6月頃から「納品書」に変更されていた。領収書は、注文履歴から印刷が可能。手順については、上記リンクを参照。

なお、Kendle版の書籍の領収書については、これまで通り、別途領収書の発行依頼が必要な模様。上記と同じ手順でKendle版書籍の領収書印刷が可能、という記事やブログをいくつか見かけたが、手元で試した限りは、「領収書」ではなく「注文の詳細」しか表示されなかった。Kendle版書籍の領収書発行を依頼する手順は、下記を参照。

2014年2月12日水曜日

WindowsのSourceTreeでlibiconv-2.dllが見つからないエラーの対処法

Windows版のSourceTreeをインストールしたが、libiconv-2.dllが見つからないエラーに遭遇。この問題を回避するには、Gitのインストールディレクトリ内のbin/libiconv-2.dllをlibexec/git-coreフォルダにコピーする。

なお、SourceTreeから使用するGit(「ツール」-「オプション」-「Git」-「Gitバージョン」で指定可能) はシステムGitを指定している。内蔵Gitを指定しても同様の問題が発生したが、その場合の回避法はわからず。

 

関連リンク

WindowsにHaskellをインストールする

WindowsにHaskell処理系のひとつである、Haskell Platformをインストールする手順は、以下の通り。

Haskell Platformのダウンロードページ からリンクをたどって、Windows用のインストーラ(現時点では、HaskellPlatform 2013.2.0.0 for Windows)をダウンロードする。

ダウンロードしたインストーラーはウィザード形式になっているが、デフォルトでのインストールで特に問題はない。

インストール完了後にコマンドプロンプトを起動し、ghciコマンドが実行できることを確認する。
>ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>

上記のように、対話的なインタープリタが起動する。なお、このインタープリタはCtrl+Dで終了する。

関連リンク

2014年2月5日水曜日

コマンドラインのコマンドをGroovyから実行する

コマンドラインのコマンドを実行するGroovyスクリプトは、以下の通り。

下記の例では、Pandocのバージョン情報を出力している。(Pandocをインストールしていない場合は、実行可能なコマンドに適宜変更すること。なお、Pandocのインストールについては『PandocをWindowsにインストールする』を参照。)


実行したいコマンドからなる文字列のexecuteメソッドを呼び出すことにより、コマンドの実行を非同期で開始する(1行目)。このメソッドはjava.lang.Processを返す。コマンドの実行が完了するのを待って(2行目)、標準出力の内容をprintlnしている(3行目)。

なお、コマンドが標準出力に出力した内容を確認したいだけなら、6行目のように記述することも可能。

2014年2月4日火曜日

EclipseでSpockを試す

前提

  • Spock 0.7
  • Groovy 2.0.7
  • 動作確認環境
    • Eclipse 4.3 SR1
    • Eclipse Plugin
      • Groovy Eclipse
      • Gradle IDE
動作確認環境の構築手順については、『Gradleを使ってEclipse 4.3+Groovy Eclipse+Gradle IDEをインストール』を参照

手順

Eclipseで新規プロジェクト(一般プロジェクト)を作成し、プロジェクト直下に、以下のbuild.gradleを配置する。


コマンドラインでプロジェクトのディレクトリに移動し、以下のタスクを実行する。
gradle mkdirs
gradle cleanEclipse
gradle eclipse
プロジェクトを右クリックし、「Refresh」を選択すると、プロジェクトがGroovyプロジェクトとして認識される。再度プロジェクトを右クリックし、「Configure」-「Convert to Gradle Project」を選択すると、Gladleプロジェクトに変換される。

この時点で、以下の設定も確認しておく。

  • 「Windows」-「Preferences」-「Groovy」
    • Use monospace font for JUnit (deprecated)にチェック
    • これにより、JUnit実行時に monospace fontが使用される
  • 「Windows」-「Preferences」-「Gradle」
    • Disable underlininig for .gradle files
    • これにより、.gradleファイルを開いた際に、余計な下線が表示されるのを抑止

以下のSpockのテストケース(SampleSpec.groovy)を、「src/test/groovy」に作成する。


配置したSampleSpec.groovyを右クリックし、 「Run as」-「JUnit Test」を選択するとテストが実行される、テストが失敗する(このテストは意図的に失敗するよう書かれている)。

以下のように修正し、再度テストを実行すると、テストが成功することを確認できる。