def photo(self, uri, lon, lat): x, y = self.deg_to_px(lon, lat) rel = refTo(base(), uri) while 1: for x2, y2 in self.marks: if sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2)) < 7: x, y = x + 9, y - 9 # shift break else: break self.marks.append((x, y)) self.wr("""<a xlink:href='%s'> <rect x='%i' y='%i' width='14' height='8' style='fill:#777;stroke:black'/> <circle cx='%i' cy='%i' r='3'/> </a>""" % (rel, x - 7, y - 4, x, y))
def photo(self, uri, lon, lat): x, y = self.deg_to_px(lon, lat) rel = refTo(base(), uri) while 1: for x2, y2 in self.marks: if sqrt((x-x2)*(x-x2) + (y-y2)*(y-y2)) < 7: x, y = x + 9, y - 9 # shift break else: break self.marks.append((x, y)) self.wr("""<a xlink:href='%s'> <rect x='%i' y='%i' width='14' height='8' style='fill:#777;stroke:black'/> <circle cx='%i' cy='%i' r='3'/> </a>""" %(rel, x-7, y-4, x, y))
def baseRel(uri): return uripath.refTo(uripath.base(), uri)
def localize(uri): """Get URI relative to where this lives""" from swap import uripath return uripath.refTo("http://www.w3.org/2000/10/swap/test/retest.py", uri)
def main(): global verbose, proofs, chatty, normal, no_action start = 1 cwm_command='../cwm.py' python_command='python -tt' global ploughOn # even if error ploughOn = 0 global verbose verbose = 0 global just_fix_it just_fix_it = 0 if diag.print_all_file_names: a = file('testfilelist','w') a.write('') a.close() try: opts, testFiles = getopt.getopt(sys.argv[1:], "h?s:nNcipf:v", ["help", "start=", "testsFrom=", "no-action", "No-normal", "chatty", "ignoreErrors", "proofs", "verbose","overwrite","cwm="]) except getopt.GetoptError: # print help information and exit: usage() sys.exit(2) output = None for o, a in opts: if o in ("-h", "-?", "--help"): usage() sys.exit() if o in ("-v", "--verbose"): verbose = 1 if o in ("-i", "--ignoreErrors"): ploughOn = 1 if o in ("-s", "--start"): start = int(a) if o in ("-f", "--testsFrom"): testFiles.append(a) if o in ("-n", "--no-action"): no_action = 1 if o in ("-N", "--No-normal"): normal = 0 if o in ("-c", "--chatty"): chatty = 1 if o in ("-p", "--proofs"): proofs = 1 if o in ("--overwrite",): just_fix_it = 1 if o in ("--cwm", "--the_end"): cwm_command=a assert system("mkdir -p ,temp") == 0 assert system("mkdir -p ,diffs") == 0 if proofs: assert system("mkdir -p ,proofs") == 0 tests=0 passes=0 global problems problems = [] REFWD="http://example.com/swap/test" WD = base()[:-1] #def basicTest(case, desc, args) if verbose: progress("Test files:", testFiles) kb = loadMany(testFiles, referer="") testData = [] RDFTestData = [] RDFNegativeTestData = [] perfData = [] n3PositiveTestData = [] n3NegativeTestData = [] sparqlTestData = [] # for fn in testFiles: # print "Loading tests from", fn # kb=load(fn) for t in kb.each(pred=rdf.type, obj=test.CwmTest): verboseDebug = kb.contains(subj=t, pred=rdf.type, obj=test.VerboseTest) u = t.uriref() ref = kb.the(t, test.referenceOutput) if ref == None: case = str(kb.the(t, test.shortFileName)) refFile = "ref/%s" % case else: refFile = refTo(base(), ref.uriref()) case = "" for ch in refFile: if ch in "/#": case += "_" else: case += ch # Make up test-unique temp filename description = str(kb.the(t, test.description)) arguments = str(kb.the(t, test.arguments)) environment = kb.the(t, test.environment) if environment == None: env="" else: env = str(environment) + " " testData.append((t, t.uriref(), case, refFile, description, env, arguments, verboseDebug)) for t in kb.each(pred=rdf.type, obj=rdft.PositiveParserTest): x = t.uriref() y = x.find("/rdf-tests/") x = x[y+11:] # rest for i in range(len(x)): if x[i]in"/#": x = x[:i]+"_"+x[i+1:] case = "rdft_" + x + ".nt" # Hack - temp file name description = str(kb.the(t, rdft.description)) # if description == None: description = case + " (no description)" inputDocument = kb.the(t, rdft.inputDocument).uriref() outputDocument = kb.the(t, rdft.outputDocument).uriref() status = kb.the(t, rdft.status).string good = 1 if status != "APPROVED": if verbose: print "\tNot approved: "+ inputDocument[-40:] good = 0 categories = kb.each(t, rdf.type) for cat in categories: if cat is triage.ReificationTest: if verbose: print "\tNot supported (reification): "+ inputDocument[-40:] good = 0 ## if cat is triage.ParseTypeLiteralTest: ## if verbose: print "\tNot supported (Parse type literal): "+ inputDocument[-40:] ## good = 0 if good: RDFTestData.append((t.uriref(), case, description, inputDocument, outputDocument)) for t in kb.each(pred=rdf.type, obj=rdft.NegativeParserTest): x = t.uriref() y = x.find("/rdf-tests/") x = x[y+11:] # rest for i in range(len(x)): if x[i]in"/#": x = x[:i]+"_"+x[i+1:] case = "rdft_" + x + ".nt" # Hack - temp file name description = str(kb.the(t, rdft.description)) # if description == None: description = case + " (no description)" inputDocument = kb.the(t, rdft.inputDocument).uriref() status = kb.the(t, rdft.status).string good = 1 if status != "APPROVED": if verbose: print "\tNot approved: "+ inputDocument[-40:] good = 0 categories = kb.each(t, rdf.type) for cat in categories: if cat is triage.knownError: if verbose: print "\tknown failure: "+ inputDocument[-40:] good = 0 if cat is triage.ReificationTest: if verbose: print "\tNot supported (reification): "+ inputDocument[-40:] good = 0 if good: RDFNegativeTestData.append((t.uriref(), case, description, inputDocument)) for t in kb.each(pred=rdf.type, obj=n3test.PositiveParserTest): u = t.uriref() hash = u.rfind("#") slash = u.rfind("/") assert hash >0 and slash > 0 case = u[slash+1:hash] + "_" + u[hash+1:] + ".out" # Make up temp filename description = str(kb.the(t, n3test.description)) # if description == None: description = case + " (no description)" inputDocument = kb.the(t, n3test.inputDocument).uriref() good = 1 categories = kb.each(t, rdf.type) for cat in categories: if cat is triage.knownError: if verbose: print "\tknown failure: "+ inputDocument[-40:] good = 0 if good: n3PositiveTestData.append((t.uriref(), case, description, inputDocument)) for t in kb.each(pred=rdf.type, obj=n3test.NegativeParserTest): u = t.uriref() hash = u.rfind("#") slash = u.rfind("/") assert hash >0 and slash > 0 case = u[slash+1:hash] + "_" + u[hash+1:] + ".out" # Make up temp filename description = str(kb.the(t, n3test.description)) # if description == None: description = case + " (no description)" inputDocument = kb.the(t, n3test.inputDocument).uriref() n3NegativeTestData.append((t.uriref(), case, description, inputDocument)) for tt in kb.each(pred=rdf.type, obj=sparql_manifest.Manifest): for t in kb.the(subj=tt, pred=sparql_manifest.entries): name = str(kb.the(subj=t, pred=sparql_manifest.name)) query_node = kb.the(subj=t, pred=sparql_manifest.action) if isinstance(query_node, AnonymousNode): data = '' for data_node in kb.each(subj=query_node, pred=sparql_query.data): data = data + ' ' + data_node.uriref() inputDocument = kb.the(subj=query_node, pred=sparql_query.query).uriref() else: data = '' inputDocument = query_node.uriref() j = inputDocument.rfind('/') case = inputDocument[j+1:] outputDocument = kb.the(subj=t, pred=sparql_manifest.result) if outputDocument: outputDocument = outputDocument.uriref() else: outputDocument = None good = 1 status = kb.the(subj=t, pred=dawg_test.approval) if status != dawg_test.Approved: print status, name if verbose: print "\tNot approved: "+ inputDocument[-40:] good = 0 if good: sparqlTestData.append((tt.uriref(), case, name, inputDocument, data, outputDocument)) for t in kb.each(pred=rdf.type, obj=test.PerformanceTest): x = t.uriref() theTime = kb.the(subj=t, pred=test.pyStones) description = str(kb.the(t, test.description)) arguments = str(kb.the(t, test.arguments)) environment = kb.the(t, test.environment) if environment == None: env="" else: env = str(environment) + " " perfData.append((x, theTime, description, env, arguments)) testData.sort() cwmTests = len(testData) if verbose: print "Cwm tests: %i" % cwmTests RDFTestData.sort() RDFNegativeTestData.sort() rdfTests = len(RDFTestData) rdfNegativeTests = len(RDFNegativeTestData) perfData.sort() perfTests = len(perfData) n3PositiveTestData.sort() n3PositiveTests = len(n3PositiveTestData) n3NegativeTestData.sort() n3NegativeTests = len(n3NegativeTestData) sparqlTestData.sort() sparqlTests = len(sparqlTestData) totalTests = cwmTests + rdfTests + rdfNegativeTests + sparqlTests \ + perfTests + n3PositiveTests + n3NegativeTests if verbose: print "RDF parser tests: %i" % rdfTests for t, u, case, refFile, description, env, arguments, verboseDebug in testData: tests = tests + 1 if tests < start: continue urel = refTo(base(), u) print "%3i/%i %-30s %s" %(tests, totalTests, urel, description) # print " %scwm %s giving %s" %(arguments, case) assert case and description and arguments cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e 's;%s;%s;g'""" % (WD, REFWD, cwm_command, '../cwm.py') if normal: execute("""CWM_RUN_NS="run#" %s %s %s --quiet %s | %s > ,temp/%s""" % (env, python_command, cwm_command, arguments, cleanup , case)) if diff(case, refFile): problem("######### from normal case %s: %scwm %s" %( case, env, arguments)) continue if chatty and not verboseDebug: execute("""%s %s %s --chatty=100 %s &> /dev/null""" % (env, python_command, cwm_command, arguments), noStdErr=True) if proofs and kb.contains(subj=t, pred=rdf.type, obj=test.CwmProofTest): execute("""%s %s %s --quiet %s --base=a --why > ,proofs/%s""" % (env, python_command, cwm_command, arguments, case)) execute("""%s ../check.py < ,proofs/%s | %s > ,temp/%s""" % (python_command, case, cleanup , case)) if diff(case, refFile): problem("######### from proof case %s: %scwm %s" %( case, env, arguments)) # else: # progress("No proof for "+`t`+ " "+`proofs`) # progress("@@ %s" %(kb.each(t,rdf.type))) passes = passes + 1 for u, case, name, inputDocument, data, outputDocument in sparqlTestData: tests += 1 if tests < start: continue urel = refTo(base(), u) print "%3i/%i %-30s %s" %(tests, totalTests, urel, name) inNtriples = case + '_1' outNtriples = case + '_2' try: execute("""%s %s %s --sparql=%s --filter=%s --filter=%s --ntriples > ',temp/%s'""" % (python_command, cwm_command, data, inputDocument, 'sparql/filter1.n3', 'sparql/filter2.n3', inNtriples)) except NotImplementedError: pass except: problem(str(sys.exc_info()[1])) if outputDocument: execute("""%s %s %s --ntriples > ',temp/%s'""" % (python_command, cwm_command, outputDocument, outNtriples)) if rdfcompare3(inNtriples, ',temp/' + outNtriples): problem('We have a problem with %s on %s' % (inputDocument, data)) passes += 1 for u, case, description, inputDocument, outputDocument in RDFTestData: tests = tests + 1 if tests < start: continue print "%3i/%i) %s %s" %(tests, totalTests, case, description) # print " %scwm %s giving %s" %(inputDocument, case) assert case and description and inputDocument and outputDocument # cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e '/^#/d' -e '/^ *$/d'""" % ( # WD, REFWD) execute("""%s %s --quiet --rdf=RT %s --ntriples > ,temp/%s""" % (python_command, cwm_command, inputDocument, case)) if rdfcompare3(case, localize(outputDocument)): problem(" from positive parser test %s running\n\tcwm %s\n" %( case, inputDocument)) passes = passes + 1 for u, case, description, inputDocument in RDFNegativeTestData: tests = tests + 1 if tests < start: continue print "%3i/%i) %s %s" %(tests, totalTests, case, description) # print " %scwm %s giving %s" %(inputDocument, case) assert case and description and inputDocument # cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e '/^#/d' -e '/^ *$/d'""" % ( # WD, REFWD) try: execute("""%s %s --quiet --rdf=RT %s --ntriples > ,temp/%s 2>/dev/null""" % (python_command, cwm_command, inputDocument, case)) except: pass else: problem("""I didn't get a parse error running python %s --quiet --rdf=RT %s --ntriples > ,temp/%s from test ^=%s I should have. """ % (cwm_command, inputDocument, case, u)) passes = passes + 1 for u, case, description, inputDocument in n3PositiveTestData: tests = tests + 1 if tests < start: continue print "%3i/%i) %s %s" %(tests, totalTests, case, description) # print " %scwm %s giving %s" %(inputDocument, case) assert case and description and inputDocument # cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e '/^#/d' -e '/^ *$/d'""" % ( # WD, REFWD) try: execute("""%s %s --grammar=../grammar/n3-selectors.n3 --as=http://www.w3.org/2000/10/swap/grammar/n3#document --parse=%s > ,temp/%s 2>/dev/null""" % (python_command, '../grammar/predictiveParser.py', inputDocument, case)) except RuntimeError: problem("""Error running ``python %s --grammar=../grammar/n3-selectors.n3 --as=http://www.w3.org/2000/10/swap/grammar/n3#document --parse=%s > ,temp/%s 2>/dev/null''""" % ('../grammar/predictiveParser.py', inputDocument, case)) passes = passes + 1 for u, case, description, inputDocument in n3NegativeTestData: tests = tests + 1 if tests < start: continue print "%3i/%i) %s %s" %(tests, totalTests, case, description) # print " %scwm %s giving %s" %(inputDocument, case) assert case and description and inputDocument # cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e '/^#/d' -e '/^ *$/d'""" % ( # WD, REFWD) try: execute("""%s %s ../grammar/n3-selectors.n3 http://www.w3.org/2000/10/swap/grammar/n3#document %s > ,temp/%s 2>/dev/null""" % (python_command, '../grammar/predictiveParser.py', inputDocument, case)) except: pass else: problem("""There was no error executing ``python %s --grammar=../grammar/n3-selectors.n3 --as=http://www.w3.org/2000/10/swap/grammar/n3#document --parse=%s > ,temp/%s'' There should have been one.""" % ('../grammar/predictiveParser.py', inputDocument, case)) passes = passes + 1 timeMatcher = re.compile(r'\t([0-9]+)m([0-9]+)\.([0-9]+)s') ## from test.pystone import pystones ## pyStoneTime = pystones()[1] for u, theTime, description, env, arguments in perfData: tests = tests + 1 if tests < start: continue urel = refTo(base(), u) print "%3i/%i %-30s %s" %(tests, totalTests, urel, description) tt = os.times()[-1] a = system("""%s %s %s --quiet %s >,time.out""" % (env, python_command, cwm_command, arguments)) userTime = os.times()[-1] - tt print """%spython %s --quiet %s 2>,time.out""" % \ (env, cwm_command, arguments) ## c = file(',time.out', 'r') ## timeOutput = c.read() ## c.close() ## timeList = [timeMatcher.search(b).groups() for b in timeOutput.split('\n') if timeMatcher.search(b) is not None] ## print timeList ## userTimeStr = timeList[1] ## userTime = int(userTimeStr[0])*60 + float(userTimeStr[1] + '.' + userTimeStr[2]) pyCount = pyStoneTime * userTime print pyCount if problems != []: sys.stderr.write("\nProblems:\n") for s in problems: sys.stderr.write(" " + s + "\n") raise RuntimeError("Total %i errors in %i tests." % (len(problems), tests))
from swap import diag from swap import uripath ### I used to have a main() function ### But that made the stack one longer ### Which changed the progress() output if __name__ == '__main__': diag.print_all_file_names = 1 import os import sys if False and len(sys.argv) > 1 and sys.argv[1] == 'delta': from delta import main sys.argv = sys.argv[:1] + sys.argv[2:] main() else: from cwm import doCommand sys.argv[0] = '../cwm.py' doCommand() file_list = diag.file_list file_list = [a for a in file_list if a[0:4] == 'file'] base = uripath.base() file_list = [uripath.refTo(base, a) for a in file_list] try: a = file('testfilelist', 'a') a.write('\n'.join(file_list)) a.write('\n') finally: a.close()
def main(): global verbose, proofs, chatty, normal, no_action start = 1 cwm_command = '../cwm.py' python_command = 'python -tt' global ploughOn # even if error ploughOn = 0 global verbose verbose = 0 global just_fix_it just_fix_it = 0 if diag.print_all_file_names: a = file('testfilelist', 'w') a.write('') a.close() try: opts, testFiles = getopt.getopt(sys.argv[1:], "h?s:nNcipf:v", [ "help", "start=", "testsFrom=", "no-action", "No-normal", "chatty", "ignoreErrors", "proofs", "verbose", "overwrite", "cwm=" ]) except getopt.GetoptError: # print help information and exit: usage() sys.exit(2) output = None for o, a in opts: if o in ("-h", "-?", "--help"): usage() sys.exit() if o in ("-v", "--verbose"): verbose = 1 if o in ("-i", "--ignoreErrors"): ploughOn = 1 if o in ("-s", "--start"): start = int(a) if o in ("-f", "--testsFrom"): testFiles.append(a) if o in ("-n", "--no-action"): no_action = 1 if o in ("-N", "--No-normal"): normal = 0 if o in ("-c", "--chatty"): chatty = 1 if o in ("-p", "--proofs"): proofs = 1 if o in ("--overwrite", ): just_fix_it = 1 if o in ("--cwm", "--the_end"): cwm_command = a assert system("mkdir -p ,temp") == 0 assert system("mkdir -p ,diffs") == 0 if proofs: assert system("mkdir -p ,proofs") == 0 tests = 0 passes = 0 global problems problems = [] REFWD = "http://example.com/swap/test" WD = base()[:-1] #def basicTest(case, desc, args) if verbose: progress("Test files:", testFiles) kb = loadMany(testFiles, referer="") testData = [] RDFTestData = [] RDFNegativeTestData = [] perfData = [] n3PositiveTestData = [] n3NegativeTestData = [] sparqlTestData = [] # for fn in testFiles: # print "Loading tests from", fn # kb=load(fn) for t in kb.each(pred=rdf.type, obj=test.CwmTest): verboseDebug = kb.contains(subj=t, pred=rdf.type, obj=test.VerboseTest) u = t.uriref() ref = kb.the(t, test.referenceOutput) if ref == None: case = str(kb.the(t, test.shortFileName)) refFile = "ref/%s" % case else: refFile = refTo(base(), ref.uriref()) case = "" for ch in refFile: if ch in "/#": case += "_" else: case += ch # Make up test-unique temp filename
perfTests = len(perfData) n3PositiveTestData.sort() n3PositiveTests = len(n3PositiveTestData) n3NegativeTestData.sort() n3NegativeTests = len(n3NegativeTestData) sparqlTestData.sort() sparqlTests = len(sparqlTestData) totalTests = cwmTests + rdfTests + rdfNegativeTests + sparqlTests \ + perfTests + n3PositiveTests + n3NegativeTests if verbose: print "RDF parser tests: %i" % rdfTests for t, u, case, refFile, description, env, arguments, verboseDebug in testData: tests = tests + 1 if tests < start: continue urel = refTo(base(), u) print "%3i/%i %-30s %s" % (tests, totalTests, urel, description) # print " %scwm %s giving %s" %(arguments, case) assert case and description and arguments cleanup = """sed -e 's/\$[I]d.*\$//g' -e "s;%s;%s;g" -e '/@prefix run/d' -e 's;%s;%s;g'""" % ( WD, REFWD, cwm_command, '../cwm.py') if normal: execute( """CWM_RUN_NS="run#" %s %s %s --quiet %s | %s > ,temp/%s""" % (env, python_command, cwm_command, arguments, cleanup, case)) if diff(case, refFile): problem("######### from normal case %s: %scwm %s" % (case, env, arguments)) continue