pokki has asked for the wisdom of the Perl Monks concerning the following question:
Wise monks,
I'm in the process of writing a module to test shell sessions using IPC::Run, and I've hit the hurdle described in the subject line: I can't manage to make cd work.
I tried various things until I reread the IPC::Run documentation which states "No support for cd, setenv, or export: do these in an init() sub (example follows)". Okay, but I don't just need cd once to put my script in the right directory, I need a fully interactive session that accepts any command. (Does anyone know why this limitation exists, by the way?)
If you're curious, this is the kind of tool you feed an almost-but-not-quite shell script with the expected output after every command. Then the tool runs every command and compares the output. This is highly useful for teaching material when you need to demonstrate how, e.g., a DVCS works (if you've used Cram before, the example will look rather familiar):
I'm using IPC::Run basically like this (shortened):
my ($input, $output, $errput); my $subprocess = start([ '/bin/bash' ], '<', \$input, '1>pty>', \$output, '2>', \$errput); # later, for each $command { shell => 'pwd', 'outputs' => [ '/tmp/foo' + ] } diag $command->{shell}; $input = $command->{shell} . "\n"; foreach my $expected_output (@{$command->{outputs}}) { while ($output !~ /\n/) { if ($errput) { diag 'STDERR: '.$errput; $errput = ''; } $subprocess->pump; } # munge $expected_output and compare stuff }
Does anyone automate shell(or other CLI apps) sessions to this degree? With what module? Looking around on CPAN it seems only IPC::Run really does the whole "talk to a subprocess double-pipe style" hog. I don't get why bash seems to "reset" between every command, though. Did I miss something really obvious?
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Automating a shell session: cd does not work
by Illuminatus (Curate) on Jan 02, 2013 at 22:31 UTC | |
by pokki (Monk) on Jan 02, 2013 at 23:52 UTC | |
by pokki (Monk) on Jan 03, 2013 at 10:13 UTC | |
Re: Automating a shell session: cd does not work
by Anonymous Monk on Jan 02, 2013 at 20:23 UTC |