aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2018-03-20 22:56:16 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2018-03-20 22:56:16 -0400
commitd929c8cbc09732337fb4805accbf3564e9cca0bb (patch)
tree27f71b63f26cdf0ef957ce2d7390f5991561b839 /test
Import Upstream version 18upstream/18
Diffstat (limited to 'test')
-rw-r--r--test/common45
-rwxr-xr-xtest/test_mangle8
-rwxr-xr-xtest/test_option_twiddling55
-rwxr-xr-xtest/test_valid_number_of_base15
4 files changed, 123 insertions, 0 deletions
diff --git a/test/common b/test/common
new file mode 100644
index 0000000..8773077
--- /dev/null
+++ b/test/common
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+fail=0
+testcount=0
+
+EXPECT_success() {
+ (( ++testcount ))
+ if ! "$@"; then
+ (( ++fail ))
+ printf 'expectation failed: did not succeed: %s\n' "$*" >&2
+ fi
+}
+
+EXPECT_failure() {
+ (( ++testcount ))
+ if "$@"; then
+ (( ++fail ))
+ printf 'expectation failed: did not fail: %s\n' "$*" >&2
+ fi
+}
+
+TEST_exit() {
+ local result
+
+ trap -- EXIT
+
+ (( fail == 0 )) && result=PASS || result=FAIL
+
+ printf '%s: %s\n' "$result" "$1"
+
+ exit $(( fail != 0 ))
+}
+
+ASSERT_streq() {
+ if [[ $1 != "$2" ]]; then
+ printf 'assertion failed [line %d]: [[ %s = "%s" ]]\n' "$BASH_LINENO" "$1" "$2" >&2
+ fi
+}
+
+TEST_start() {
+ trap "TEST_exit '$1'" EXIT
+}
+
+TEST_start "${0##*/test_}"
+
diff --git a/test/test_mangle b/test/test_mangle
new file mode 100755
index 0000000..d9b61b1
--- /dev/null
+++ b/test/test_mangle
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+. "${1:-./common}"
+. ./test/common
+
+ASSERT_streq ' deleted' "$(unmangle "$(mangle ' deleted')")"
+ASSERT_streq '\040deleted' "$(mangle "$(unmangle '\040deleted')")"
+ASSERT_streq 'foo\011\040\011bar' "$(mangle $'foo\t \tbar')"
diff --git a/test/test_option_twiddling b/test/test_option_twiddling
new file mode 100755
index 0000000..214a63c
--- /dev/null
+++ b/test/test_option_twiddling
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+. "${1:-./common}"
+. ./test/common
+
+optstring=rw,relatime,fd=29,pgrp=1,timeout=300,minproto=5,maxproto=5,direct
+optstring_remove_option optstring fd
+optstring_remove_option optstring pgrp=400
+ASSERT_streq "$optstring" 'rw,relatime,pgrp=1,timeout=300,minproto=5,maxproto=5,direct'
+
+optstring_append_option optstring pgrp=400
+optstring_append_option optstring pgrp=400
+optstring_append_option optstring pgrp=400
+ASSERT_streq "$optstring" 'rw,relatime,pgrp=1,timeout=300,minproto=5,maxproto=5,direct,pgrp=400'
+
+optstring_prepend_option optstring pgrp=600
+optstring_prepend_option optstring pgrp=600
+optstring_prepend_option optstring pgrp=600
+ASSERT_streq "$optstring" 'pgrp=600,rw,relatime,pgrp=1,timeout=300,minproto=5,maxproto=5,direct,pgrp=400'
+
+EXPECT_success optstring_has_option optstring pgrp=400
+EXPECT_success optstring_has_option optstring pgrp=1
+EXPECT_success optstring_has_option optstring pgrp
+EXPECT_failure optstring_has_option optstring maxproto=6
+EXPECT_success optstring_has_option optstring maxproto
+
+EXPECT_failure optstring_get_option optstring proto
+EXPECT_success optstring_get_option optstring maxproto
+ASSERT_streq "$maxproto" "5"
+EXPECT_success optstring_get_option optstring timeout
+ASSERT_streq "$timeout" "300"
+
+optstring_remove_option optstring pgrp
+ASSERT_streq "$optstring" 'rw,relatime,timeout=300,minproto=5,maxproto=5,direct'
+
+optstring_remove_option optstring minproto,relatime
+ASSERT_streq "$optstring" 'rw,timeout=300,maxproto=5,direct'
+
+optstring_remove_option optstring ro,direct
+ASSERT_streq "$optstring" 'rw,timeout=300,maxproto=5'
+
+optstring=,,,,,,defaults,,,,rw,,,,,,minproto=5,,,
+optstring_normalize optstring
+ASSERT_streq "$optstring" 'defaults,rw,minproto=5'
+
+
+optstring=
+optstring_normalize optstring
+ASSERT_streq "$optstring" 'defaults'
+
+
+EXPECT_success optstring_match_option key key=val
+EXPECT_success optstring_match_option key=val key=val
+EXPECT_failure optstring_match_option key=val key=val2
+EXPECT_failure optstring_match_option 'key=*' key=val2
diff --git a/test/test_valid_number_of_base b/test/test_valid_number_of_base
new file mode 100755
index 0000000..5afdc59
--- /dev/null
+++ b/test/test_valid_number_of_base
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+. "${1:-./common}"
+. ./test/common
+
+EXPECT_success valid_number_of_base 16 feedfacebeef
+EXPECT_failure valid_number_of_base 16 feedsfacebeef
+EXPECT_success valid_number_of_base 16 1234567890
+
+EXPECT_success valid_number_of_base 10 1234567890
+EXPECT_failure valid_number_of_base 10 1234.567890
+EXPECT_failure valid_number_of_base 10 1234567890abcdef
+
+EXPECT_success valid_number_of_base 18 1234567890abcdefgh
+EXPECT_failure valid_number_of_base 18 1234567890abcdefghi