| #!/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) |