@@ -14,7 +14,7 @@ import Test.Tasty.HUnit (testCase, assertEqual, assertBool)
14
14
import Test.Tasty.Options
15
15
16
16
-- Cabal
17
- import Language.Haskell.Extension (Extension (.. ), KnownExtension (.. ))
17
+ import Language.Haskell.Extension (Extension (.. ), KnownExtension (.. ), Language ( .. ) )
18
18
19
19
-- cabal-install
20
20
import UnitTests.Distribution.Client.Dependency.Modular.DSL
@@ -72,12 +72,18 @@ tests = [
72
72
]
73
73
, testGroup " Extensions" [
74
74
runTest $ mkTestExts [EnableExtension CPP ] dbExts1 " unsupported" [" A" ] Nothing
75
- , runTest $ mkTestExts [EnableExtension CPP ] dbExts1 " unsupportedTransitive " [" B" ] Nothing
75
+ , runTest $ mkTestExts [EnableExtension CPP ] dbExts1 " unsupportedIndirect " [" B" ] Nothing
76
76
, runTest $ mkTestExts [EnableExtension RankNTypes ] dbExts1 " supported" [" A" ] (Just [(" A" ,1 )])
77
- , runTest $ mkTestExts (map EnableExtension [CPP ,RankNTypes ]) dbExts1 " supportedTransitive " [" C" ] (Just [(" A" ,1 ),(" B" ,1 ), (" C" ,1 )])
77
+ , runTest $ mkTestExts (map EnableExtension [CPP ,RankNTypes ]) dbExts1 " supportedIndirect " [" C" ] (Just [(" A" ,1 ),(" B" ,1 ), (" C" ,1 )])
78
78
, runTest $ mkTestExts [EnableExtension CPP ] dbExts1 " disabledExtension" [" D" ] Nothing
79
79
, runTest $ mkTestExts (map EnableExtension [CPP ,RankNTypes ]) dbExts1 " disabledExtension" [" D" ] Nothing
80
- , runTest $ mkTestExts (UnknownExtension " custom" : map EnableExtension [CPP ,RankNTypes ]) dbExts1 " unknownExtension" [" E" ] (Just [(" A" ,1 ),(" B" ,1 ),(" C" ,1 ),(" E" ,1 )])
80
+ , runTest $ mkTestExts (UnknownExtension " custom" : map EnableExtension [CPP ,RankNTypes ]) dbExts1 " supportedUnknown" [" E" ] (Just [(" A" ,1 ),(" B" ,1 ),(" C" ,1 ),(" E" ,1 )])
81
+ ]
82
+ , testGroup " Languages" [
83
+ runTest $ mkTestLangs [Haskell98 ] dbLangs1 " unsupported" [" A" ] Nothing
84
+ , runTest $ mkTestLangs [Haskell98 ,Haskell2010 ] dbLangs1 " supported" [" A" ] (Just [(" A" ,1 )])
85
+ , runTest $ mkTestLangs [Haskell98 ] dbLangs1 " unsupportedIndirect" [" B" ] Nothing
86
+ , runTest $ mkTestLangs [Haskell98 , Haskell2010 , UnknownLanguage " Haskell3000" ] dbLangs1 " supportedUnknown" [" C" ] (Just [(" A" ,1 ),(" B" ,1 ),(" C" ,1 )])
81
87
]
82
88
]
83
89
where
@@ -88,40 +94,59 @@ tests = [
88
94
-------------------------------------------------------------------------------}
89
95
90
96
data SolverTest = SolverTest {
91
- testLabel :: String
92
- , testTargets :: [String ]
93
- , testResult :: Maybe [(String , Int )]
94
- , testIndepGoals :: Bool
95
- , testDb :: ExampleDb
96
- , testSupportedExts :: [Extension ]
97
+ testLabel :: String
98
+ , testTargets :: [String ]
99
+ , testResult :: Maybe [(String , Int )]
100
+ , testIndepGoals :: Bool
101
+ , testDb :: ExampleDb
102
+ , testSupportedExts :: [Extension ]
103
+ , testSupportedLangs :: [Language ]
97
104
}
98
105
99
106
mkTest :: ExampleDb
100
107
-> String
101
108
-> [String ]
102
109
-> Maybe [(String , Int )]
103
110
-> SolverTest
104
- mkTest = mkTestExts []
111
+ mkTest = mkTestExtLang [] []
105
112
106
113
mkTestExts :: [Extension ]
107
114
-> ExampleDb
108
115
-> String
109
116
-> [String ]
110
117
-> Maybe [(String , Int )]
111
118
-> SolverTest
112
- mkTestExts exts db label targets result = SolverTest {
113
- testLabel = label
114
- , testTargets = targets
115
- , testResult = result
116
- , testIndepGoals = False
117
- , testDb = db
118
- , testSupportedExts = exts
119
+ mkTestExts exts = mkTestExtLang exts []
120
+
121
+ mkTestLangs :: [Language ]
122
+ -> ExampleDb
123
+ -> String
124
+ -> [String ]
125
+ -> Maybe [(String , Int )]
126
+ -> SolverTest
127
+ mkTestLangs = mkTestExtLang []
128
+
129
+ mkTestExtLang :: [Extension ]
130
+ -> [Language ]
131
+ -> ExampleDb
132
+ -> String
133
+ -> [String ]
134
+ -> Maybe [(String , Int )]
135
+ -> SolverTest
136
+ mkTestExtLang exts langs db label targets result = SolverTest {
137
+ testLabel = label
138
+ , testTargets = targets
139
+ , testResult = result
140
+ , testIndepGoals = False
141
+ , testDb = db
142
+ , testSupportedExts = exts
143
+ , testSupportedLangs = langs
119
144
}
120
145
121
146
runTest :: SolverTest -> TF. TestTree
122
147
runTest SolverTest {.. } = askOption $ \ (OptionShowSolverLog showSolverLog) ->
123
148
testCase testLabel $ do
124
- let (_msgs, result) = exResolve testDb testSupportedExts testTargets testIndepGoals
149
+ let (_msgs, result) = exResolve testDb testSupportedExts testSupportedLangs testTargets testIndepGoals
125
150
when showSolverLog $ mapM_ putStrLn _msgs
126
151
case result of
127
152
Left err -> assertBool (" Unexpected error:\n " ++ err) (isNothing testResult)
@@ -371,6 +396,13 @@ dbExts1 = [
371
396
, Right $ exAv " E" 1 [ExExt (UnknownExtension " custom" ), ExAny " C" ]
372
397
]
373
398
399
+ dbLangs1 :: ExampleDb
400
+ dbLangs1 = [
401
+ Right $ exAv " A" 1 [ExLang Haskell2010 ]
402
+ , Right $ exAv " B" 1 [ExLang Haskell98 , ExAny " A" ]
403
+ , Right $ exAv " C" 1 [ExLang (UnknownLanguage " Haskell3000" ), ExAny " B" ]
404
+ ]
405
+
374
406
375
407
{- ------------------------------------------------------------------------------
376
408
Test options
0 commit comments