summaryrefslogtreecommitdiff
path: root/test/lib/completions/perl.exp
blob: 3a92a6b9b0800de7bab6cf2301654b158414a768 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
proc setup {} {
    save_env
}


proc teardown {} {
    assert_env_unmodified {/PERL5LIB=/d}
}


setup


assert_complete_any "perl "


sync_after_int


set test "Second argument should file complete"
set cmd "perl foo $::srcdir/fixtures/shared/default/f"
send "$cmd\t"
expect {
    -re "^$cmd\r\nfoo +foo.d/ *\r\n/@${cmd}oo$" { pass "$test" }
    -re /@ { unresolved "$test at prompt" }
    -re eof { unresolved "eof" }
}


sync_after_int


set test "-I without space should complete directories"
set cmd "perl -I$::srcdir/fixtures/shared/default/"
send "$cmd\t"
expect {
    -re "^$cmd\r\nbar bar.d/ +foo.d/ *\r\n/@$cmd$" { pass "$test" }
    -re /@ { unresolved "$test at prompt" }
    -re eof { unresolved "eof" }
}


sync_after_int


set test "-I with space should complete directories"
set cmd "perl -I $::srcdir/fixtures/shared/default/"
send "$cmd\t"
expect {
    -re "^$cmd\r\nbar bar.d/ +foo.d/ *\r\n/@$cmd$" { pass "$test" }
    -re /@ { unresolved "$test at prompt" }
    -re eof { unresolved "eof" }
}


sync_after_int


set test "-x without space should complete directories"
set cmd "perl -x$::srcdir/fixtures/shared/default/b"
send "$cmd\t"
expect {
    -re "^${cmd}ar\\\\ bar.d/ *$" { pass "$test" }
    -re /@ { unresolved "$test at prompt" }
    -re eof { unresolved "eof" }
}


sync_after_int


set test "-x with space should complete directories"
set cmd "perl -x $::srcdir/fixtures/shared/default/b"
send "$cmd\t"
expect {
    -re "^${cmd}ar\\\\ bar.d/ *$" { pass "$test" }
    -re /@ { unresolved "$test at prompt" }
    -re eof { unresolved "eof" }
}


sync_after_int


set test "- should complete options"
set options {
    -0 -a -c -C -d -D -e -F -h -i -I -l -m -M -n -p -P -s -S -T -u -U -v -V -w -W -x -X
}
assert_complete $options "perl -" $test


sync_after_int

assert_no_complete "perl -e "
sync_after_int

assert_complete_any "perl -V:install"
sync_after_int

assert_complete_any "perl -V::install"
sync_after_int

# Assuming that File::Spec and friends are always installed...

assert_complete_any "perl -MFile"
sync_after_int

assert_complete_any "perl -MFile::Sp"
sync_after_int

assert_complete_any "perl -MFile::Spec::Func"
sync_after_int

assert_complete_any "perl -M-File"
sync_after_int

assert_complete_any "perl -m-File::"
sync_after_int

# Make sure at least our mock Devel::* module is around
assert_bash_exec {OLDPERL5LIB=$PERL5LIB; export PERL5LIB=$TESTDIR/fixtures/perl}

assert_complete_any "perl -d:"
sync_after_int

assert_complete_any "perl -dt:"
sync_after_int

assert_bash_exec {export PERL5LIB=$OLDPERL5LIB; unset -v OLDPERL5LIB}

teardown