##// END OF EJS Templates
run-tests: change return code of runone
Matt Mackall -
r19248:6a127fa5 default
parent child Browse files
Show More
@@ -825,26 +825,16 b' def run(cmd, wd, options, replacements):'
825 825 return ret, output.splitlines(True)
826 826
827 827 def runone(options, test):
828 '''tristate output:
829 None -> skipped
830 True -> passed
831 False -> failed'''
828 '''returns a result element: (code, test, msg)'''
832 829
833 global results, resultslock, iolock
834
835 def result(l, e):
836 resultslock.acquire()
837 results[l].append(e)
838 resultslock.release()
830 global iolock
839 831
840 832 def skip(msg):
841 if not options.verbose:
842 result('s', (test, msg))
843 else:
833 if options.verbose:
844 834 iolock.acquire()
845 835 print "\nSkipping %s: %s" % (testpath, msg)
846 836 iolock.release()
847 return None
837 return 's', test, msg
848 838
849 839 def fail(msg, ret):
850 840 if not options.nodiff:
@@ -862,15 +852,14 b' def runone(options, test):'
862 852 rename(testpath + ".err", testpath)
863 853 else:
864 854 rename(testpath + ".err", testpath + ".out")
865 result('p', test)
866 return
867 result('f', (test, msg))
855 return 'p', test, ''
856 return 'f', test, msg
868 857
869 858 def success():
870 result('p', test)
859 return 'p', test, ''
871 860
872 861 def ignore(msg):
873 result('i', (test, msg))
862 return 'i', test, msg
874 863
875 864 def describe(ret):
876 865 if ret < 0:
@@ -882,13 +871,11 b' def runone(options, test):'
882 871 lctest = test.lower()
883 872
884 873 if not os.path.exists(testpath):
885 skip("doesn't exist")
886 return None
874 return skip("doesn't exist")
887 875
888 876 if not (options.whitelisted and test in options.whitelisted):
889 877 if options.blacklist and test in options.blacklist:
890 skip("blacklisted")
891 return None
878 return skip("blacklisted")
892 879
893 880 if options.retest and not os.path.exists(test + ".err"):
894 881 ignore("not retesting")
@@ -982,13 +969,13 b' def runone(options, test):'
982 969 if not missing:
983 970 missing = ['irrelevant']
984 971 if failed:
985 fail("hghave failed checking for %s" % failed[-1], ret)
972 result = fail("hghave failed checking for %s" % failed[-1], ret)
986 973 skipped = False
987 974 else:
988 skip(missing[-1])
975 result = skip(missing[-1])
989 976 elif ret == 'timeout':
990 977 mark = 't'
991 fail("timed out", ret)
978 result = fail("timed out", ret)
992 979 elif out != refout:
993 980 mark = '!'
994 981 if not options.nodiff:
@@ -999,15 +986,14 b' def runone(options, test):'
999 986 showdiff(refout, out, ref, err)
1000 987 iolock.release()
1001 988 if ret:
1002 fail("output changed and " + describe(ret), ret)
989 result = fail("output changed and " + describe(ret), ret)
1003 990 else:
1004 fail("output changed", ret)
1005 ret = 1
991 result = fail("output changed", ret)
1006 992 elif ret:
1007 993 mark = '!'
1008 fail(describe(ret), ret)
994 result = fail(describe(ret), ret)
1009 995 else:
1010 success()
996 result = success()
1011 997
1012 998 if not options.verbose:
1013 999 iolock.acquire()
@@ -1017,9 +1003,7 b' def runone(options, test):'
1017 1003
1018 1004 if not options.keep_tmpdir:
1019 1005 shutil.rmtree(testtmp, True)
1020 if skipped:
1021 return None
1022 return ret == 0
1006 return result
1023 1007
1024 1008 _hgpath = None
1025 1009
@@ -1169,9 +1153,15 b' times = []'
1169 1153 iolock = threading.Lock()
1170 1154
1171 1155 def runqueue(options, tests):
1156 global results, resultslock
1157
1172 1158 for test in tests:
1173 ret = runone(options, test)
1174 if options.first and ret is not None and not ret:
1159 code, test, msg = runone(options, test)
1160 resultslock.acquire()
1161 results[code].append((test, msg))
1162 resultslock.release()
1163
1164 if options.first and code not in '.si':
1175 1165 break
1176 1166
1177 1167 def runtests(options, tests):
General Comments 0
You need to be logged in to leave comments. Login now