from testutils import *
from tempfile import mkstemp
setup_tests()
_, tmpfile = mkstemp()
try:
testdata = 'this is a simple test'
with open(tmpfile, 'w') as fd:
fd.write(testdata)
message = '''Simple IO redirect input test.
Sets up a tmp file and writes to it, makes sure your output matches.
cat < tmpfile
rev < tmpfile
Overwrite file
wc -c < tmpfile
'''
sendline('cat < {0}'.format(tmpfile))
expect(testdata, message)
sendline('rev < {0}'.format(tmpfile))
expect('tset elpmis a si siht', message)
with open(tmpfile) as fd:
assert fd.read() == 'this is a simple test'
with open(tmpfile, 'w') as fd:
fd.write('overwrite')
sendline('wc < {0}'.format(tmpfile))
expect(tmpfile)
expect_regex(r'(0)\s+(1)\s+(9)')
finally:
removefile(tmpfile)
message = '''Test that file descriptors are not leaked into child
processes. Only the file descriptors 0, 1, and 2 (stdin, stdout, stderr)
should be open. If you don't call close() in the proper locations this
test will fail.
'''
sendline('sleep 100 < /dev/null &')
job = parse_bg_status()
assert_correct_fds(job.pid, message)
os.kill(int(job.pid), signal.SIGKILL)
test_success()