Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit f5e3c78

Browse files
authored
Merge pull request #47 from garyb/bump
Update dependencies
2 parents 9095d45 + 1cd819e commit f5e3c78

7 files changed

+91
-48
lines changed

bower.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
"dependencies": {
1818
"purescript-prelude": "^4.0.1",
1919
"purescript-matryoshka": "^0.4.0",
20-
"purescript-pathy": "^6.0.0",
21-
"purescript-profunctor-lenses": "^4.0.0",
22-
"purescript-ejson": "^11.0.0"
20+
"purescript-pathy": "^7.0.0",
21+
"purescript-profunctor-lenses": "^6.1.0",
22+
"purescript-ejson": "^12.0.0"
2323
},
2424
"devDependencies": {
25-
"purescript-quickcheck": "^5.0.0",
26-
"purescript-test-unit": "^14.0.0",
27-
"purescript-argonaut": "^4.0.1"
25+
"purescript-quickcheck": "^6.1.0",
26+
"purescript-argonaut": "^6.0.0",
27+
"purescript-assert": "^4.1.0"
2828
}
2929
}

test/src/Argonaut.purs

+6-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
-- | Having an array of `Json`s construct a list of Sql² projections
33
module Test.Argonaut where
44

5-
import Prelude
5+
import Test.Prelude
66

77
import Data.Argonaut (JCursor(..), jsonParser)
88
import Data.Argonaut as JS
@@ -19,8 +19,6 @@ import Matryoshka (ana, elgotPara, Coalgebra, ElgotAlgebra)
1919
import Partial.Unsafe (unsafePartial)
2020
import SqlSquared as S
2121
import SqlSquared.Utils ((×), (∘), (⋙))
22-
import Test.Unit (suite, test, TestSuite)
23-
import Test.Unit.Assert as Assert
2422

2523
data UnfoldableJC = JC JCursor | S String | I Int
2624

@@ -65,7 +63,7 @@ jarray =
6563
, """{"foo": true}"""
6664
, """[12, null]"""
6765
]
68-
testSuite TestSuite
66+
testSuite Test
6967
testSuite =
7068
suite "tests for argonaut example" do
7169
test "interpretation works"
@@ -79,7 +77,7 @@ testSuite =
7977
: (JField "foo" $ JField "bar" $ JField "baz" $ JCursorTop)
8078
: L.Nil
8179
in
82-
Assert.equal expected $ map (S.print ∘ jcursorToSql) js
80+
assertEqual { expected, actual: map (S.print ∘ jcursorToSql) js }
8381
test "extraction of fields works"
8482
let
8583
actualFields =
@@ -95,7 +93,7 @@ testSuite =
9593
: "*.bar.baz"
9694
: L.Nil
9795
in
98-
Assert.equal expectedFields actualFields
96+
assertEqual { expected: expectedFields, actual: actualFields }
9997
test "allParents extracted"
10098
let
10199
field =
@@ -115,7 +113,7 @@ testSuite =
115113
: "*.foo.bar[0].baz[1]"
116114
: L.Nil
117115
in
118-
Assert.equal expected $ Set.fromFoldable $ map S.print $ allParents field
116+
assertEqual { expected, actual: Set.fromFoldable $ map S.print $ allParents field }
119117
test "allFields works"
120118
let
121119
actualFields = Set.fromFoldable $ map S.print $ allFields jarray
@@ -131,4 +129,4 @@ testSuite =
131129
: "*.bar"
132130
: L.Nil
133131
in
134-
Assert.equal expectedFields actualFields
132+
assertEqual { expected: expectedFields, actual: actualFields }

test/src/Constructors.purs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module Test.Constructors where
22

3-
import Prelude
3+
import Test.Prelude
44

55
import Data.Either as E
66
import Data.Lens ((.~), (<>~), (?~))
@@ -11,8 +11,6 @@ import Data.Symbol (SProxy(..))
1111
import Pathy as Pt
1212
import SqlSquared as S
1313
import SqlSquared.Utils ((×), (∘))
14-
import Test.Unit (suite, test, TestSuite)
15-
import Test.Unit.Assert as Assert
1614

1715
selectQuery S.Sql
1816
selectQuery =
@@ -66,10 +64,10 @@ expectedSqlString ∷ String
6664
expectedSqlString =
6765
"SELECT DISTINCT foo AS field, bar.baz.* FROM `/mongo/testDb/patients` WHERE quux = 12.0 GROUP BY zzz HAVING ooo > 2 ORDER BY zzz ASC"
6866

