1-------------------------------------------------------------------------------
4-- Copyright : (c) 2015 Andy Arvanitis and other contributors
7-- Maintainer : Andy Arvanitis
8-- Stability : experimental
13-------------------------------------------------------------------------------
17import Control.Applicative
22import System.Directory
24-------------------------------------------------------------------------------
25testsDir :: IO (FilePath, FilePath)
26-------------------------------------------------------------------------------
28 baseDir <- getCurrentDirectory
29 return (baseDir </> "pcc-tests", baseDir)
31-------------------------------------------------------------------------------
33-------------------------------------------------------------------------------
36 (outputDir, baseDir) <- testsDir
38 outputDirExists <- doesDirectoryExist outputDir
39 when outputDirExists $ removeDirectoryRecursive outputDir
40 createDirectory outputDir
44 let srcDir = outputDir </> "src"
45 createDirectory srcDir
47 let passingDir = baseDir </> "examples" </> "passing"
48 passingTestCases <- sort . filter (".purs" `isSuffixOf`) <$> getDirectoryContents passingDir
50 -- Auto-generate Makefile
51 setCurrentDirectory outputDir
52 callProcess "../.cabal-sandbox/bin/pcc" []
54 let tests = filter (`notElem` skipped) passingTestCases
58 forM_ tests $ \inputFile -> do
62 putStrLn $ "Compiling test " ++ inputFile ++ " ..."
63 setCurrentDirectory outputDir
64 copyFile (passingDir </> inputFile) (srcDir </> inputFile)
65 callProcess "make" ["clean"]
66 callProcess "make" ["debug"]
70 callProcess ("output" </> "bin" </> "main") []
72 removeFile (srcDir </> inputFile)
74 -- TODO: support failing test cases
76 -- let failing = baseDir </> "examples" </> "failing"
77 -- failingTestCases <- sort . filter (".purs" `isSuffixOf`) <$> getDirectoryContents failing
80 setCurrentDirectory baseDir
81 putStrLn "pcc-tests finished"
82 putStrLn $ "Total tests available: " ++ show (length passingTestCases)
83 putStrLn $ "Tests run: " ++ show (length tests)
84 putStrLn $ "Tests skipped: " ++ show (length skipped)
86-------------------------------------------------------------------------------
88-------------------------------------------------------------------------------
89repo = "git://github.com/pure11/"
91-------------------------------------------------------------------------------
92packages :: [(String, String)]
93-------------------------------------------------------------------------------
95 [ ("purescript-eff", "")
96 , ("purescript-prelude", "")
97 , ("purescript-assert", "")
98 , ("purescript-st", "")
99 , ("purescript-console", "")
100 , ("purescript-functions", "")
103-------------------------------------------------------------------------------
104fetchPackages :: IO ()
105-------------------------------------------------------------------------------
107 (outputDir, baseDir) <- testsDir
108 let packageDir = outputDir </> "packages"
109 createDirectory packageDir
110 setCurrentDirectory packageDir
111 forM_ packages $ \package -> let branch = snd package in
112 callProcess "git" $ ["clone"] ++ (if null branch then [] else ["--branch", branch]) ++ [repo ++ (fst package) ++ ".git"]
113 setCurrentDirectory baseDir
115-------------------------------------------------------------------------------
117-------------------------------------------------------------------------------
119 [ "ExplicitImportReExport.purs" -- OK, test has no main (would pass otherwise)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list