summaryrefslogtreecommitdiffstats
path: root/src/etc/generate-keyword-tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/etc/generate-keyword-tests.py')
-rwxr-xr-xsrc/etc/generate-keyword-tests.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/etc/generate-keyword-tests.py b/src/etc/generate-keyword-tests.py
new file mode 100755
index 000000000..77c3d2758
--- /dev/null
+++ b/src/etc/generate-keyword-tests.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+"""
+This script takes a list of keywords and generates a testcase, that checks
+if using the keyword as identifier fails, for every keyword. The generate
+test files are set read-only.
+Test for https://github.com/rust-lang/rust/issues/2275
+
+sample usage: src/etc/generate-keyword-tests.py as break
+"""
+
+import sys
+import os
+import stat
+
+
+template = """\
+// This file was auto-generated using 'src/etc/generate-keyword-tests.py %s'
+
+fn main() {
+ let %s = "foo"; //~ error: expected pattern, found keyword `%s`
+}
+"""
+
+test_dir = os.path.abspath(
+ os.path.join(os.path.dirname(__file__), '../test/ui/parser')
+)
+
+for kw in sys.argv[1:]:
+ test_file = os.path.join(test_dir, 'keyword-%s-as-identifier.rs' % kw)
+
+ # set write permission if file exists, so it can be changed
+ if os.path.exists(test_file):
+ os.chmod(test_file, stat.S_IWUSR)
+
+ with open(test_file, 'wt') as f:
+ f.write(template % (kw, kw, kw))
+
+ # mark file read-only
+ os.chmod(test_file, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)