[Checkins] SVN: zc.testbrowser/trunk/src/zc/testbrowser/real.
Convert more code to use proxy JS function caller.
Justas SadzeviÃÂius
justas at pov.lt
Thu Sep 27 11:39:50 EDT 2007
Log message for revision 80235:
Convert more code to use proxy JS function caller.
Add a hack to deserialize values returned by JS function.
Changed:
U zc.testbrowser/trunk/src/zc/testbrowser/real.js
U zc.testbrowser/trunk/src/zc/testbrowser/real.py
-=-
Modified: zc.testbrowser/trunk/src/zc/testbrowser/real.js
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-27 15:25:25 UTC (rev 80234)
+++ zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-27 15:39:49 UTC (rev 80235)
@@ -33,7 +33,7 @@
for (var i in tokens) {
attrs.push(tb_tokens[tokens[i]].getAttribute(attr));
}
- return attrs.toSource()
+ return attrs
}
function tb_get_link_by_predicate(predicate, index) {
Modified: zc.testbrowser/trunk/src/zc/testbrowser/real.py
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/real.py 2007-09-27 15:25:25 UTC (rev 80234)
+++ zc.testbrowser/trunk/src/zc/testbrowser/real.py 2007-09-27 15:39:49 UTC (rev 80235)
@@ -65,12 +65,14 @@
def __call__(self, *args):
js_args = [simplejson.dumps(a) for a in args]
- js = '%s(%s)' % (self.js_name, ', '.join(js_args))
- try:
- res = simplejson.loads(self.executor(js))
- except:
- raise Exception(js)
- return res
+ js = '[%s(%s)].toSource()' % (
+ self.js_name, ', '.join(js_args))
+ res = self.executor(js)
+ # JS has 'null' and 'undefined', python only has 'None'.
+ # This hack is sufficient for now.
+ if res == '[undefined]':
+ return None
+ return simplejson.loads(res)[0]
class JSProxy(object):
@@ -124,6 +126,7 @@
self.telnet.write(js)
i, match, text = self.expect()
if '!!!' in text: import pdb;pdb.set_trace() # XXX debug only, remove
+ #if '!!!' in text: raise Exception('FAILED: ' + js)
result = text.rsplit('\n', 1)
if len(result) == 1:
return None
@@ -262,7 +265,7 @@
return Link(token, self)
def _follow_link(self, token):
- self.execute('tb_follow_link(%s)' % token)
+ self.js.tb_follow_link(token)
def getControlToken(self, label=None, name=None, index=None,
context_token=None, xpath=None):
@@ -270,20 +273,16 @@
token = None
if label is not None:
msg = 'label %r' % label
- token = self.execute('tb_get_control_by_label(%s, %s, %s, %s)'
- % (simplejson.dumps(label), js_index,
- simplejson.dumps(context_token),
- simplejson.dumps(xpath)))
+ token = self.js.tb_get_control_by_label(
+ label, index, context_token, xpath)
elif name is not None:
msg = 'name %r' % name
- token = self.execute('tb_get_control_by_name(%s, %s, %s, %s)'
- % (simplejson.dumps(name), js_index,
- simplejson.dumps(context_token),
- simplejson.dumps(xpath)))
+ token = self.js.tb_get_control_by_name(
+ name, index, context_token, xpath)
else:
raise NotImplementedError
- if token == 'false':
+ if token is False:
raise LookupError(msg)
elif token == 'ambiguity error':
raise AmbiguityError(msg)
More information about the Checkins
mailing list