from testutils import * from tempfile import mkstemp setup_tests() _, tmpfile = mkstemp() try: expect_prompt() message = '''Simple IO redirect append test. Makes sure your program actually creates the file, not just appending to existing. echo b >> tmpfile echo a >> tmpfile ''' sendline('echo first line >> {0}'.format(tmpfile)) expect_prompt() with open(tmpfile) as fd: data = fd.read() assert 'first line' == data.strip() sendline('echo second line >> {0}'.format(tmpfile)) expect_prompt() with open(tmpfile) as fd: data = fd.read() assert 'first line\nsecond line' == data.strip() removefile(tmpfile) sendline('echo new line >> {0}'.format(tmpfile)) expect_prompt() with open(tmpfile) as fd: data = fd.read() assert 'new line' == data.strip() removefile(tmpfile) with open(tmpfile, 'w') as fd: fd.write('now I create the data\n') sendline('echo and you append >> {0}'.format(tmpfile)) expect_prompt() with open(tmpfile) as fd: assert 'now I create the data\nand you append' == fd.read().strip() # # test that the shell can redirect both stdout and stderr # removefile(tmpfile) exe = make_test_program(open(os.path.dirname(__file__) + "/writetostderr.c").read()) sendline('{0} >& {1}'.format(exe, tmpfile)) expect_prompt() removefile(exe) with open(tmpfile) as fd: content = fd.read() assert 'stderr\nstdout\n' == content finally: removefile(tmpfile) test_success()