diff options
Diffstat (limited to 'src/etc/generate-keyword-tests.py')
-rwxr-xr-x | src/etc/generate-keyword-tests.py | 40 |
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) |