69-
testSuite TestSuite
67+
testSuite Test
7068
testSuite = do
7169
suite "tests for sql constructors" do
7270
test "constructing select query with multiple arguments"
73-
$ Assert.equal expectedSqlString $ S.print selectQuery
71+
$ assertEqual { actual: S.print selectQuery, expected: expectedSqlString }
7472
test "building select query with lenses"
75-
$ Assert.equal expectedSqlString $ S.print buildSelectQuery
73+
$ assertEqual { actual: S.print buildSelectQuery, expected: expectedSqlString }

test/src/Main.purs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
module Test.Main where
22

3-
import Prelude
3+
import Test.Prelude
44

55
import Effect (Effect)
6-
import Test.Unit.Main (runTest)
76
import Test.Constructors as Constructors
87
import Test.Argonaut as Argonaut
98
import Test.Gen as Gen

test/src/Parse.purs

+18-20
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,61 @@
11
module Test.Parse where
22

3-
import Prelude
3+
import Test.Prelude
44

55
import Data.Either as E
66
import SqlSquared (parseQuery, printQuery, SqlQuery)
77
import SqlSquared.Parser (prettyParse)
88
import Test.Queries as Q
9-
import Test.Unit (suite, test, TestSuite)
10-
import Test.Unit.Assert as Assert
119

