#!/bin/expect-dyn # BRINTOS-30 self-test: minicom on a pty loopback (ptypeer). # GREEN: banner drawn (ncurses), status line, TX->RX echo, clean quit. # RED witness: unknown TERM must fail loudly (terminfo db really consulted). set timeout 30 catch {exec rm -f /tmp/ptypeer.dev} spawn /bin/ptypeer expect { -re {PTYPEER (/dev/pts/[0-9]+)} { set dev $expect_out(1,string) } timeout { puts "MINICOM-FAIL ptypeer-spawn"; exit 1 } eof { puts "MINICOM-FAIL ptypeer-died"; exit 1 } } set peer $spawn_id set pass 0 set env(TERM) vt100 spawn /bin/minicom -D $dev -o expect { -re {Welcome to minicom} { incr pass; puts "\nR3-banner ok" } timeout { puts "MINICOM-FAIL banner"; exit 1 } eof { puts "MINICOM-FAIL minicom-died"; exit 1 } } expect { -re {CTRL-A Z for help} { incr pass; puts "\nR3-statusline ok" } timeout { puts "MINICOM-FAIL statusline"; exit 1 } } send "ping-brintos-30\r" expect { -re {ping-brintos-30} { incr pass; puts "\nR3-echo ok" } timeout { puts "MINICOM-FAIL echo"; exit 1 } } send "\001x" expect { -re {Leave [Mm]inicom} { send "\r" } timeout { puts "MINICOM-FAIL quit-dialog"; exit 1 } } expect { eof { incr pass; puts "R3-quit ok" } timeout { puts "MINICOM-FAIL quit"; exit 1 } } # RED witness: bogus TERM -> loud failure, NOT a working screen set env(TERM) bogus-term-brintos spawn /bin/minicom -D $dev -o expect { -re {(?i)(error opening terminal|unknown terminal|could not open)} { incr pass; puts "\nRED-witness ok (bogus TERM refused)" } -re {Welcome to minicom} { puts "MINICOM-FAIL red-witness (bogus TERM accepted)"; exit 1 } timeout { puts "MINICOM-FAIL red-witness-timeout"; exit 1 } eof { incr pass; puts "\nRED-witness ok (minicom exited)" } } catch {close -i $peer} puts "pass=$pass/5 ALL-MINICOM-OK"