annotate pydershell/test.py @ 27:7f12db104246

Added evaluate, new_array, and new_object functions to JsSandbox class.
author Atul Varma <varmaa@toolness.com>
date Tue, 08 Sep 2009 09:38:46 -0700
parents b7037cd0f375
children
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):
26
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
14 __jsprops__ = ['moose']
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
15
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
16 def __init__(self):
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
17 self._moose = 0
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
18
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
19 def get_moose(self):
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
20 self._moose += 1
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
21 return self._moose
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
22
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
23 def set_moose(self, value):
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
24 self._moose = value
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
25
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
26 moose = property(get_moose, set_moose)
b7037cd0f375 Added support for exposing object properties to JS.
Atul Varma <varmaa@toolness.com>
parents: 24
diff changeset
27
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
28 @jsexposed
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 def woozle(self, blap):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 return blap + 5
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31
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
32 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 def baz():
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 return Baz()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35
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
36 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 def bar(obj):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 print obj.bar()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39
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
40 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 def foo(callback):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 return callback()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43
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
44 @jsexposed(on=sandbox.root)
22
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 def ensureBaz(baz):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 if not isinstance(baz, Baz):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 print "Uhoh"
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 else:
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 print "ok"
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50
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
51 @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
52 def jsprint(string):
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 print string
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 retval = sandbox.run_script('test.js')
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 sandbox.finish()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 del sandbox
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 import gc
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 gc.collect()
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 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
63 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
64
9413bebf2ee6 Separated the test functionality out into a separate file.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 sys.exit(retval)