summaryrefslogtreecommitdiff
path: root/test/SlackBuilder/LatestVersionCheckSpec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'test/SlackBuilder/LatestVersionCheckSpec.hs')
-rw-r--r--test/SlackBuilder/LatestVersionCheckSpec.hs53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/SlackBuilder/LatestVersionCheckSpec.hs b/test/SlackBuilder/LatestVersionCheckSpec.hs
new file mode 100644
index 0000000..54901c1
--- /dev/null
+++ b/test/SlackBuilder/LatestVersionCheckSpec.hs
@@ -0,0 +1,53 @@
+{- This Source Code Form is subject to the terms of the Mozilla Public License,
+ v. 2.0. If a copy of the MPL was not distributed with this file, You can
+ obtain one at https://mozilla.org/MPL/2.0/. -}
+
+module SlackBuilder.LatestVersionCheckSpec
+ ( spec
+ ) where
+
+import SlackBuilder.LatestVersionCheck
+import Test.Hspec (Spec, describe, it, shouldBe)
+
+spec :: Spec
+spec = do
+ describe "match" $ do
+ it "matches an exact tag prefixed with v" $
+ let expected = Just "2.6.0"
+ actual = match "(v)2.6.0" "v2.6.0"
+ in actual `shouldBe` expected
+
+ it "matches a glob pattern prefixed with v" $
+ let expected = Just "2.6.0"
+ actual = match "(v)*" "v2.6.0"
+ in actual `shouldBe` expected
+
+ it "matches digits" $
+ let expected = Just "2.6.0"
+ actual = match "(v)2.6.\\d" "v2.6.0"
+ in actual `shouldBe` expected
+
+ it "matches digits and dots" $
+ let expected = Just "2.6.0"
+ actual = match "(v)\\." "v2.6.0"
+ in actual `shouldBe` expected
+
+ it "rejects unexpected suffix" $
+ let expected = Nothing
+ actual = match "(v)\\." "v2.6.0-rc1"
+ in actual `shouldBe` expected
+
+ it "rejects remaining umatched characters" $
+ let expected = Nothing
+ actual = match "2.6.0-rc1" "2.6.0"
+ in actual `shouldBe` expected
+
+ it "consumes the last token matching nothing" $
+ let expected = Just "abc"
+ actual = match "abc\\d\\d" "abc"
+ in actual `shouldBe` expected
+
+ it "matches at least one digit" $
+ let expected = Nothing
+ actual = match "1.\\D.3" "1..3"
+ in actual `shouldBe` expected