示例#1
0
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''
示例#2
0
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''