Mercurial > pydertron
annotate test_pydertron.py @ 16:9426f9fa6dc0
Added docs.
| author | Atul Varma <varmaa@toolness.com> |
|---|---|
| date | Thu, 10 Sep 2009 14:55:24 -0700 |
| parents | f30bd92e2216 |
| children |
| rev | line source |
|---|---|
| 16 | 1 """ |
| 2 CommonJS SecurableModule standard compliance tests for Pydertron. | |
| 3 """ | |
| 4 | |
| 12 | 5 import os |
| 6 import sys | |
| 7 | |
| 8 import pydermonkey | |
| 14 | 9 from pydertron import JsSandbox, jsexposed |
| 16 | 10 from pydertron import LocalFileSystem, HttpFileSystem |
| 12 | 11 |
| 14 | 12 def run_test(name, fs): |
| 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 | 15 |
| 16 @jsexposed(name='print') | |
| 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 | 19 print "%s %s" % (message, label) |
| 20 | |
| 21 sandbox.set_globals( | |
| 22 sys = sandbox.new_object(**{'print': jsprint}), | |
| 23 environment = sandbox.new_object() | |
| 24 ) | |
| 25 | |
| 26 retval = sandbox.run_script("require('program')") | |
| 27 sandbox.finish() | |
| 28 print | |
| 29 | |
| 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 | 32 return stats |
| 33 | |
| 34 if __name__ == '__main__': | |
| 35 base_libpath = os.path.join("interoperablejs-read-only", | |
| 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 | 44 print "Please run the following command and then re-run " |
| 45 print "this script:" | |
| 46 print | |
| 47 print ("svn checkout " | |
| 48 "http://interoperablejs.googlecode.com/svn/trunk/ " | |
| 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 | 53 sys.exit(1) |
| 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 | 68 fsfactory = LocalFileSystem |
| 12 | 69 |
|
13
6c55f09ff31d
Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents:
12
diff
changeset
|
70 totals = {'pass': 0, 'fail': 0} |
| 12 | 71 |
| 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 | 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 | 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 | 79 |
| 80 import gc | |
| 81 gc.collect() | |
| 82 if pydermonkey.get_debug_info()['runtime_count']: | |
| 83 sys.stderr.write("WARNING: JS runtime was not destroyed.\n") | |
| 84 | |
|
13
6c55f09ff31d
Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents:
12
diff
changeset
|
85 sys.exit(totals['fail']) |
