128 lines
2.9 KiB
Plaintext
Raw Normal View History

# 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}
assert_bash_exec { \
_mnt() { \
local cur=$(_get_cword); \
_linux_fstab $(_get_pword) < "$SRCDIRABS/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 {/OLDPWD/d}
}
setup
assert_complete_any "mount "
sync_after_int
2010-04-21 19:07:17 +03:00
assert_complete_any "mount -t "
sync_after_int
set test "mount /dev/sda1 def should complete directory name"
assert_complete_dir "default/" "mount /dev/sda1 def" $::srcdir/fixtures/shared $test -nospace
sync_after_int
set test "Check completing nfs mounts"
set expected [list /test/path /test/path2 /second/path]
set cmd "mount mocksrv:/"
assert_bash_exec {OLDPATH="$PATH"; PATH="$SRCDIRABS/fixtures/mount/bin:$PATH";}
# This needs an explicit cword param or will output "unresolved".
assert_complete $expected $cmd $test -expect-cmd-minus /
sync_after_int
assert_bash_exec {PATH="$OLDPATH"; unset -v OLDPATH}
sync_after_int
set test "Testing internal __linux_fstab_unescape function for mount"
# One round of slashes is for bash.
assert_bash_exec {var=one\'two\\040three\\}
assert_bash_exec {__linux_fstab_unescape var}
set cmd {echo $var}
send "$cmd\r"
expect {
-ex "$cmd\r\none'two three\\" { pass $test }
# default { fail $test }
}
sync_after_int
assert_bash_exec {unset var}
sync_after_int
# Begin testing through mnt (see setup_dummy_mnt).
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\ test\\p}
sync_after_int
assert_complete {{/mnt/nice\ test\\path} {/mnt/nice\ test-path}} \
{mnt /mnt/nice\ } "" -expect-cmd-minus {/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
assert_complete {/mnt/other\'test\ path} {mnt /mnt/other}
sync_after_int
assert_complete {Ubuntu\ Karmic} {mnt -L Ubu}
sync_after_int
assert_complete {Debian-it\'s\ awesome} {mnt -L Deb}
sync_after_int
# This does not work. Proper support for this requires smarter parsing of
# $COMP_LINE and it's not worth doing just for mount.
#assert_complete {$'/mnt/nice\ntest-path'} {mnt $'/mnt/nice\n}
#sync_after_int
teardown