# HG changeset patch # User Martin von Zweigbergk # Date 1413694808 25200 # Node ID 8c29000c4295a61217349a420772af589e60bcf6 # Parent 14c6aab35a395274cb4c8378bfc60e7156d4c2ce test-revert: simplify generation of files With the recent change in naming of the generated files, it becomes much easier to generate the files by iterating over all the possible states than over the state transitions. diff -r 14c6aab35a39 -r 8c29000c4295 tests/test-revert.t --- a/tests/test-revert.t Wed Nov 05 11:16:31 2014 -0600 +++ b/tests/test-revert.t Sat Oct 18 22:00:08 2014 -0700 @@ -427,59 +427,20 @@ > import sys > import os > - > # content of the file in "base" and "parent" - > # None means no file at all - > ctxcontent = { - > # clean: no change from base to parent - > 'clean': ['content1', 'content1'], - > # modified: file content change from base to parent - > 'modified': ['content1', 'content2'], - > # added: file is missing from base and added in parent - > 'added': [None, 'content2'], - > # removed: file exist in base but is removed from parent - > 'removed': ['content1', None], - > # file exist neither in base not in parent - > 'missing': [None, None], - > } - > - > # content of file in working copy - > wccontent = { - > # clean: wc content is the same as parent - > 'clean': (True, lambda cc: cc[1]), - > # revert: wc content is the same as base - > 'revert': (True, lambda cc: cc[0]), - > # wc: file exist with a content different from base and parent - > 'wc': (True, lambda cc: 'content3'), - > # deleted: file is recorded as tracked but missing - > # rely on file deletion outside of this script - > 'deleted': (True, lambda cc: None), - > } - > # untracked-X is a version of X where the file is not tracked (? unknown) - > wccontent['untracked-clean'] = (False, wccontent['clean'][1]) - > wccontent['untracked-deleted'] = (False, wccontent['deleted'][1]) - > wccontent['untracked-revert'] = (False, wccontent['revert'][1]) - > wccontent['untracked-wc'] = (False, wccontent['wc'][1]) - > > # build the combination of possible states > combination = [] - > for ctxkey, ctxvalue in ctxcontent.iteritems(): - > for wckey, (tracked, wcfunc) in wccontent.iteritems(): - > base, parent = ctxvalue - > if (base == parent and 'revert' in wckey): - > continue - > if not base and 'revert' in wckey: - > continue - > if not parent and 'deleted' in wckey: - > continue - > def statestring(content): - > return content is None and 'missing' or content - > wcc = wcfunc(ctxvalue) - > trackedstring = tracked and 'tracked' or 'untracked' - > filename = "%s_%s_%s-%s" % (statestring(base), - > statestring(parent), - > statestring(wcc), - > trackedstring) - > combination.append((filename, base, parent, wcc)) + > for base in [None, 'content1']: + > for parent in set([None, 'content2']) | set([base]): + > for wcc in set([None, 'content3']) | set([base, parent]): + > for tracked in (False, True): + > def statestring(content): + > return content is None and 'missing' or content + > trackedstring = tracked and 'tracked' or 'untracked' + > filename = "%s_%s_%s-%s" % (statestring(base), + > statestring(parent), + > statestring(wcc), + > trackedstring) + > combination.append((filename, base, parent, wcc)) > > # make sure we have stable output > combination.sort()