Mercurial > scratch
annotate pydershell/test.py @ 26:b7037cd0f375
Added support for exposing object properties to JS.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 07 Sep 2009 22:17:57 -0700 |
parents | dace90a7f5e3 |
children |
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) |