def test(): global document,options,DEFAULT_TESTDIR,url_data def nodesStr(nodes): def tagstr(node): try: strs=['<'+node.name] i=node.get('id') c=node.get('class') if i: strs.append('id='+i) if c: strs.append('class='+c) return escapeStr(' '.join(strs)+'>') except: return escapeStr(unicode(node)) if isinstance(nodes,list): return ' '.join([tagstr(node) for node in nodes]) elif getattr(nodes,'nodeType',None) or isinstance(nodes,basestring): return escapeStr(unicode(nodes)) else: return nodes if options.web: fp=urllib2.urlopen(url_data) dirdoc=BSXPathEvaluator(fp.read()) files=map(lambda node:node.get('href'),dirdoc.getItemList('//li/a[@href!="../"]')) else: if options.path: testdir=options.path else: testdir=DEFAULT_TESTDIR files=os.listdir(testdir) tnames=','.join(options.names).split(',') if options.names else None tnumbers=','.join(options.numbers).split(',') if options.numbers else None for name in files: if tnames: fname=re.sub(r'\..*$','',name) if not fname in tnames: continue target=url_data+'/'+name if options.web else os.path.join(testdir,name) data=parseTestData(target,options.web) print '[%s]\n%s\n' % (name,data.comment) document=BSXPathEvaluator(data.html) context=document.evaluate(data.contextExpr,document,None,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,None).snapshotItem(0) tests=data.tests cnt=0 for test in tests: cnt=cnt+1 if tnumbers: if not str(cnt) in tnumbers: continue print u'No.%d' % cnt expr=test.expr print u'expr : %s' % (expr) (nodes,time,resultType)=document.applyXPath(context,expr) print u'time : %d.%06d sec' % (time.seconds,time.microseconds) print u'result: %s' % nodesStr(nodes) print u'expect: %s' % (test.data) judge=testNodes(nodes,test.data) print u'judge : %s (%s)' % (judge.status,judge.detail) print u'' print u''
def test(): global document, options, DEFAULT_TESTDIR, url_data def nodesStr(nodes): def tagstr(node): try: strs = ['<' + node.name] i = node.get('id') c = node.get('class') if i: strs.append('id=' + i) if c: strs.append('class=' + c) return escapeStr(' '.join(strs) + '>') except: return escapeStr(unicode(node)) if isinstance(nodes, list): return ' '.join([tagstr(node) for node in nodes]) elif getattr(nodes, 'nodeType', None) or isinstance(nodes, basestring): return escapeStr(unicode(nodes)) else: return nodes if options.web: fp = urllib2.urlopen(url_data) dirdoc = BSXPathEvaluator(fp.read()) files = map(lambda node: node.get('href'), dirdoc.getItemList('//li/a[@href!="../"]')) else: if options.path: testdir = options.path else: testdir = DEFAULT_TESTDIR files = os.listdir(testdir) tnames = ','.join(options.names).split(',') if options.names else None tnumbers = ','.join( options.numbers).split(',') if options.numbers else None for name in files: if tnames: fname = re.sub(r'\..*$', '', name) if not fname in tnames: continue target = url_data + '/' + name if options.web else os.path.join( testdir, name) data = parseTestData(target, options.web) print '[%s]\n%s\n' % (name, data.comment) document = BSXPathEvaluator(data.html) context = document.evaluate(data.contextExpr, document, None, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, None).snapshotItem(0) tests = data.tests cnt = 0 for test in tests: cnt = cnt + 1 if tnumbers: if not str(cnt) in tnumbers: continue print u'No.%d' % cnt expr = test.expr print u'expr : %s' % (expr) (nodes, time, resultType) = document.applyXPath(context, expr) print u'time : %d.%06d sec' % (time.seconds, time.microseconds) print u'result: %s' % nodesStr(nodes) print u'expect: %s' % (test.data) judge = testNodes(nodes, test.data) print u'judge : %s (%s)' % (judge.status, judge.detail) print u'' print u''