summaryrefslogtreecommitdiffstats
path: root/test/RCS.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/RCS.py')
-rw-r--r--test/RCS.py46
1 files changed, 32 insertions, 14 deletions
diff --git a/test/RCS.py b/test/RCS.py
index 5237156..0dfc4bc 100644
--- a/test/RCS.py
+++ b/test/RCS.py
@@ -29,6 +29,7 @@ Test fetching source files from RCS.
"""
import os.path
+import stat
import TestSCons
@@ -44,7 +45,11 @@ if not ci:
print "Could not find `ci' command, skipping test(s)."
test.pass_test(1)
-# Test explicit checkouts from local RCS files
+def is_writable(file):
+ mode = os.stat(file)[stat.ST_MODE]
+ return mode & stat.S_IWUSR
+
+# Test explicit checkouts from local RCS files.
test.subdir('work1', ['work1', 'sub'])
for file in ['aaa.in', 'bbb.in', 'ccc.in']:
@@ -86,7 +91,7 @@ def cat(env, source, target):
f.write(open(src, "rb").read())
f.close()
env = Environment(BUILDERS={'Cat':Builder(action=cat)},
- RCSFLAGS='-q')
+ RCS_COFLAGS='-q')
env.Cat('aaa.out', 'aaa.in')
env.Cat('bbb.out', 'bbb.in')
env.Cat('ccc.out', 'ccc.in')
@@ -123,6 +128,12 @@ test.fail_test(test.read(['work1', 'all']) != "work1/aaa.in\nchecked-out work1/b
test.fail_test(test.read(['work1', 'sub', 'all']) != "work1/sub/ddd.in\nchecked-out work1/sub/eee.in\nwork1/sub/fff.in\n")
+test.fail_test(is_writable(test.workpath('work1', 'sub', 'SConscript')))
+test.fail_test(is_writable(test.workpath('work1', 'aaa.in')))
+test.fail_test(is_writable(test.workpath('work1', 'ccc.in')))
+test.fail_test(is_writable(test.workpath('work1', 'sub', 'ddd.in')))
+test.fail_test(is_writable(test.workpath('work1', 'sub', 'fff.in')))
+
# Test transparent RCS checkouts from an RCS subdirectory.
test.subdir('work2', ['work2', 'RCS'],
['work2', 'sub'], ['work2', 'sub', 'RCS'])
@@ -165,8 +176,8 @@ def cat(env, source, target):
for src in source:
f.write(open(src, "rb").read())
f.close()
-env = Environment(BUILDERS={'Cat':Builder(action=cat)},
- RCSFLAGS='-q')
+_default_env['RCS_COFLAGS'] = '-l'
+env = Environment(BUILDERS={'Cat':Builder(action=cat)})
env.Cat('aaa.out', 'aaa.in')
env.Cat('bbb.out', 'bbb.in')
env.Cat('ccc.out', 'ccc.in')
@@ -181,37 +192,37 @@ test.write(['work2', 'sub', 'eee.in'], "checked-out work2/sub/eee.in\n")
test.run(chdir = 'work2',
arguments = '.',
stdout = test.wrap_stdout(read_str = """\
-co sub/SConscript
+co -l sub/SConscript
""",
build_str = """\
-co aaa.in
+co -l aaa.in
cat("aaa.out", "aaa.in")
cat("bbb.out", "bbb.in")
-co ccc.in
+co -l ccc.in
cat("ccc.out", "ccc.in")
cat("all", ["aaa.out", "bbb.out", "ccc.out"])
-co sub/ddd.in
+co -l sub/ddd.in
cat("sub/ddd.out", "sub/ddd.in")
cat("sub/eee.out", "sub/eee.in")
-co sub/fff.in
+co -l sub/fff.in
cat("sub/fff.out", "sub/fff.in")
cat("sub/all", ["sub/ddd.out", "sub/eee.out", "sub/fff.out"])
"""),
stderr = """\
sub/RCS/SConscript,v --> sub/SConscript
-revision 1.1
+revision 1.1 (locked)
done
RCS/aaa.in,v --> aaa.in
-revision 1.1
+revision 1.1 (locked)
done
RCS/ccc.in,v --> ccc.in
-revision 1.1
+revision 1.1 (locked)
done
sub/RCS/ddd.in,v --> sub/ddd.in
-revision 1.1
+revision 1.1 (locked)
done
sub/RCS/fff.in,v --> sub/fff.in
-revision 1.1
+revision 1.1 (locked)
done
""")
@@ -219,4 +230,11 @@ test.fail_test(test.read(['work2', 'all']) != "work2/aaa.in\nchecked-out work2/b
test.fail_test(test.read(['work2', 'sub', 'all']) != "work2/sub/ddd.in\nchecked-out work2/sub/eee.in\nwork2/sub/fff.in\n")
+test.fail_test(not is_writable(test.workpath('work2', 'sub', 'SConscript')))
+test.fail_test(not is_writable(test.workpath('work2', 'aaa.in')))
+test.fail_test(not is_writable(test.workpath('work2', 'ccc.in')))
+test.fail_test(not is_writable(test.workpath('work2', 'sub', 'ddd.in')))
+test.fail_test(not is_writable(test.workpath('work2', 'sub', 'fff.in')))
+
+#
test.pass_test()