テスト用にディレクトリを生成・コピーするTest::TempDir::Simple

 最近になってようやっと、WAFを絡めた機能テストを書くようになってきました…><
 自分のやってる案件の都合等もあると思うのですが、例えば画像をアップして保存する、みたいなパターンは結構多いと思います。
 んで、Catalystなんかだと、画像の保存パスを指定するのに、

$c->path_to(qw/path to upload dir/, $filename);

 的なことをよくやると思います。
 このとき、何も考えずにテストを実行すると、WAF側で指定しているところと同じ場所にファイルが書き込まれてしまうという問題があると思います。
 よくあるWAFの設計では、基準になるディレクトリは外から指定できるようになっているので、これを利用して、テストで生成したものはなるべくテスト環境内で完結するようにしたほうがいいのではないかな、と。
 一時的なディレクトリの生成には、File::Tempのtempdir関数が相場が決まってますので、これをベースに、任意のディレクトリを一時ディレクトリに展開し、環境構築するためのモジュールを作ってみました。
 それがTest::TempDir::Simpleです。
 "Simple"なのには理由があって、何故なら既にCPANにはTest::TempDirというモジュールが存在していて、しかも向こうはMooseベースなのです。当然ながら、できることも少ないんですけどね…。
 使い方は簡単で、Test::TempDir::Simpleをuseする際、コピーしたいディレクトリのパスの配列をimport関数に渡してあげるだけです。
 t/以下のテストコードで実行されることを想定しているので、

use Test::TempDir::Simple -t => qw/data/;

 のように書くことで、tと同階層にあるdataディレクトリを一時ディレクトリにコピーすることができます。
 さらに、任意のディレクトリに使えるように、

use Test::TempDir::Simple -dir => '/path/to/dir', qw/data/;

 という書き方で、"/path/to/dir/data"を一時ディレクトリにコピーするようにもしています。
 また、useした際、testdirとinitdirという関数がそれぞれエクスポートされます。testdir関数は、現在の一時ディレクトリのパスを返します。initdir関数を叩いたときは、現在の一時ディレクトリを削除し、新たに一時ディレクトリを生成し、そのパスを返します。
 と、ここまで書いてアレなんですが、そもそも、こんなモジュールをつくる必要があったのか、とか、違う名前にした方がいいんじゃないか、という不安はずっとあるんですけどね…