Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bats-core/bats-assert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Thiessen <alex.thiessen.de+github@gmail.com>2022-05-30 20:09:09 +0300
committerAlex Thiessen <alex.thiessen.de+github@gmail.com>2022-05-30 20:18:54 +0300
commit7290892865a8206a95e3cc417005bc28b2cc249d (patch)
treeb1ef3ce1f8bf98540b7cee7024a02dac1e39136c
parent6ad25d9babb976347f201888658393ad3dc40cd2 (diff)
test: Add `refute_regex.bats`
-rw-r--r--test/refute_regex.bats98
1 files changed, 98 insertions, 0 deletions
diff --git a/test/refute_regex.bats b/test/refute_regex.bats
new file mode 100644
index 0000000..c1fd1b2
--- /dev/null
+++ b/test/refute_regex.bats
@@ -0,0 +1,98 @@
+#!/usr/bin/env bats
+
+load test_helper
+
+#
+# Literal matching
+#
+
+# Correctness
+@test "refute_regex() <value> <pattern>: fails if a <value> substring matches extended regular expression <pattern>" {
+ run refute_regex 'abc' '^[a-z]b'
+ assert_test_fail <<'ERR_MSG'
+
+-- value matches regular expression --
+value : abc
+pattern : ^[a-z]b
+match : ab
+case : sensitive
+--
+ERR_MSG
+}
+
+@test "refute_regex() <value> <pattern>: succeeds if no <value> substring matches extended regular expression <pattern>" {
+ run refute_regex 'bcd' '^[a-z]b[c-z]+'
+ assert_test_pass
+}
+
+@test "refute_regex() <value> <pattern>: provides results in BASH_REMATCH on failure" {
+ unset -v BASH_REMATCH
+
+ refute_regex 'abcd' 'b.d' \
+ || {
+ declare -p BASH_REMATCH && \
+ [ "${BASH_REMATCH[0]}" = 'bcd' ]
+ }
+}
+
+@test "refute_regex() <value> <pattern>: matches case-insensitively when 'nocasematch' is set" {
+ shopt -s nocasematch
+
+ run refute_regex 'aBc' 'ABC'
+ assert_test_fail <<'ERR_MSG'
+
+-- value matches regular expression --
+value : aBc
+pattern : ABC
+match : aBc
+case : insensitive
+--
+ERR_MSG
+}
+
+@test "refute_regex() <value> <pattern>: outputs multi-line <value> nicely when it fails" {
+ run refute_regex $'abc\n123' '^[a-z]b[c-z]+'
+ assert_test_fail <<'ERR_MSG'
+
+-- value matches regular expression --
+value (2 lines):
+ abc
+ 123
+pattern (1 lines):
+ ^[a-z]b[c-z]+
+match (1 lines):
+ abc
+case (1 lines):
+ sensitive
+--
+ERR_MSG
+
+ shopt -s nocasematch
+ run refute_regex $'aBc\n123' '^[a-z]b[c-z]+'
+ assert_test_fail <<'ERR_MSG'
+
+-- value matches regular expression --
+value (2 lines):
+ aBc
+ 123
+pattern (1 lines):
+ ^[a-z]b[c-z]+
+match (1 lines):
+ aBc
+case (1 lines):
+ insensitive
+--
+ERR_MSG
+}
+
+# Error handling
+@test "refute_regex() <value> <pattern>: returns 1 and displays an error message if <pattern> is not a valid extended regular expression" {
+ run refute_regex value '[.*'
+
+ assert_test_fail <<'ERR_MSG'
+
+-- ERROR: refute_regex --
+Invalid extended regular expression: `[.*'
+--
+ERR_MSG
+}