Skip to content

Commit f7a54e5

Browse files
committed
Add eval plugin info cmd tests
1 parent 366ce59 commit f7a54e5

17 files changed

+143
-4
lines changed

plugins/hls-eval-plugin/hls-eval-plugin.cabal

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ extra-source-files:
2323
test/testdata/*.hs
2424
test/testdata/*.lhs
2525
test/testdata/*.yaml
26-
test/testdata/cabal.project
26+
test/info-util/*.cabal
27+
test/info-util/*.hs
28+
test/cabal.project
2729

2830
flag pedantic
2931
description: Enable -Werror

plugins/hls-eval-plugin/test/Main.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ tests =
107107
]
108108
, goldenWithEval "Works with NoImplicitPrelude" "TNoImplicitPrelude" "hs"
109109
, goldenWithEval "Variable 'it' works" "TIt" "hs"
110+
, goldenWithEval ":info reports type, constructors and instances" "TInfo" "hs"
111+
, goldenWithEval ":info reports type, constructors and instances for multiple types" "TInfoMany" "hs"
112+
, goldenWithEval ":info! reports type, constructors and unfiltered instances" "TInfoBang" "hs"
113+
, goldenWithEval ":info! reports type, constructors and unfiltered instances for multiple types" "TInfoBangMany" "hs"
114+
, goldenWithEval ":i behaves exactly the same as :info" "TI_Info" "hs"
110115
]
111116

112117
goldenWithEval :: TestName -> FilePath -> FilePath -> TestTree
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
packages:
2+
testdata/
3+
info-util/
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module InfoUtil
2+
( Eq
3+
, Ord
4+
, Foo (..)
5+
, Bar (..)
6+
, Baz
7+
)
8+
where
9+
10+
import Prelude (Eq, Ord)
11+
12+
data Foo = Foo1 | Foo2
13+
deriving (Eq, Ord)
14+
15+
data Bar = Bar1 | Bar2 | Bar3
16+
deriving (Eq, Ord)
17+
18+
class Baz t
19+
instance Baz Foo
20+
instance Baz Bar
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: info-util
2+
version: 0.1.0.0
3+
-- synopsis:
4+
-- description:
5+
license: BSD3
6+
author: Author name here
7+
maintainer: [email protected]
8+
copyright: 2017 Author name here
9+
category: Web
10+
build-type: Simple
11+
cabal-version: >=1.10
12+
13+
library
14+
exposed-modules:
15+
InfoUtil
16+
build-depends: base >= 4.7 && < 5
17+
default-language: Haskell2010
18+
ghc-options: -Wall -fwarn-unused-imports
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module TI_Info (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :i Foo
6+
-- type Foo :: *
7+
-- data Foo = Foo1 | Foo2
8+
-- -- Defined in ‘InfoUtil’
9+
-- instance [safe] Eq Foo -- Defined in ‘InfoUtil’
10+
-- instance [safe] Ord Foo -- Defined in ‘InfoUtil’
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TI_Info (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :i Foo
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module TInfo (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :info Foo
6+
-- type Foo :: *
7+
-- data Foo = Foo1 | Foo2
8+
-- -- Defined in ‘InfoUtil’
9+
-- instance [safe] Eq Foo -- Defined in ‘InfoUtil’
10+
-- instance [safe] Ord Foo -- Defined in ‘InfoUtil’
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TInfo (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :info Foo
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module TInfoBang (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :info! Foo
6+
-- type Foo :: *
7+
-- data Foo = Foo1 | Foo2
8+
-- -- Defined in ‘InfoUtil’
9+
-- instance [safe] Eq Foo -- Defined in ‘InfoUtil’
10+
-- instance [safe] Ord Foo -- Defined in ‘InfoUtil’
11+
-- instance [safe] Baz Foo -- Defined in ‘InfoUtil’
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TInfoBang (Eq, Ord, Foo) where
2+
3+
import InfoUtil (Eq, Ord, Foo)
4+
5+
-- >>> :info! Foo
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module TInfoBangMany (Eq, Ord, Foo, Bar) where
2+
3+
import InfoUtil (Eq, Ord, Foo, Bar)
4+
5+
-- >>> :info! Foo Bar
6+
-- type Foo :: *
7+
-- data Foo = Foo1 | Foo2
8+
-- -- Defined in ‘InfoUtil’
9+
-- instance [safe] Eq Foo -- Defined in ‘InfoUtil’
10+
-- instance [safe] Ord Foo -- Defined in ‘InfoUtil’
11+
-- instance [safe] Baz Foo -- Defined in ‘InfoUtil’
12+
-- type Bar :: *
13+
-- data Bar = Bar1 | Bar2 | Bar3
14+
-- -- Defined in ‘InfoUtil’
15+
-- instance [safe] Eq Bar -- Defined in ‘InfoUtil’
16+
-- instance [safe] Ord Bar -- Defined in ‘InfoUtil’
17+
-- instance [safe] Baz Bar -- Defined in ‘InfoUtil’
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TInfoBangMany (Eq, Ord, Foo, Bar) where
2+
3+
import InfoUtil (Eq, Ord, Foo, Bar)
4+
5+
-- >>> :info! Foo Bar
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module TInfoMany (Eq, Ord, Foo, Bar) where
2+
3+
import InfoUtil (Eq, Ord, Foo, Bar)
4+
5+
-- >>> :info Foo Bar
6+
-- type Foo :: *
7+
-- data Foo = Foo1 | Foo2
8+
-- -- Defined in ‘InfoUtil’
9+
-- instance [safe] Eq Foo -- Defined in ‘InfoUtil’
10+
-- instance [safe] Ord Foo -- Defined in ‘InfoUtil’
11+
-- type Bar :: *
12+
-- data Bar = Bar1 | Bar2 | Bar3
13+
-- -- Defined in ‘InfoUtil’
14+
-- instance [safe] Eq Bar -- Defined in ‘InfoUtil’
15+
-- instance [safe] Ord Bar -- Defined in ‘InfoUtil’
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module TInfoMany (Eq, Ord, Foo, Bar) where
2+
3+
import InfoUtil (Eq, Ord, Foo, Bar)
4+
5+
-- >>> :info Foo Bar

plugins/hls-eval-plugin/test/testdata/cabal.project

Lines changed: 0 additions & 1 deletion
This file was deleted.

plugins/hls-eval-plugin/test/testdata/test.cabal

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ library
5656
TSetup
5757
Util
5858
TNested
59+
TInfo
60+
TInfoMany
61+
TInfoBang
62+
TInfoBangMany
63+
TI_Info
5964

60-
build-depends: base >= 4.7 && < 5, QuickCheck
65+
build-depends: base >= 4.7 && < 5, QuickCheck, info-util
6166
default-language: Haskell2010
6267
ghc-options: -Wall -fwarn-unused-imports
63-

0 commit comments

Comments
 (0)