diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2018-04-04 11:28:07 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2018-05-01 14:32:34 -0700 |
commit | d42d909cd754d0e2c41eec60f3a1015f2d882b95 (patch) | |
tree | 931b85eee0b766ac064bcb441927058f8da07e8d | |
parent | 14d9de4d8b784ce7cd158b815cf9e55365b93c3a (diff) |
tests: Add script to find all hand written test files
Including asmparser, glslparser, shader, and program tests, which will
be used by cmake to regenerate the appropriate xml whenever a new test
is added.
Tested-by: Rafael Antognolli <rafael.antognolli@intel.com>
-rw-r--r-- | tests/find_static_tests.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/find_static_tests.py b/tests/find_static_tests.py new file mode 100644 index 000000000..215273159 --- /dev/null +++ b/tests/find_static_tests.py @@ -0,0 +1,74 @@ +# encoding=utf-8 +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Script that finds all static tests of one kind or another.""" + +from __future__ import ( + absolute_import, division, print_function, unicode_literals +) +import argparse +import io +import os + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('sourcedir') + parser.add_argument( + 'mode', + choices=['shader', 'glslparser', 'asmparser', 'program']) + parser.add_argument('output') + args = parser.parse_args() + + if args.mode == 'asmparser': + exts = ['.txt'] + directory = os.path.join(args.sourcedir, 'asmparsertest', 'shaders') + elif args.mode == 'glslparser': + exts = ['.frag', '.vert', '.goem', '.tess', 'tesc', '.comp'] + directory = args.sourcedir + elif args.mode == 'shader': + exts = ['.shader_test'] + directory = args.sourcedir + elif args.mode == 'program': + exts = ['.program_test'] + directory = args.sourcedir + + files = [] + for dirpath, _, filenames in os.walk(directory): + for filename in filenames: + if os.path.splitext(filename)[1] in exts: + files.append(os.path.join(dirpath, filename)) + + if os.path.exists(args.output): + with io.open(args.output, 'rt', encoding='utf-8') as f: + existing = f.read().rstrip().split('\n') + else: + existing = [] + + if sorted(files) != sorted(existing): + with io.open(args.output, 'wt', encoding='utf-8') as f: + for filename in files: + f.write(filename) + f.write('\n') + + +if __name__ == '__main__': + main() |