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 |
|
|
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 |
|
|
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 |
|
|
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 |
re |
|
|
866 | return | |
|
867 | result('f', (test, msg)) | |
|
855 | return 'p', test, '' | |
|
856 | return 'f', test, msg | |
|
868 | 857 | |
|
869 | 858 | def success(): |
|
870 |
re |
|
|
859 | return 'p', test, '' | |
|
871 | 860 | |
|
872 | 861 | def ignore(msg): |
|
873 |
re |
|
|
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 |
|
|
|
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