annotate pydershell/test.py @ 24:dace90a7f5e3

Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 16:53:41 -0700
parents 9413bebf2ee6
children b7037cd0f375
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 #! /usr/bin/env python
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 # Trivial embedding of pydershell.
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 import sys
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 import pydermonkey
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
8 from pydershell import JsSandbox, JsExposedObject, jsexposed
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 if __name__ == '__main__':
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 sandbox = JsSandbox()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 class Baz(JsExposedObject):
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
14 @jsexposed
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 def woozle(self, blap):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 return blap + 5
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
18 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 def baz():
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 return Baz()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
22 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 def bar(obj):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 print obj.bar()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
26 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 def foo(callback):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 return callback()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
30 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 def ensureBaz(baz):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 if not isinstance(baz, Baz):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 print "Uhoh"
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 else:
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 print "ok"
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36
24
dace90a7f5e3 Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
Atul Varma <varmaa@toolness.com>
parents: 22
diff changeset
37 @jsexposed(name="print", on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 def jsprint(string):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 print string
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 retval = sandbox.run_script('test.js')
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 sandbox.finish()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 del sandbox
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 import gc
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 gc.collect()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 if pydermonkey.get_debug_info()['runtime_count']:
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 print "WARNING: JS runtime was not destroyed."
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 sys.exit(retval)