module Main where import HUnit import Distribution.Package import Distribution.Version import FiniteMap import System.Directory import Text.XML.HaXml.Haskell2Xml testMap :: FiniteMap PkgIdentifier PackageConfig testMap = addToFM emptyFM testIdent testPackage testPackage :: PackageConfig testPackage = basicPackage testIdent testIdent :: PkgIdentifier testIdent = PkgIdentifier "MyPackage" (NumberedVersion 1 2 3) testPackage2 :: PackageConfig testPackage2 = Package{pkgIdent=testIdent, auto=True, import_dirs=["foo/bar/", "/var/log", "asdf /\\:"], source_dirs=[], extra_ghc_opts=["-fglasgow-exts", "-Wall"], extra_hugs_opts=["-h98"], extra_nhc_opts=["-cpp", "-T"], c_includes=["stdio"], license=OtherLicense "/my/overly/complex/lic ense", depends=[Dependency "Foo" AnyVersion, Dependency "Bar" (ExactlyThisVersion (NumberedVersion 1 2 3)), Dependency "Bang" (Between (OrEarlierVersion (NumberedVersion 1 2 3)) (StrictlyEarlierVersion (NumberedVersion 2 3 4)))], build_deps=[Dependency "Foo1" AnyVersion, Dependency "Bar2" (ExactlyThisVersion (NumberedVersion 1 2 3)), Dependency "Bang3" (Between (OrEarlierVersion (NumberedVersion 1 2 3)) (StrictlyEarlierVersion (NumberedVersion 2 3 4)))], library_dirs=["/lib/dir/1", "/lib/dir/2"], hs_libraries=["/hs_lib/dir/1", "/hs_lib/dir/2"], extra_libraries=["/extra_libs/dir/1", "/extra_libs/dir/2"], include_dirs=["/include/dir/1", "/include/dir/2"], extra_cc_opts=["-ccOpt1", "-ccOpt2"], extra_ld_opts=["-ldOpt1", "-ldOpt2"], framework_dirs=["/framework_libs/dir/1", "/framework_libs/dir/2"], extra_frameworks=["fw1", "fw2"] } -- |Combine all of them for any higher-level testers. There may be -- some in this module which rely on IO, but which aren't included -- here. hUnitTests :: [Test] hUnitTests = Distribution.Package.hunitTests ++ Distribution.Version.hunitTests tmpDir :: String tmpDir = "tmp" testFilename1 :: String testFilename1 = tmpDir ++ "/xmlTest.tmp" testFilename2 :: String testFilename2 = tmpDir ++ "/xmlTestOut.tmp" main :: IO () main = do runTestTT $ test Distribution.Package.hunitTests runTestTT $ test Distribution.Version.hunitTests -- Set up the test files that we're going to "diff" createDirectory tmpDir writeXml testFilename1 testPackage2 e <- (readXml testFilename1::IO PackageConfig) writeXml testFilename2 e -- Here you can diff -u tmp/xmlTest tmp/xmlTestOut f1 <- readFile(testFilename1) f2 <- readFile(testFilename2) runTestTT $ test ["write and read" ~: "failed" ~: show e ~=? show testPackage2, "file compare" ~: f1 ~=? f2 ] -- Cleanup putStrLn "Cleaning up..." removeFile testFilename1 removeFile testFilename2 removeDirectory tmpDir return ()