git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix psci tests
commitfb399dd5975643cad7e32851051963fe20960968 authorHarry Garrood <harry@garrood.me> dateWed 29 Jul 2015, 13:02 (11 years ago) parent103ea2c
1 file changed+35−29
psci/tests/Main.hs+35−29
psci/tests/Main.hs+35−29
@@ -8,12 +8,13 @@ import Control.Applicative
88import Control.Monad.Writer (runWriterT)
99import Control.Monad.Trans.Except (runExceptT)
1010
11−import Data.List (isSuffixOf, sort)
11+import Data.List (sort)
1212
1313import System.Exit (exitFailure)
1414import System.Console.Haskeline
1515import System.FilePath ((</>))
16−import System.Directory (getCurrentDirectory, getDirectoryContents)
16+import System.Directory (getCurrentDirectory)
17+import qualified System.FilePath.Glob as Glob
1718
1819import Test.HUnit
1920
@@ -48,9 +49,14 @@ completionTestData =
4849 , (":mo", [":module"])
4950 , (":b", [":browse"])
5051
51− -- :browse should complete modules
52− , (":b Prel", [":b Prelude", ":b Prelude.Unsafe"])
53− , (":b Prelude.", [":b Prelude.Unsafe"])
52+ -- :browse should complete module names
53+ , (":b Control.Monad.E", map (":b Control.Monad.Eff" ++) ["", ".Unsafe", ".Class", ".Console"])
54+ , (":b Control.Monad.Eff.", map (":b Control.Monad.Eff" ++) [".Unsafe", ".Class", ".Console"])
55+
56+ -- import should complete module names
57+ , ("import Control.Monad.E", map ("import Control.Monad.Eff" ++) ["", ".Unsafe", ".Class", ".Console"])
58+ , ("import Control.Monad.Eff.", map ("import Control.Monad.Eff" ++) [".Unsafe", ".Class", ".Console"])
59+ , ("import qualified Control.Monad.Eff.", map ("import qualified Control.Monad.Eff" ++) [".Unsafe", ".Class", ".Console"])
5460
5561 -- :load, :module should complete file paths
5662 , (":l psci/tests/data/", [":l psci/tests/data/Sample.purs"])
@@ -66,8 +72,8 @@ completionTestData =
6672 , (":show a", [])
6773
6874 -- :type should complete values and data constructors in scope
69− , (":type Prelude.Unsafe.un", [":type Prelude.Unsafe.unsafeIndex"])
70− , (":type un", [":type unit"])
75+ , (":type Control.Monad.Eff.Console.lo", [":type Control.Monad.Eff.Console.log"])
76+ , (":type uni", [":type unit"])
7177 , (":type E", [":type EQ"])
7278
7379 -- :kind should complete types in scope
@@ -79,25 +85,19 @@ completionTestData =
7985 , (":type EQ ", [])
8086 , (":kind Ordering ", [])
8187
82− -- import should complete module names
83− , ("import Control.Monad.S", ["import Control.Monad.ST"])
84− , ("import qualified Control.Monad.S", ["import qualified Control.Monad.ST"])
85− , ("import Control.Monad.", map ("import Control.Monad." ++)
86− ["Eff", "ST"])
87−
8888 -- a few other import tests
8989 , ("impor", ["import"])
9090 , ("import q", ["import qualified"])
91− , ("import ", map ("import " ++) allModuleNames ++ ["import qualified"])
92− , ("import Prelude.Unsafe ", [])
91+ , ("import ", map ("import " ++) supportModules ++ ["import qualified"])
92+ , ("import Prelude ", [])
9393
9494 -- String and number literals should not be completed
9595 , ("\"hi", [])
9696 , ("34", [])
9797
9898 -- Identifiers and data constructors should be completed
99− , ("un", ["unit"])
100− , ("Debug.Trace.", map ("Debug.Trace." ++) ["print", "trace"])
99+ , ("uni", ["unit"])
100+ , ("Control.Monad.Eff.Class.", ["Control.Monad.Eff.Class.liftEff"])
101101 , ("G", ["GT"])
102102 , ("Prelude.L", ["Prelude.LT"])
103103
@@ -107,14 +107,6 @@ completionTestData =
107107 , ("Control.Monad.ST.new", ["Control.Monad.ST.newSTRef"])
108108 ]
109109 where
110− allModuleNames = [ "Assert"
111− , "Control.Monad.Eff"
112− , "Control.Monad.ST"
113− , "Data.Function"
114− , "Debug.Trace"
115− , "Prelude"
116− , "Prelude.Unsafe"
117− ]
118110
119111assertCompletedOk :: (String, [String]) -> Assertion
120112assertCompletedOk (line, expecteds) = do
@@ -131,10 +123,12 @@ runCM act = do
131123getPSCiState :: IO PSCiState
132124getPSCiState = do
133125 cwd <- getCurrentDirectory
134− let preludeDir = cwd </> "tests" </> "prelude"
135− jsDir = preludeDir </> "js"
136− modulesOrFirstError <- loadAllModules [ preludeDir </> "Prelude.purs" ]
137− jsFiles <- map (jsDir </>) . filter (".js" `isSuffixOf`) <$> getDirectoryContents jsDir
126+ let supportDir = cwd </> "tests" </> "support" </> "flattened"
127+ let supportFiles ext = Glob.globDir1 (Glob.compile ("*." ++ ext)) supportDir
128+ pursFiles <- supportFiles "purs"
129+ jsFiles <- supportFiles "js"
130+
131+ modulesOrFirstError <- loadAllModules pursFiles
138132 foreignFiles <- forM jsFiles (\f -> (f,) <$> readFile f)
139133 Right (foreigns, _) <- runExceptT $ runWriterT $ P.parseForeignModulesFromFiles foreignFiles
140134 case modulesOrFirstError of
@@ -148,3 +142,15 @@ controlMonadSTasST :: ImportedModule
148142controlMonadSTasST = (s "Control.Monad.ST", P.Implicit, Just (s "ST"))
149143 where
150144 s = P.moduleNameFromString
145+
146+supportModules :: [String]
147+supportModules =
148+ [ "Control.Monad.Eff.Class"
149+ , "Control.Monad.Eff.Console"
150+ , "Control.Monad.Eff"
151+ , "Control.Monad.Eff.Unsafe"
152+ , "Control.Monad.ST"
153+ , "Data.Function"
154+ , "Prelude"
155+ , "Test.Assert"
156+ ]