mirror of
https://github.com/haskell/ghcide.git
synced 2024-11-26 12:25:25 +03:00
Add a test case involving -fno-warn-missing-signatures (#720)
* Only enable non-fatal warnings * Revert the change since it has been taken care of in #738
This commit is contained in:
parent
e837b2d0c5
commit
599b27a32b
8
test/data/ignore-fatal/IgnoreFatal.hs
Normal file
8
test/data/ignore-fatal/IgnoreFatal.hs
Normal file
@ -0,0 +1,8 @@
|
||||
-- "missing signature" is declared a fatal warning in the cabal file,
|
||||
-- but is ignored in this module.
|
||||
|
||||
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
|
||||
|
||||
module IgnoreFatal where
|
||||
|
||||
a = 'a'
|
1
test/data/ignore-fatal/cabal.project
Normal file
1
test/data/ignore-fatal/cabal.project
Normal file
@ -0,0 +1 @@
|
||||
packages: ignore-fatal.cabal
|
4
test/data/ignore-fatal/hie.yaml
Normal file
4
test/data/ignore-fatal/hie.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
cradle:
|
||||
cabal:
|
||||
- path: "."
|
||||
component: "lib:ignore-fatal"
|
10
test/data/ignore-fatal/ignore-fatal.cabal
Normal file
10
test/data/ignore-fatal/ignore-fatal.cabal
Normal file
@ -0,0 +1,10 @@
|
||||
name: ignore-fatal
|
||||
version: 1.0.0
|
||||
build-type: Simple
|
||||
cabal-version: >= 1.2
|
||||
|
||||
library
|
||||
build-depends: base
|
||||
exposed-modules: IgnoreFatal
|
||||
hs-source-dirs: .
|
||||
ghc-options: -Werror=missing-signatures
|
@ -1792,8 +1792,8 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
Nothing -- codeaction should not be available
|
||||
, testSession "not top-level" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# OPTIONS_GHC -Wunused-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# OPTIONS_GHC -Wunused-binds #-}"
|
||||
, "module A (foo,bar) where"
|
||||
, "foo = ()"
|
||||
, " where bar = ()"
|
||||
@ -1828,26 +1828,26 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
(R 3 0 3 3)
|
||||
"Export ‘foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A ("
|
||||
, "foo) where"
|
||||
, "foo = id"])
|
||||
, testSession "single line explicit exports" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (foo) where"
|
||||
, "foo = id"
|
||||
, "bar = foo"])
|
||||
(R 3 0 3 3)
|
||||
"Export ‘bar’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (foo,bar) where"
|
||||
, "foo = id"
|
||||
, "bar = foo"])
|
||||
, testSession "multi line explicit exports" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A"
|
||||
, " ("
|
||||
, " foo) where"
|
||||
@ -1856,7 +1856,7 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
(R 5 0 5 3)
|
||||
"Export ‘bar’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A"
|
||||
, " ("
|
||||
, " foo,bar) where"
|
||||
@ -1864,7 +1864,7 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
, "bar = foo"])
|
||||
, testSession "export list ends in comma" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A"
|
||||
, " (foo,"
|
||||
, " ) where"
|
||||
@ -1873,7 +1873,7 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
(R 4 0 4 3)
|
||||
"Export ‘bar’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A"
|
||||
, " (foo,"
|
||||
, " bar) where"
|
||||
@ -1881,83 +1881,83 @@ exportUnusedTests = testGroup "export unused actions"
|
||||
, "bar = foo"])
|
||||
, testSession "unused pattern synonym" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE PatternSynonyms #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE PatternSynonyms #-}"
|
||||
, "module A () where"
|
||||
, "pattern Foo a <- (a, _)"])
|
||||
(R 3 0 3 10)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE PatternSynonyms #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE PatternSynonyms #-}"
|
||||
, "module A (pattern Foo) where"
|
||||
, "pattern Foo a <- (a, _)"])
|
||||
, testSession "unused data type" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A () where"
|
||||
, "data Foo = Foo"])
|
||||
(R 2 0 2 7)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (Foo(..)) where"
|
||||
, "data Foo = Foo"])
|
||||
, testSession "unused newtype" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A () where"
|
||||
, "newtype Foo = Foo ()"])
|
||||
(R 2 0 2 10)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (Foo(..)) where"
|
||||
, "newtype Foo = Foo ()"])
|
||||
, testSession "unused type synonym" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A () where"
|
||||
, "type Foo = ()"])
|
||||
(R 2 0 2 7)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (Foo) where"
|
||||
, "type Foo = ()"])
|
||||
, testSession "unused type family" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE TypeFamilies #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE TypeFamilies #-}"
|
||||
, "module A () where"
|
||||
, "type family Foo p"])
|
||||
(R 3 0 3 15)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE TypeFamilies #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "{-# LANGUAGE TypeFamilies #-}"
|
||||
, "module A (Foo(..)) where"
|
||||
, "type family Foo p"])
|
||||
, testSession "unused typeclass" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A () where"
|
||||
, "class Foo a"])
|
||||
(R 2 0 2 8)
|
||||
"Export ‘Foo’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (Foo(..)) where"
|
||||
, "class Foo a"])
|
||||
, testSession "infix" $ template
|
||||
(T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A () where"
|
||||
, "a `f` b = ()"])
|
||||
(R 2 0 2 11)
|
||||
"Export ‘f’"
|
||||
(Just $ T.unlines
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
[ "{-# OPTIONS_GHC -Wunused-top-binds #-}"
|
||||
, "module A (f) where"
|
||||
, "a `f` b = ()"])
|
||||
]
|
||||
@ -2786,6 +2786,7 @@ haddockTests
|
||||
cradleTests :: TestTree
|
||||
cradleTests = testGroup "cradle"
|
||||
[testGroup "dependencies" [sessionDepsArePickedUp]
|
||||
,testGroup "ignore-fatal" [ignoreFatalWarning]
|
||||
,testGroup "loading" [loadCradleOnlyonce]
|
||||
,testGroup "multi" [simpleMultiTest, simpleMultiTest2]
|
||||
]
|
||||
@ -2875,6 +2876,13 @@ withoutStackEnv s =
|
||||
restore var Nothing = unsetEnv var
|
||||
restore var (Just val) = setEnv var val True
|
||||
|
||||
ignoreFatalWarning :: TestTree
|
||||
ignoreFatalWarning = testCase "ignore-fatal-warning" $ withoutStackEnv $ runWithExtraFiles "ignore-fatal" $ \dir -> do
|
||||
let srcPath = dir </> "IgnoreFatal.hs"
|
||||
src <- liftIO $ readFileUtf8 srcPath
|
||||
_ <- createDoc srcPath "haskell" src
|
||||
expectNoMoreDiagnostics 5
|
||||
|
||||
simpleMultiTest :: TestTree
|
||||
simpleMultiTest = testCase "simple-multi-test" $ withoutStackEnv $ runWithExtraFiles "multi" $ \dir -> do
|
||||
let aPath = dir </> "a/A.hs"
|
||||
|
Loading…
Reference in New Issue
Block a user