レクサーがあり、既知の適切なテスト ケースのセットに対してテストしたいと考えています。これらはサブディレクトリ./test_src/に保持され、それぞれに拡張子testname .txtが付いています
私がやりたいことは、関連するすべてのテストケースへのパスを取得することです:
getTestFiles :: IO [FilePath]
find always (extension ==? ".txt") "/path/to/test_src/"
HUnit TestCases を含む HUnit TestList を作成し、それぞれの行に沿って関数を介して作成されたアサーションを使用します。
testMyLexer :: IO FilePath -> Assertion
の線に沿った何か
myTest :: [IO FilePath] -> Test
myTest = TestList $ fmap TestCase $ fmap testMyLexer
私のアプローチで失敗しているように見えるのは、これには最初に次の関数が必要であり、次にその結果をマッピングするように思われることです:
unableToDoThis :: IO [FilePath] -> [IO FilePath]
IOモナドをエスケープする必要があるように見えるため、私が従っているアプローチは不可能であると強く疑っています。
- このアプローチは実行可能ですか?もしそうなら、何が欠けていますか?
- そうでない場合、この問題をどのように解決しますか? すべてのテストケースでハードコーディングを避けることはかなり一般的です