summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2017-02-26 20:17:00 +0000
committerEmil Velikov <[email protected]>2017-03-28 15:31:23 +0100
commit86a937d2644adcd724dae58c5212de5358326e9c (patch)
treede734b83e8bcd90b0ed5b790c0073aa8af3261ae
parenta7d9f0a361c4fd5d7e223cac61eca180c309cdc1 (diff)
glsl/tests/optimization-test: correctly manage srcdir/builddir
At the moment we look for generator script(s) in builddir while they are in srcdir, and we proceed to generate the tests and expected output in srcdir, which is not allowed. To untangle: - look for the generator script in the correct place - generate the files in builddir, by extending create_test_cases.py to use --outdir With this in place the test passes `make check' for OOT builds - would that be as standalone or part of `make distcheck' Signed-off-by: Emil Velikov <[email protected]> Acked-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
-rw-r--r--src/compiler/glsl/tests/lower_jumps/create_test_cases.py13
-rwxr-xr-xsrc/compiler/glsl/tests/optimization-test.sh10
2 files changed, 19 insertions, 4 deletions
diff --git a/src/compiler/glsl/tests/lower_jumps/create_test_cases.py b/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
index 3be1079bc14..defff2ed34f 100644
--- a/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
+++ b/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
@@ -21,6 +21,7 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
+import argparse
import os
import os.path
import re
@@ -30,6 +31,7 @@ import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # For access to sexps.py, which is in parent dir
from sexps import *
+outdir = "."
def make_test_case(f_name, ret_type, body):
"""Create a simple optimization test case consisting of a single
function with the given name, return type, and body.
@@ -289,14 +291,14 @@ def create_test_case(doc_string, input_sexp, expected_sexp, test_name,
pull_out_jumps, lower_sub_return, lower_main_return,
lower_continue, lower_break))
args = ['../../glsl_test', 'optpass', '--quiet', '--input-ir', optimization]
- test_file = '{0}.opt_test'.format(test_name)
+ test_file = os.path.join(outdir, '{0}.opt_test'.format(test_name))
with open(test_file, 'w') as f:
f.write('#!/usr/bin/env bash\n#\n# This file was generated by create_test_cases.py.\n#\n')
f.write(doc_string)
f.write('{0} <<EOF\n'.format(bash_quote(*args)))
f.write('{0}\nEOF\n'.format(input_str))
os.chmod(test_file, 0774)
- expected_file = '{0}.opt_test.expected'.format(test_name)
+ expected_file = os.path.join(outdir, '{0}.opt_test.expected'.format(test_name))
with open(expected_file, 'w') as f:
f.write('{0}\n'.format(expected_output))
@@ -623,6 +625,13 @@ def test_lower_return_non_void_at_end_of_loop():
lower_sub_return=True, lower_break=True)
if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--outdir',
+ help='Directory to put the generated files in',
+ required=True)
+ args = parser.parse_args()
+ outdir = args.outdir
+
test_lower_returns_main()
test_lower_returns_sub()
test_lower_returns_1()
diff --git a/src/compiler/glsl/tests/optimization-test.sh b/src/compiler/glsl/tests/optimization-test.sh
index 47970c6be29..1113cb1f17c 100755
--- a/src/compiler/glsl/tests/optimization-test.sh
+++ b/src/compiler/glsl/tests/optimization-test.sh
@@ -28,13 +28,19 @@ compare_ir=$srcdir/glsl/tests/compare_ir.py
total=0
pass=0
+# Store our location before we start diving into subdirectories.
+ORIGDIR=`pwd`
echo "====== Generating tests ======"
-for dir in tests/*/; do
+for dir in $srcdir/glsl/tests/*/; do
if [ -e "${dir}create_test_cases.py" ]; then
- cd $dir; $PYTHON2 create_test_cases.py; cd ..
+ # construct the correct builddir
+ completedir="$abs_builddir/glsl/tests/`echo ${dir} | sed 's|.*/glsl/tests/||g'`"
+ mkdir -p $completedir
+ cd $dir; $PYTHON2 create_test_cases.py --outdir $completedir; cd ..
fi
echo "$dir"
done
+cd "$ORIGDIR"
if [ ! -f "$compare_ir" ]; then
echo "Could not find compare_ir. Make sure that srcdir variable is correctly set."