customBashShell / tests / advanced / io_out_test.py
io_out_test.py
Raw
from testutils import *
from tempfile import mkstemp

setup_tests()
   
expect_prompt()

tmpfile = '/tmp/{0}.{1}.txt'.format(int(time.time() * 1000),
                                    os.getuid())

try:
    sendline('echo hi > {0}'.format(tmpfile))
    expect_prompt()

    with open(tmpfile) as fd:
        data = fd.read()
        assert 'hi' in data


    sendline('echo hello > {0}'.format(tmpfile))
    expect_prompt()

    with open(tmpfile) as fd:
        data = fd.read()
        assert 'hi' not in data
        assert 'hello' in data


    removefile(tmpfile)
    sendline('echo create this > {0}'.format(tmpfile))
    expect_prompt()

    with open(tmpfile) as fd:
        data = fd.read()
        assert 'hello' not in data
        assert 'create this' in data

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()