summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrestez Dan Leonard <cdleonard@gmail.com>2010-02-04 19:02:18 +0200
committerCrestez Dan Leonard <cdleonard@gmail.com>2010-02-04 19:02:18 +0200
commitbfb55ddf32421ea0b0d7feb16006462b51a1a909 (patch)
treedc5a898518410a910aa60bc80ff49f2ee15d1c5c
parent1096dadc26c9c4c9297a2b784e96b57e4c3bf208 (diff)
downloadbash-completion-bfb55ddf32421ea0b0d7feb16006462b51a1a909.tar.gz
(testsuite) mount.exp: Create a mount-line completion which reads from a file instead of global fstab.
-rw-r--r--test/fixtures/mount/test-fstab20
-rw-r--r--test/lib/completions/mount.exp50
2 files changed, 68 insertions, 2 deletions
diff --git a/test/fixtures/mount/test-fstab b/test/fixtures/mount/test-fstab
new file mode 100644
index 00000000..95fdd8d0
--- /dev/null
+++ b/test/fixtures/mount/test-fstab
@@ -0,0 +1,20 @@
+proc /proc proc defaults 0 0
+none /debug debugfs defaults,noauto 0 0
+
+# Test octal escapes
+
+# Contains ' ' and '-'
+/mnt/nice\040test\055path /dev/null auto ro,noauto 0 0
+# Contains '$' and '-'
+/mnt/nice\044test\055path /dev/null auto ro,noauto 0 0
+# Contains ' ' and '\\'
+/mnt/nice\040test\134path /dev/null auto ro,noauto 0 0
+# Contains '\n' and '\ '
+/mnt/nice\012test\040path /dev/null auto ro,noauto 0 0
+
+# Test some labels
+LABEL=Ubuntu\040Karmic /mnt/ubuntu auto no,noauto 0 0
+LABEL=Fedora /mnt/fedora auto ro,noauto 0 0
+LABEL=Debian-it's\040awesome /mnt/debian auto ro,noauto 0 0
+
+#/dev/null /mnt/nice'testxxxpath auto ro,noauto 0 0
diff --git a/test/lib/completions/mount.exp b/test/lib/completions/mount.exp
index 9e40803e..bcb95ba4 100644
--- a/test/lib/completions/mount.exp
+++ b/test/lib/completions/mount.exp
@@ -1,11 +1,38 @@
+# mount completion from fstab can't be tested directly because it
+# (correctly) uses absolute paths. So we create a custom completion which
+# reads from a file in our text fixture instead.
+proc setup_dummy_mnt {} {
+ assert_bash_exec {unset COMPREPLY cur}
+ assert_bash_exec {unset -f _mnt}
+
+ global TESTDIR
+ assert_bash_exec { \
+ _mnt() { \
+ local cur=$(_get_cword); \
+ _linux_fstab < "$TESTDIR/fixtures/mount/test-fstab"; \
+ }; \
+ complete -F _mnt mnt \
+ }
+}
+
+
+proc teardown_dummy_mnt {} {
+ assert_bash_exec {unset COMPREPLY cur}
+ assert_bash_exec {unset -f _mnt}
+ assert_bash_exec {complete -r mnt}
+}
+
+
proc setup {} {
save_env
-};
+ setup_dummy_mnt
+}
proc teardown {} {
+ teardown_dummy_mnt
assert_env_unmodified
-};
+}
setup
@@ -30,4 +57,23 @@ assert_bash_exec {PATH="$OLDPATH"; unset -v OLDPATH}
sync_after_int
+assert_complete {/mnt/nice\ test-path} {mnt /mnt/nice\ test-p}
+sync_after_int
+
+assert_complete {/mnt/nice\$test-path} {mnt /mnt/nice\$test-p}
+sync_after_int
+
+assert_complete {/mnt/nice\ test\\path} {mnt /mnt/nice\ test\\p}
+sync_after_int
+
+assert_complete {/mnt/nice\ test-path} {mnt /mnt/nice\ }
+sync_after_int
+
+assert_complete {/mnt/nice\$test-path} {mnt /mnt/nice\$}
+sync_after_int
+
+assert_complete {'/mnt/nice\ test-path'} {mnt '/mnt/nice\ }
+sync_after_int
+
+
teardown