##// END OF EJS Templates
tests: only stat a test file if we don't already know its "cost"
Bryan O'Sullivan -
r27635:e9f099ed default
parent child Browse files
Show More
@@ -1845,18 +1845,24 b' class TestRunner(object):'
1845 b'gendoc': 100,
1845 b'gendoc': 100,
1846 b'contrib-perf': 200,
1846 b'contrib-perf': 200,
1847 }
1847 }
1848 perf = {}
1848 def sortkey(f):
1849 def sortkey(f):
1849 # run largest tests first, as they tend to take the longest
1850 # run largest tests first, as they tend to take the longest
1850 try:
1851 try:
1852 return perf[f]
1853 except KeyError:
1854 try:
1851 val = -os.stat(f).st_size
1855 val = -os.stat(f).st_size
1852 except OSError as e:
1856 except OSError as e:
1853 if e.errno != errno.ENOENT:
1857 if e.errno != errno.ENOENT:
1854 raise
1858 raise
1855 return -1e9 # file does not exist, tell early
1859 perf[f] = -1e9 # file does not exist, tell early
1860 return -1e9
1856 for kw, mul in slow.items():
1861 for kw, mul in slow.items():
1857 if kw in f:
1862 if kw in f:
1858 val *= mul
1863 val *= mul
1859 return val
1864 perf[f] = val
1865 return perf[f]
1860 tests.sort(key=sortkey)
1866 tests.sort(key=sortkey)
1861
1867
1862 self._testdir = osenvironb[b'TESTDIR'] = getattr(
1868 self._testdir = osenvironb[b'TESTDIR'] = getattr(
General Comments 0
You need to be logged in to leave comments. Login now