Blame test/lib/completions/umount.exp

Packit 8462d6
# umount completion from fstab can't be tested directly because it
Packit 8462d6
# (correctly) uses absolute paths. So we create a custom completion which
Packit 8462d6
# reads from a file in our text fixture instead.
Packit 8462d6
proc setup_dummy_mnt {} {
Packit 8462d6
    assert_bash_exec {unset COMPREPLY cur}
Packit 8462d6
    assert_bash_exec {unset -f _mnt}
Packit 8462d6
Packit 8462d6
    assert_bash_exec { \
Packit 8462d6
        _mnt() { \
Packit 8462d6
            local cur=$(_get_cword); \
Packit 8462d6
            _linux_fstab $(_get_pword) < "$SRCDIRABS/fixtures/mount/test-fstab"; \
Packit 8462d6
        }; \
Packit 8462d6
        complete -F _mnt mnt \
Packit 8462d6
    }
Packit 8462d6
}
Packit 8462d6
Packit 8462d6
Packit 8462d6
proc teardown_dummy_mnt {} {
Packit 8462d6
    assert_bash_exec {unset COMPREPLY cur}
Packit 8462d6
    assert_bash_exec {unset -f _mnt}
Packit 8462d6
    assert_bash_exec {complete -r mnt}
Packit 8462d6
}
Packit 8462d6
Packit 8462d6
Packit 8462d6
proc setup {} {
Packit 8462d6
    save_env
Packit 8462d6
    setup_dummy_mnt
Packit 8462d6
}
Packit 8462d6
Packit 8462d6
Packit 8462d6
proc teardown {} {
Packit 8462d6
    teardown_dummy_mnt
Packit 8462d6
    assert_env_unmodified {/OLDPWD/d}
Packit 8462d6
}
Packit 8462d6
Packit 8462d6
Packit 8462d6
setup
Packit 8462d6
Packit 8462d6
Packit 8462d6
assert_complete_any "umount "
Packit 8462d6
Packit 8462d6
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
Packit 8462d6
set test "Testing internal __linux_fstab_unescape function for umount"
Packit 8462d6
# One round of slashes is for bash.
Packit 8462d6
assert_bash_exec {var=one\'two\\040three\\}
Packit 8462d6
assert_bash_exec {__linux_fstab_unescape var}
Packit 8462d6
set cmd {echo $var}
Packit 8462d6
send "$cmd\r"
Packit 8462d6
expect {
Packit 8462d6
    -ex "$cmd\r\none'two three\\" { pass $test }
Packit 8462d6
#    default { fail $test }
Packit 8462d6
}
Packit 8462d6
sync_after_int
Packit 8462d6
assert_bash_exec {unset var}
Packit 8462d6
Packit 8462d6
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
Packit 8462d6
# Begin testing through mnt (see setup_dummy_mnt).
Packit 8462d6
assert_complete {/mnt/nice-test-path} {mnt /mnt/nice-test-p}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/nice\ test-path} {mnt /mnt/nice\ test-p}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/nice\$test-path} {mnt /mnt/nice\$test-p}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/nice\ test\\path} {mnt /mnt/nice\ test\\p}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {{/mnt/nice\ test\\path} {/mnt/nice\ test-path}} \
Packit 8462d6
    {mnt /mnt/nice\ } "" -expect-cmd-minus {/mnt/nice\ }
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/nice\$test-path} {mnt /mnt/nice\$}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/nice\'test-path} {mnt /mnt/nice\'}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {/mnt/other\'test\ path} {mnt /mnt/other}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {Ubuntu\ Karmic} {mnt -L Ubu}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
assert_complete {Debian-it\'s\ awesome} {mnt -L Deb}
Packit 8462d6
sync_after_int
Packit 8462d6
Packit 8462d6
# This does not work. Proper support for this requires smarter parsing of
Packit 8462d6
# $COMP_LINE and it's not worth doing just for umount.
Packit 8462d6
#assert_complete {$'/mnt/nice\ntest-path'} {mnt $'/mnt/nice\n}
Packit 8462d6
#sync_after_int
Packit 8462d6
Packit 8462d6
Packit 8462d6
teardown