--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/generate-working-copy-states.py Mon Nov 03 16:27:01 2014 -0800
@@ -0,0 +1,50 @@
+# generate proper file state to test working copy behavior
+import sys
+import os
+
+# build the combination of possible states
+combination = []
+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()
+
+# retrieve the state we must generate
+target = sys.argv[1]
+
+# compute file content
+content = []
+for filename, base, parent, wcc in combination:
+ if target == 'filelist':
+ print filename
+ elif target == 'base':
+ content.append((filename, base))
+ elif target == 'parent':
+ content.append((filename, parent))
+ elif target == 'wc':
+ # Make sure there is content so the file gets written and can be
+ # tracked. It will be deleted outside of this script.
+ content.append((filename, wcc or 'TOBEDELETED'))
+ else:
+ print >> sys.stderr, "unknown target:", target
+ sys.exit(1)
+
+# write actual content
+for filename, data in content:
+ if data is not None:
+ f = open(filename, 'w')
+ f.write(data + '\n')
+ f.close()
+ elif os.path.exists(filename):
+ os.remove(filename)