From bfb55ddf32421ea0b0d7feb16006462b51a1a909 Mon Sep 17 00:00:00 2001 From: Crestez Dan Leonard Date: Thu, 4 Feb 2010 19:02:18 +0200 Subject: (testsuite) mount.exp: Create a mount-line completion which reads from a file instead of global fstab. --- test/fixtures/mount/test-fstab | 20 +++++++++++++++++ test/lib/completions/mount.exp | 50 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/mount/test-fstab 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 -- cgit v1.2.1