annotate test_compliance.py @ 21:cb73bb169b67

Added html docs.
author Atul Varma <varmaa@toolness.com>
date Thu, 10 Sep 2009 16:37:33 -0700
parents 9fe3f115f951
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
1 # ***** BEGIN LICENSE BLOCK *****
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
2 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
3 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
4 # The contents of this file are subject to the Mozilla Public License Version
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
5 # 1.1 (the "License"); you may not use this file except in compliance with
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
6 # the License. You may obtain a copy of the License at
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
7 # http://www.mozilla.org/MPL/
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
8 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
9 # Software distributed under the License is distributed on an "AS IS" basis,
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
10 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
11 # for the specific language governing rights and limitations under the
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
12 # License.
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
13 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
14 # The Original Code is Pydertron.
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
15 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
16 # The Initial Developer of the Original Code is Mozilla.
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
17 # Portions created by the Initial Developer are Copyright (C) 2007
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
18 # the Initial Developer. All Rights Reserved.
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
19 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
20 # Contributor(s):
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
21 # Atul Varma <atul@mozilla.com>
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
22 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
23 # Alternatively, the contents of this file may be used under the terms of
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
24 # either the GNU General Public License Version 2 or later (the "GPL"), or
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
25 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
26 # in which case the provisions of the GPL or the LGPL are applicable instead
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
27 # of those above. If you wish to allow use of your version of this file only
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
28 # under the terms of either the GPL or the LGPL, and not to allow others to
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
29 # use your version of this file under the terms of the MPL, indicate your
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
30 # decision by deleting the provisions above and replace them with the notice
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
31 # and other provisions required by the GPL or the LGPL. If you do not delete
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
32 # the provisions above, a recipient may use your version of this file under
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
33 # the terms of any one of the MPL, the GPL or the LGPL.
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
34 #
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
35 # ***** END LICENSE BLOCK *****
9fe3f115f951 Added license blocks.
Atul Varma <varmaa@toolness.com>
parents: 17
diff changeset
36
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
37 """
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
38 CommonJS SecurableModule standard compliance tests for Pydertron.
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
39 """
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
40
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 import os
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 import sys
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 import pydermonkey
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
45 from pydertron import JsSandbox, jsexposed
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
46 from pydertron import LocalFileSystem, HttpFileSystem
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
48 def run_test(name, fs):
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
49 sandbox = JsSandbox(fs)
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
50 stats = {'pass': 0, 'fail': 0, 'info': 0}
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 @jsexposed(name='print')
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 def jsprint(message, label):
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
54 stats[label] += 1
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 print "%s %s" % (message, label)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 sandbox.set_globals(
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 sys = sandbox.new_object(**{'print': jsprint}),
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 environment = sandbox.new_object()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 )
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 retval = sandbox.run_script("require('program')")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 sandbox.finish()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 if retval != 0:
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
67 stats['fail'] += 1
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 return stats
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70 if __name__ == '__main__':
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 base_libpath = os.path.join("interoperablejs-read-only",
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 "compliance")
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
73
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
74 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
75 with_http = True
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
76 else:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
77 with_http = False
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
78
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
79 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
80 print "Please run the following command and then re-run "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 print "this script:"
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 print
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 print ("svn checkout "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 "http://interoperablejs.googlecode.com/svn/trunk/ "
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 "interoperablejs-read-only")
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
86 print
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
87 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
88 print "option to run the tests over http."
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 sys.exit(1)
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
91 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
92
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
93 if with_http:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
94 names = ['absolute', 'cyclic', 'determinism', 'exactExports',
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
95 'hasOwnProperty', 'method', 'missing', 'monkeys',
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
96 'nested', 'reflexive', 'relative', 'transitive']
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
97 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
98 for name in names]
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
99 fsfactory = HttpFileSystem
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
100 else:
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
101 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
102 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
103 if name not in ['.svn', 'ORACLE']]
16
9426f9fa6dc0 Added docs.
Atul Varma <varmaa@toolness.com>
parents: 15
diff changeset
104 fsfactory = LocalFileSystem
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
106 totals = {'pass': 0, 'fail': 0}
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 for libpath, name in dirs:
15
f30bd92e2216 Added support for running test suite over http.
Atul Varma <varmaa@toolness.com>
parents: 14
diff changeset
109 fs = fsfactory(libpath)
14
16fe9c63aedb Added HttpFileSystem
Atul Varma <varmaa@toolness.com>
parents: 13
diff changeset
110 stats = run_test(name, fs)
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
111 totals['pass'] += stats['pass']
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
112 totals['fail'] += stats['fail']
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
114 print "passed: %(pass)d failed: %(fail)d" % totals
12
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
115
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
116 import gc
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 gc.collect()
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 if pydermonkey.get_debug_info()['runtime_count']:
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119 sys.stderr.write("WARNING: JS runtime was not destroyed.\n")
e4978bd08bfa Factored out unit test suite
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120
13
6c55f09ff31d Minor refactorings to improve readability
Atul Varma <varmaa@toolness.com>
parents: 12
diff changeset
121 sys.exit(totals['fail'])