1
# common utilities for all CDE tests
3
from subprocess import *
5
CDE_BIN = "/home/pgbovine/CDE/cde"
6
CDE_EXEC = "/home/pgbovine/CDE/cde-exec"
8
CDE_ROOT_DIR = 'cde-package/cde-root'
10
def generic_lib_checks():
11
assert os.path.islink('cde-package/cde-root/lib/libc.so.6')
12
assert os.readlink('cde-package/cde-root/lib/libc.so.6') == 'libc-2.8.so'
13
assert os.path.isfile('cde-package/cde-root/lib/ld-linux.so.2')
15
def run_cde(argv, silent=False):
16
(stdout, stderr) = Popen([CDE_BIN] + argv, stdout=PIPE, stderr=PIPE).communicate()
19
print "stderr:", stderr
20
return (stdout, stderr)
22
def run_and_cmp_cde_exec(argv, prev_stdout, prev_stderr):
23
# to make for a tougher test, move the entire cde-package directory to /tmp
24
# and try to do a cde-exec run
25
full_pwd = os.getcwd()
26
full_pwd_renamed = full_pwd + '-renamed'
27
cur_dirname = os.path.basename(full_pwd)
29
tmp_test_rootdir = "/tmp/" + cur_dirname
30
tmp_test_dir = tmp_test_rootdir + '/cde-package/cde-root/' + full_pwd
32
# careful with these commands! use 'finally' to clean up even after
35
(stdout, stderr) = Popen(["rm", "-rf", tmp_test_rootdir], stdout=PIPE, stderr=PIPE).communicate()
36
assert not stdout and not stderr
37
(stdout, stderr) = Popen(["cp", "-aR", full_pwd, "/tmp"], stdout=PIPE, stderr=PIPE).communicate()
38
assert not stdout and not stderr
40
# rename full_pwd to make it impossible for the new version in /tmp
41
# to reference already-existing files in full_pwd (a harsher test!)
43
os.rename(full_pwd, full_pwd_renamed)
45
# run the cde-exec test in tmp_test_dir
46
os.chdir(tmp_test_dir)
47
(stdout, stderr) = Popen([CDE_EXEC] + argv, stdout=PIPE, stderr=PIPE).communicate()
48
#print '=== prev_stdout:', prev_stdout
49
#print '=== stdout:', stdout
50
assert stdout == prev_stdout
51
#print '=== prev_stderr:', prev_stderr
52
#print '=== stderr:', stderr
53
assert stderr == prev_stderr
56
# rename it back to be nice :)
57
os.rename(full_pwd_renamed, full_pwd)
58
os.chdir(full_pwd) # make sure to chdir back!!!
61
# remove the version in tmp
62
(stdout, stderr) = Popen(["rm", "-rf", tmp_test_rootdir], stdout=PIPE, stderr=PIPE).communicate()
65
def generic_test_runner(argv, checker_func, skip_generic_lib_checks=False, clear_cde_options=True):
67
os.system('rm -rf cde-package')
70
os.system('rm -f cde.options')
72
time.sleep(0.3) # to give os.system some time to work :)
75
(stdout, stderr) = run_cde(argv)
79
if not skip_generic_lib_checks:
82
run_and_cmp_cde_exec(argv, stdout, stderr)