12-
parseSucc String TestSuite
10+
parseSucc String Test
1311
parseSucc s =
1412
test "parse/success"
1513
case prettyParse parseQuery s of
16-
E.Left err → Assert.assert ("\n" <> err) false
14+
E.Left err → assert ("\n" <> err) false
1715
E.Right (sql SqlQuery) →
1816
case prettyParse parseQuery (printQuery sql) of
1917
E.Left err →
20-
Assert.assert
18+
assert
2119
("Failed to print and reparse.\n\n" <>
2220
" Original: " <> s <> "\n\n" <>
2321
" Printed: " <> printQuery sql <> "\n\n" <> err) false
2422
E.Right (sql' SqlQuery)
2523
| sql' /= sql →
26-
Assert.assert
24+
assert
2725
("Failed to parse to an equivalent AST.\n\n" <>
2826
" Original: " <> s <> "\n\n" <>
2927
" Parsed: " <> printQuery sql <> "\n\n" <>
3028
" Printed: " <> printQuery sql') false
3129
| otherwise →
32-
Assert.assert "OK!" true
30+
assert "OK!" true
3331

34-
parseFail String TestSuite
32+
parseFail String Test
3533
parseFail s =
3634
test "parse/fail"
3735
case parseQuery s of
3836
E.Left err → pure unit
39-
E.Right (sql SqlQuery) → Assert.assert s false
37+
E.Right (sql SqlQuery) → assert s false
4038

41-
parseFailWith String String TestSuite
39+
parseFailWith String String Test
4240
parseFailWith s err =
4341
test "parse/failWith"
4442
case parseQuery s of
4543
E.Left err' →
4644
if show err' == err
4745
then pure unit
48-
else Assert.assert
46+
else assert
4947
("expected query:" <> s <>
5048
"\n\n to fail input error: " <> err <>
5149
"\n\n but instead fot error: " <> show err')
5250
false
5351
E.Right (sql SqlQuery) →
54-
Assert.assert
52+
assert
5553
("expected to fail with:" <> err <>
5654
"\n\tbut input query:" <> s <>
5755
"\n\twas parsed as:" <> printQuery sql)
5856
false
5957

60-
testSuite TestSuite
58+
testSuite Test
6159
testSuite = suite "parsers" do
6260
testSuite1
6361
testSuite2
@@ -66,7 +64,7 @@ testSuite = suite "parsers" do
6664
testSuite5
6765
testSuite6
6866

69-
testSuite1 TestSuite
67+
testSuite1 Test
7068
testSuite1 = do
7169
parseFailWith """
7270
import `/path/To/Your/File/myModule`; SELECT id("HELLO")
@@ -253,7 +251,7 @@ testSuite1 = do
253251
select foo from :From
254252
"""
255253

256-
testSuite2 TestSuite
254+
testSuite2 Test
257255
testSuite2 = do
258256
parseSucc """
259257
SELECT state AS `ResultAlias`, COUNT(*) as cnt FROM zips GROUP BY state ORDER BY state
@@ -399,7 +397,7 @@ testSuite2 = do
399397
select distinct discipline from olympics where event like "%pursuit"
400398
"""
401399

402-
testSuite3 TestSuite
400+
testSuite3 Test
403401
testSuite3 = do
404402
parseSucc """
405403
select count(*) as cnt from zips where state in ("AZ", "CO")
@@ -593,7 +591,7 @@ testSuite3 = do
593591
select city, state, sum(pop) as total from zips group by city, state order by sum(pop) desc limit 10
594592
"""
595593

596-
testSuite4 TestSuite
594+
testSuite4 Test
597595
testSuite4 = do
598596
parseSucc """
599597
select city, pop from zips where pop > 90000 order by city, pop desc
@@ -751,7 +749,7 @@ testSuite4 = do
751749
select city, loc[0] as lat from largeZips
752750
"""
753751

754-
testSuite5 TestSuite
752+
testSuite5 Test
755753
testSuite5 = do
756754
parseSucc """
757755
select committer.login, count(*) from slamengine_commits
@@ -933,7 +931,7 @@ testSuite5 = do
933931
select foo from bar union all select baz from quux
934932
"""
935933

936-
testSuite6 TestSuite
934+
testSuite6 Test
937935
testSuite6 = do
938936
parseSucc Q.q1
939937
parseSucc Q.q2

test/src/Precedence.purs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
module Test.Precedence where
22

3-
import Prelude
3+
import Test.Prelude
44

55
import Data.Either as E
66
import Matryoshka (project)
77
import SqlSquared as S
8-
import Test.Unit (suite, test, Test, TestSuite)
9-
import Test.Unit.Assert as Assert
108

119
testParsedSql (S.Sql Test) String Test
1210
testParsedSql f s =
1311
case S.prettyParse S.parse s of
14-
E.Left err → Assert.assert ("\n" <> err) false
12+
E.Left err → assert ("\n" <> err) false
1513
E.Right sql → f sql
1614

1715
limitedJoinQuery String
@@ -23,8 +21,8 @@ expectLimit sql =
2321
(S.Binop { lhs: _, rhs: _, op: S.Limit }) → true
2422
_ → false
2523

26-
testSuite TestSuite
24+
testSuite Test
2725
testSuite = do
2826
suite "tests for parser precedence" do
2927
test "limit should have higher precedence than join condition"
30-
$ testParsedSql (Assert.assert "limit parsed incorrectly" <<< expectLimit) limitedJoinQuery
28+
$ testParsedSql (assert "limit parsed incorrectly" <<< expectLimit) limitedJoinQuery

test/src/Prelude.purs

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module Test.Prelude
2+
( module Test.Prelude
3+
, module Prelude
4+
) where
5+
6+
import Prelude
7+
8+
import Control.Monad.Reader (ReaderT, ask, local, runReaderT)
9+
import Data.List as List
10+
import Data.Maybe (Maybe(..))
11+
import Data.Monoid (power)
12+
import Effect (Effect)
13+
import Effect.Class (liftEffect)
14+
import Effect.Class.Console (log)
15+
import Effect.Exception (throw)
16+
import Test.Assert as Assert
17+
import Test.QuickCheck (unSeed)
18+
import Test.QuickCheck as QC
19+
20+
type Test = ReaderT Int Effect Unit
21+
22+
runTest :: Test -> Effect Unit
23+
runTest = flip runReaderT 0
24+
25+
suite :: String -> Test -> Test
26+
suite = test
27+
28+
test :: String -> Test -> Test
29+
test name run = do
30+
indent <- ask
31+
log (mkIndent indent <> name)
32+
local (_ + 2) run
33+
34+
mkIndent :: Int -> String
35+
mkIndent = power " "
36+
37+
assert :: String -> Boolean -> Test
38+
assert msg = liftEffect <<< Assert.assert' msg
39+
40+
assertEqual :: forall a. Eq a => Show a => { actual :: a, expected :: a } -> Test
41+
assertEqual = liftEffect <<< Assert.assertEqual
42+
43+
quickCheck :: forall prop. QC.Testable prop => prop -> Test
44+
quickCheck prop = liftEffect do
45+
seed <- QC.randomSeed
46+
let summary = QC.checkResults (QC.quickCheckPure' seed 100 prop)
47+
case List.head summary.failures of
48+
Nothing -> pure unit
49+
Just err -> throw $ "Property failed (seed " <> show (unSeed err.seed) <> ") failed: \n" <> err.message
50+
51+
failure :: String -> Test
52+
failure = liftEffect <<< throw

0 commit comments

Comments
 (0)