# 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 assert_complete_any "mount " 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="$TESTDIR/fixtures/mount/bin:$PATH";} # This needs an explicit cword param or will output "unresolved". assert_complete $expected $cmd $test "/@" 20 "/" sync_after_int 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