annotate test_pydertron.py @ 12:e4978bd08bfa

Factored out unit test suite
author Atul Varma <varmaa@toolness.com>
date Thu, 10 Sep 2009 13:53:03 -0700
parents
children 6c55f09ff31d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 import os
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 import sys
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 import pydermonkey
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 from pydertron import JsSandbox, SandboxedFileSystem, jsexposed
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 def run_test(name, libpath):
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 sandbox = JsSandbox(SandboxedFileSystem(libpath))
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 stats = [0, 0]
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 @jsexposed(name='print')
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 def jsprint(message, label):
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 if label == "pass":
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 stats[0] += 1
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 elif label == "fail":
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 stats[1] += 1
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 print "%s %s" % (message, label)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 sandbox.set_globals(
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 sys = sandbox.new_object(**{'print': jsprint}),
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 environment = sandbox.new_object()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 )
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 retval = sandbox.run_script("require('program')")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 sandbox.finish()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 if retval != 0:
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 stats[1] += 1
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 return stats
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 if __name__ == '__main__':
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 base_libpath = os.path.join("interoperablejs-read-only",
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 "compliance")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 if not os.path.exists(base_libpath):
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 print "Please run the following command and then re-run "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 print "this script:"
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 print ("svn checkout "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 "http://interoperablejs.googlecode.com/svn/trunk/ "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 "interoperablejs-read-only")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 sys.exit(1)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 dirs = [(os.path.join(base_libpath, name), name)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 for name in os.listdir(base_libpath)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 if name not in ['.svn', 'ORACLE']]
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 totals = [0, 0]
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 for libpath, name in dirs:
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 passed, failed = run_test(name, libpath)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 totals[0] += passed
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 totals[1] += failed
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 print "passed: %d failed: %d" % tuple(totals)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 import gc
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 gc.collect()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 if pydermonkey.get_debug_info()['runtime_count']:
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 sys.stderr.write("WARNING: JS runtime was not destroyed.\n")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 sys.exit(totals[1])