annotate test_compliance.py @ 17:42da9c627d2d

Renamed test_pydertron.py to test_compliance.py.
author Atul Varma <varmaa@toolness.com>
date Thu, 10 Sep 2009 14:56:22 -0700
parents test_pydertron.py@9426f9fa6dc0
children 9fe3f115f951
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
1 """
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
2 CommonJS SecurableModule standard compliance tests for Pydertron.
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
3 """
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
4
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 import os
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 import sys
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 import pydermonkey
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
9 from pydertron import JsSandbox, jsexposed
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
10 from pydertron import LocalFileSystem, HttpFileSystem
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
12 def run_test(name, fs):
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
13 sandbox = JsSandbox(fs)
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
14 stats = {'pass': 0, 'fail': 0, 'info': 0}
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 @jsexposed(name='print')
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 def jsprint(message, label):
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
18 stats[label] += 1
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 print "%s %s" % (message, label)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 sandbox.set_globals(
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 sys = sandbox.new_object(**{'print': jsprint}),
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 environment = sandbox.new_object()
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
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 retval = sandbox.run_script("require('program')")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 sandbox.finish()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 if retval != 0:
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
31 stats['fail'] += 1
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 return stats
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 if __name__ == '__main__':
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 base_libpath = os.path.join("interoperablejs-read-only",
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 "compliance")
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
37
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
38 if len(sys.argv) == 2 and sys.argv[1] == '--with-http':
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
39 with_http = True
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
40 else:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
41 with_http = False
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
42
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
43 if not os.path.exists(base_libpath) and not with_http:
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 print "Please run the following command and then re-run "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 print "this script:"
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 print ("svn checkout "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 "http://interoperablejs.googlecode.com/svn/trunk/ "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 "interoperablejs-read-only")
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
50 print
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
51 print "Alternatively, run this script with the '--with-http' "
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
52 print "option to run the tests over http."
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 sys.exit(1)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
55 BASE_URL = "http://interoperablejs.googlecode.com/svn/trunk/compliance/"
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
56
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
57 if with_http:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
58 names = ['absolute', 'cyclic', 'determinism', 'exactExports',
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
59 'hasOwnProperty', 'method', 'missing', 'monkeys',
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
60 'nested', 'reflexive', 'relative', 'transitive']
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
61 dirs = [("%s%s/"% (BASE_URL, name), name)
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
62 for name in names]
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
63 fsfactory = HttpFileSystem
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
64 else:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
65 dirs = [(os.path.join(base_libpath, name), name)
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
66 for name in os.listdir(base_libpath)
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
67 if name not in ['.svn', 'ORACLE']]
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
68 fsfactory = LocalFileSystem
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
70 totals = {'pass': 0, 'fail': 0}
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 for libpath, name in dirs:
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
73 fs = fsfactory(libpath)
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
74 stats = run_test(name, fs)
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
75 totals['pass'] += stats['pass']
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
76 totals['fail'] += stats['fail']
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
78 print "passed: %(pass)d failed: %(fail)d" % totals
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 import gc
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 gc.collect()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 if pydermonkey.get_debug_info()['runtime_count']:
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 sys.stderr.write("WARNING: JS runtime was not destroyed.\n")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
85 sys.exit(totals['fail'])