118 lines
2.5 KiB
Plaintext
Executable File
118 lines
2.5 KiB
Plaintext
Executable File
#!/usr/bin/expect -f
|
|
|
|
# PIP bash completion smoke test using expect
|
|
# Tests actual TAB completion functionality
|
|
# Usage: test_pip_completion.exp [completion_file] [pip_binary]
|
|
|
|
set timeout 5
|
|
|
|
|
|
set completion_file [lindex $argv 0]
|
|
set pip_exec [lindex $argv 1]
|
|
|
|
|
|
puts "=== PIP Bash Completion Test (using expect) ==="
|
|
puts "Testing completion file: $completion_file"
|
|
puts "Testing pip binary: $pip_exec"
|
|
|
|
# Check if completion file exists first
|
|
if {![file exists $completion_file]} {
|
|
puts "✗ Completion file not found: $completion_file"
|
|
exit 1
|
|
}
|
|
puts "✓ Completion file found: $completion_file"
|
|
|
|
# Start bash shell
|
|
if {[info exists env(AS_POSIX)] && $env(AS_POSIX) == "1"} {
|
|
spawn bash --norc --posix
|
|
} else {
|
|
spawn bash --norc
|
|
}
|
|
expect "$ "
|
|
|
|
# Source the completion file
|
|
send "source $completion_file\r"
|
|
expect "$ "
|
|
puts "Attempted to source completion file"
|
|
|
|
# Test 1: Basic pip command completion
|
|
puts "\nTest 1: Testing '$pip_exec ' + TAB completion..."
|
|
send "$pip_exec "
|
|
sleep 0.1
|
|
# Send TAB TAB using hex codes
|
|
send "\x09\x09"
|
|
expect {
|
|
-re "(install|uninstall|list|show)" {
|
|
puts "✓ Basic pip commands found in completion"
|
|
expect "$ "
|
|
}
|
|
-re "Display all" {
|
|
puts "✓ Completion showing options menu"
|
|
send "n\r"
|
|
expect "$ "
|
|
}
|
|
timeout {
|
|
puts "✗ Timeout waiting for completion - test failed"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Clear the line and ensure clean prompt
|
|
send "\x03"
|
|
expect "$ "
|
|
send "\r"
|
|
expect "$ "
|
|
|
|
# Test 2: Test partial command completion (simpler test)
|
|
puts "\nTest 2: Testing '$pip_exec insta' + TAB completion..."
|
|
send "$pip_exec insta"
|
|
sleep 0.1
|
|
# Single TAB for completion
|
|
send "\x09"
|
|
expect {
|
|
-re "install" {
|
|
puts "✓ Partial command completion works (insta -> install)"
|
|
expect "$ "
|
|
}
|
|
timeout {
|
|
puts "✗ Timeout on partial completion test - test failed"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Clear the line and ensure clean prompt
|
|
send "\x03"
|
|
expect "$ "
|
|
send "\r"
|
|
expect "$ "
|
|
|
|
# Test 3: Test help completion
|
|
puts "\nTest 3: Testing '$pip_exec --' + TAB completion..."
|
|
send "$pip_exec --"
|
|
sleep 0.1
|
|
send "\x09\x09"
|
|
expect {
|
|
-re "(--help|--version)" {
|
|
puts "✓ Command options found in completion"
|
|
expect "$ "
|
|
}
|
|
timeout {
|
|
puts "✗ Timeout on options completion test - test failed"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Final cleanup - make sure we're at clean prompt
|
|
send "\x03"
|
|
expect "$ "
|
|
send "\r"
|
|
expect "$ "
|
|
|
|
# Exit bash cleanly
|
|
send "exit\r"
|
|
expect eof
|
|
|
|
puts "\n=== Completion Test Complete ==="
|
|
puts "PIP bash completion functionality tested!"
|
|
|