Skip to content

Commit 18a580c

Browse files
authored
Run slowest tests last and print status updates (#72)
* Move slow tests to end and print status updates * Update changelog
1 parent 7c3cad8 commit 18a580c

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ Bugfixes:
1212

1313
Other improvements:
1414

15+
- Run slowest tests last and print status updates (#72)
16+
1517
## [v6.0.1](https://github.com/purescript-contrib/purescript-string-parsers/releases/tag/v6.0.1) - 2021-05-11
1618

1719
Other improvements:
18-
- Fix transitive dependencies errors found by Spago 0.20 (#71 by @milesfrain)
20+
- Fix transitive dependencies errors found by Spago 0.20 (#71)
1921

2022
## [v6.0.0](https://github.com/purescript-contrib/purescript-string-parsers/releases/tag/v6.0.0) - 2021-02-26
2123

test/CodePoints.purs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ import Data.String.CodeUnits (singleton)
1313
import Data.String.Common as SC
1414
import Data.Unfoldable (replicate)
1515
import Effect (Effect)
16+
import Effect.Class.Console (log)
1617
import Test.Assert (assert', assert)
1718
import Text.Parsing.StringParser (Parser, runParser, try)
19+
import Text.Parsing.StringParser.CodePoints (anyDigit, char, eof, string, anyChar, regex)
1820
import Text.Parsing.StringParser.Combinators (many1, endBy1, sepBy1, optionMaybe, many, manyTill, many1Till, chainl, fix, between)
1921
import Text.Parsing.StringParser.Expr (Assoc(..), Operator(..), buildExprParser)
20-
import Text.Parsing.StringParser.CodePoints (anyDigit, char, eof, string, anyChar, regex)
2122

2223
parens :: forall a. Parser a -> Parser a
2324
parens = between (string "(") (string ")")
@@ -66,11 +67,8 @@ expectResult res p input = runParser p input == Right res
6667

6768
testCodePoints :: Effect Unit
6869
testCodePoints = do
69-
assert' "many should not blow the stack" $ canParse (many (string "a")) (SC.joinWith "" $ replicate 100000 "a")
70-
assert' "many failing after" $ parseFail (do
71-
as <- many (string "a")
72-
eof
73-
pure as) (SC.joinWith "" (replicate 100000 "a") <> "b" )
70+
71+
log "Running basic tests"
7472

7573
assert $ expectResult 3 nested "(((a)))"
7674
assert $ expectResult ("a":"a":"a":Nil) (many (string "a")) "aaa"
@@ -93,10 +91,19 @@ testCodePoints = do
9391
assert $ expectResult Nil (manyTill (string "a") (string "b")) "b"
9492
assert $ expectResult (NonEmptyList ("a" :| "a":"a":Nil)) (many1Till (string "a") (string "b")) "aaab"
9593
assert $ parseFail (many1Till (string "a") (string "b")) "b"
96-
-- check against overflow
97-
assert $ canParse (many1Till (string "a") (string "and")) $ (fold <<< take 10000 $ repeat "a") <> "and"
9894
-- check correct order
9995
assert $ expectResult (NonEmptyList ('a' :| 'b':'c':Nil)) (many1Till anyChar (string "d")) "abcd"
10096
assert $ expectResult "\x458CA" (string "\x458CA" <* char ']' <* eof ) "\x458CA]"
10197
assert $ expectResult "\x458CA" (string "\x458CA" <* string ")" <* eof ) "\x458CA)"
10298
assert $ expectResult '\xEEE2' (char '\xEEE2' <* eof ) "\xEEE2"
99+
100+
log "Running overflow tests (may take a while)"
101+
102+
-- check against overflow
103+
assert $ canParse (many1Till (string "a") (string "and")) $ (fold <<< take 10000 $ repeat "a") <> "and"
104+
105+
assert' "many should not blow the stack" $ canParse (many (string "a")) (SC.joinWith "" $ replicate 100000 "a")
106+
assert' "many failing after" $ parseFail (do
107+
as <- many (string "a")
108+
eof
109+
pure as) (SC.joinWith "" (replicate 100000 "a") <> "b" )

test/CodeUnits.purs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ import Data.String.CodeUnits (singleton)
1313
import Data.String.Common as SC
1414
import Data.Unfoldable (replicate)
1515
import Effect (Effect)
16+
import Effect.Class.Console (log)
1617
import Test.Assert (assert', assert)
1718
import Text.Parsing.StringParser (Parser, runParser, try)
19+
import Text.Parsing.StringParser.CodeUnits (anyDigit, eof, string, anyChar, regex)
1820
import Text.Parsing.StringParser.Combinators (many1, endBy1, sepBy1, optionMaybe, many, manyTill, many1Till, chainl, fix, between)
1921
import Text.Parsing.StringParser.Expr (Assoc(..), Operator(..), buildExprParser)
20-
import Text.Parsing.StringParser.CodeUnits (anyDigit, eof, string, anyChar, regex)
2122

2223
parens :: forall a. Parser a -> Parser a
2324
parens = between (string "(") (string ")")
@@ -66,11 +67,8 @@ expectResult res p input = runParser p input == Right res
6667

6768
testCodeUnits :: Effect Unit
6869
testCodeUnits = do
69-
assert' "many should not blow the stack" $ canParse (many (string "a")) (SC.joinWith "" $ replicate 100000 "a")
70-
assert' "many failing after" $ parseFail (do
71-
as <- many (string "a")
72-
eof
73-
pure as) (SC.joinWith "" (replicate 100000 "a") <> "b" )
70+
71+
log "Running basic tests"
7472

7573
assert $ expectResult 3 nested "(((a)))"
7674
assert $ expectResult ("a":"a":"a":Nil) (many (string "a")) "aaa"
@@ -93,7 +91,16 @@ testCodeUnits = do
9391
assert $ expectResult Nil (manyTill (string "a") (string "b")) "b"
9492
assert $ expectResult (NonEmptyList ("a" :| "a":"a":Nil)) (many1Till (string "a") (string "b")) "aaab"
9593
assert $ parseFail (many1Till (string "a") (string "b")) "b"
96-
-- check against overflow
97-
assert $ canParse (many1Till (string "a") (string "and")) $ (fold <<< take 10000 $ repeat "a") <> "and"
9894
-- check correct order
9995
assert $ expectResult (NonEmptyList ('a' :| 'b':'c':Nil)) (many1Till anyChar (string "d")) "abcd"
96+
97+
log "Running overflow tests (may take a while)"
98+
99+
-- check against overflow
100+
assert $ canParse (many1Till (string "a") (string "and")) $ (fold <<< take 10000 $ repeat "a") <> "and"
101+
102+
assert' "many should not blow the stack" $ canParse (many (string "a")) (SC.joinWith "" $ replicate 100000 "a")
103+
assert' "many failing after" $ parseFail (do
104+
as <- many (string "a")
105+
eof
106+
pure as) (SC.joinWith "" (replicate 100000 "a") <> "b" )

0 commit comments

Comments
 (0)