Mercurial > hg
changeset 10300:c437745f50ec
run-tests: split tests/blacklist in tests/blacklists/*
Following discussions with Gilles Morris [1], it seems that it is preferable to
use several blacklist files in a blacklists/ directory. It is easier to add an
unversioned file for experiments than modifying a tracked file.
Also fall back to a simpler syntax, giving up ConfigParser, now that section
names are not needed anymore.
And allow --blacklist parameter to be a complete path, instead of only one
of the filenames contained in tests/blacklists/
[1] http://www.selenic.com/pipermail/mercurial-devel/2009-December/017317.html
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Thu, 10 Dec 2009 17:21:31 +0900 |
parents | e768941f14c1 |
children | 56b50194617f |
files | tests/blacklist tests/blacklists/README tests/blacklists/inotify-failures tests/run-tests.py |
diffstat | 4 files changed, 54 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/blacklist Sun Jan 31 18:02:16 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -# ConfigParser format -# Definitions of blacklists for run-tests.py -# -# Identify in config sections a list of tests you want to be skipped. -# Section names are meant to be used as targets for run-tests.py --blacklist -# option. -# "test-" prefixes should be omitted from test names. Values are not used. -# -# e.g. if your file looks like: -## [example] -## hgrc = -## help = "this string is not used" -# then calling "run-tests.py --blacklist example" will exclude test-hgrc and -# test-help from the list of tests to run. - -[inotify-failures] -# When --inotify is activated, help output and config changes: -debugcomplete = -empty = -fncache = -globalopts = -help = -hgrc = -inherit-mode = -qrecord = -strict = - -# --inotify activates de facto the inotify extension. It does not play well -# with inotify-specific tests, which activate/desactivate inotify at will: -inotify = -inotify-debuginotify = -inotify-dirty-dirstate = -inotify-issue1208 = -inotify-issue1371 = -inotify-issue1542 = -inotify-issue1556 = -inotify-lookup =
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/blacklists/README Thu Dec 10 17:21:31 2009 +0900 @@ -0,0 +1,14 @@ +Put here definitions of blacklists for run-tests.py + +Create a file per blacklist. Each file should list the names of tests that you +want to be skipped. +File names are meant to be used as targets for run-tests.py --blacklist +option. +Lines starting with # are ignored. White spaces are stripped. + +e.g. if you create a blacklist/example file containing: + test-hgrc + # some comment + test-help +then calling "run-tests.py --blacklist blacklists/example" will exclude +test-hgrc and test-help from the list of tests to run.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/blacklists/inotify-failures Thu Dec 10 17:21:31 2009 +0900 @@ -0,0 +1,21 @@ +# When --inotify is activated, help output and config changes: +test-debugcomplete +test-empty +test-fncache +test-globalopts +test-help +test-hgrc +test-inherit-mode +test-qrecord +test-strict + +# --inotify activates de facto the inotify extension. It does not play well +# with inotify-specific tests, which activate/desactivate inotify at will: +test-inotify +test-inotify-debuginotify +test-inotify-dirty-dirstate +test-inotify-issue1208 +test-inotify-issue1371 +test-inotify-issue1542 +test-inotify-issue1556 +test-inotify-lookup
--- a/tests/run-tests.py Sun Jan 31 18:02:16 2010 +0100 +++ b/tests/run-tests.py Thu Dec 10 17:21:31 2009 +0900 @@ -41,7 +41,6 @@ # completes fairly quickly, includes both shell and Python scripts, and # includes some scripts that run daemon processes.) -from ConfigParser import ConfigParser import difflib import errno import optparse @@ -134,8 +133,7 @@ parser.add_option("--inotify", action="store_true", help="enable inotify extension when running tests") parser.add_option("--blacklist", action="append", - help="skip tests listed in the specified section of " - "the blacklist file") + help="skip tests listed in the specified blacklist file") for option, default in defaults.items(): defaults[option] = int(os.environ.get(*default)) @@ -202,12 +200,22 @@ if sys.version_info[:2] < (2, 6) or sys.version_info[:2] >= (3, 0): parser.error('--py3k-warnings can only be used on Python 2.6+') if options.blacklist: - configparser = ConfigParser() - configparser.read("blacklist") blacklist = dict() - for section in options.blacklist: - for (item, value) in configparser.items(section): - blacklist["test-" + item] = section + for filename in options.blacklist: + try: + path = os.path.expanduser(os.path.expandvars(filename)) + f = open(path, "r") + except IOError, err: + if err.errno != errno.ENOENT: + raise + print "warning: no such blacklist file: %s" % filename + continue + + for line in f.readlines(): + line = line.strip() + if line and not line.startswith('#'): + blacklist[line] = filename + options.blacklist = blacklist return (options, args) @@ -744,9 +752,9 @@ for test in tests: if options.blacklist: - section = options.blacklist.get(test) - if section is not None: - skips.append((test, "blacklisted (%s section)" % section)) + filename = options.blacklist.get(test) + if filename is not None: + skips.append((test, "blacklisted (%s)" % filename)) skipped += 1 continue