def test_clobbering(): s = Sandbox() s.clone_bin("echo") s.clone_bin("cat") s.clone_bin("sh") cat_size = os.stat(s.to_main_basis('/bin/cat')) with s.open("/sandbox_clobber.sh", 'w') as f: f.write('\n'.join([ '#!/bin/sh', 'echo "clobbering $1 ..."', 'echo "$0 $*" > $1', 'echo "$?"' ])) feedback = s.process(["sh", "/sandbox_clobber.sh", "/bin/cat"], stdout=subprocess.PIPE) assert feedback.ended_correctly assert feedback.return_code == 0 i = 0 for l in feedback.stdout: assert i != 0 or l == "clobbering /bin/cat ...\n" assert i != 1 or int(l) != 0 i += 1 assert os.stat(s.to_main_basis('/bin/cat')) == cat_size del s
def test_basises(): s = Sandbox() sandbox_basis = '/bin/ls' main_basis = s.to_main_basis(sandbox_basis) assert main_basis == s.root_directory[:-1] + sandbox_basis assert s.to_sandbox_basis(main_basis) == sandbox_basis assert len(main_basis.split('//')) == 1 try: s.to_main_basis('bin/ls') except AssertionError: assert True else: assert False