First Commit
This commit is contained in:
348
3rdparty/shaderc/glslc/test/option_dash_E.py
vendored
Normal file
348
3rdparty/shaderc/glslc/test/option_dash_E.py
vendored
Normal file
@@ -0,0 +1,348 @@
|
||||
# Copyright 2015 The Shaderc Authors. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import expect
|
||||
from glslc_test_framework import inside_glslc_testsuite
|
||||
from placeholder import FileShader, StdinShader
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapENoDefs(expect.StdoutMatch):
|
||||
"""Tests -E without any defines."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){}', '.vert')
|
||||
expected_stdout = '#version 140\nvoid main() { }\n'
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEGlslFileAccepted(expect.StdoutMatch):
|
||||
"""Tests -E if we provide a .glsl file without an explicit stage."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){}', '.glsl')
|
||||
expected_stdout = '#version 140\nvoid main() { }\n'
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapESingleDefine(expect.StdoutMatch):
|
||||
"""Tests -E with command-line define."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){ int a = X; }', '.vert')
|
||||
expected_stdout = '#version 140\nvoid main() { int a = 4; }\n'
|
||||
glslc_args = ['-DX=4', '-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEExpansion(expect.StdoutMatch):
|
||||
"""Tests -E with macro expansion."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#define X 4
|
||||
void main() {
|
||||
int a = X;
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
|
||||
void main() {
|
||||
int a = 4;
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEFunctionMacro(expect.StdoutMatch):
|
||||
"""Tests -E with function-style macro expansion."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#define X(A) 4+A
|
||||
void main() {
|
||||
int a = X(1);
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
|
||||
void main() {
|
||||
int a = 4 + 1;
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEPragma(expect.StdoutMatch):
|
||||
"""Tests -E to make sure pragmas get retained."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#pragma optimize(off)
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
#pragma optimize(off)
|
||||
void main() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEExtension(expect.StdoutMatch):
|
||||
"""Tests -E to make sure extensions get retained."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#extension foo: require
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
#extension foo : require
|
||||
void main() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapELine(expect.StdoutMatch):
|
||||
"""Tests -E to make sure line numbers get retained."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#define X 4
|
||||
#line X
|
||||
|
||||
#line 2 3
|
||||
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
|
||||
#line 4
|
||||
|
||||
#line 2 3
|
||||
|
||||
void main() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEError(expect.ErrorMessage):
|
||||
"""Tests -E to make sure #errors get retained."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
#if 1
|
||||
#error This is an error
|
||||
#endif
|
||||
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
|
||||
expected_error = [
|
||||
shader, ':3: error: \'#error\' : This is an error\n',
|
||||
'1 error generated.\n']
|
||||
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEStdin(expect.StdoutMatch):
|
||||
"""Tests to make sure -E works with stdin."""
|
||||
|
||||
shader = StdinShader('''#version 140
|
||||
void main() {
|
||||
}
|
||||
''')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
void main() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', '-fshader-stage=vertex', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEStdinDoesNotRequireShaderStage(expect.StdoutMatch):
|
||||
"""Tests to make sure -E works with stdin even when no shader-stage
|
||||
is specified."""
|
||||
|
||||
shader = StdinShader('''#version 140
|
||||
void main() {
|
||||
}
|
||||
''')
|
||||
|
||||
expected_stdout = '''#version 140
|
||||
void main() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEMultipleFiles(expect.StdoutMatch):
|
||||
"""Tests to make sure -E works with multiple files."""
|
||||
|
||||
shader = StdinShader('''#version 140
|
||||
void main() {
|
||||
}
|
||||
''')
|
||||
shader2 = FileShader('''#version 140
|
||||
void function() {
|
||||
}
|
||||
''', '.vert')
|
||||
expected_stdout = '''#version 140
|
||||
void main() {
|
||||
}
|
||||
#version 140
|
||||
void function() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', '-fshader-stage=vertex', shader, shader2]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEMultipleFilesWithoutStage(expect.StdoutMatch):
|
||||
"""Tests to make sure -E works with multiple files even if we do not
|
||||
specify a stage."""
|
||||
|
||||
shader = StdinShader('''#version 140
|
||||
void main() {
|
||||
}
|
||||
''')
|
||||
shader2 = FileShader('''#version 140
|
||||
void function() {
|
||||
}
|
||||
''', '.glsl')
|
||||
expected_stdout = '''#version 140
|
||||
void main() {
|
||||
}
|
||||
#version 140
|
||||
void function() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', shader, shader2]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEOutputFile(expect.SuccessfulReturn, expect.ValidFileContents):
|
||||
"""Tests to make sure -E works with output files."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
void function() {
|
||||
}
|
||||
''', '.vert')
|
||||
expected_file_contents = '''#version 140
|
||||
void function() {
|
||||
}
|
||||
'''
|
||||
target_filename = 'foo'
|
||||
glslc_args = ['-E', shader, '-ofoo']
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEWithS(expect.StdoutMatch):
|
||||
"""Tests -E in the presence of -S."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){}', '.vert')
|
||||
expected_stdout = '#version 140\nvoid main() { }\n'
|
||||
glslc_args = ['-E', '-S', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestMultipileDashCapE(expect.StdoutMatch):
|
||||
"""Tests that using -E multiple times works."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){}', '.vert')
|
||||
expected_stdout = '#version 140\nvoid main() { }\n'
|
||||
glslc_args = ['-E', '-E', shader, '-E']
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEAfterFile(expect.StdoutMatch):
|
||||
"""Tests that using -E after the filename also works."""
|
||||
|
||||
shader = FileShader('#version 140\nvoid main(){}', '.vert')
|
||||
expected_stdout = '#version 140\nvoid main() { }\n'
|
||||
glslc_args = [shader, '-E']
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEWithDashC(expect.StdoutMatch):
|
||||
"""Tests to make sure -E works in the presence of -c."""
|
||||
|
||||
shader = FileShader('''#version 140
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
shader2 = FileShader('''#version 140
|
||||
void function() {
|
||||
}
|
||||
''', '.vert')
|
||||
expected_stdout = '''#version 140
|
||||
void main() {
|
||||
}
|
||||
#version 140
|
||||
void function() {
|
||||
}
|
||||
'''
|
||||
glslc_args = ['-E', '-c', shader, shader2]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEWithPPErrors(expect.ErrorMessage):
|
||||
"""Tests to make sure -E outputs error messages for preprocessing errors."""
|
||||
|
||||
shader = FileShader('''#version 310 es
|
||||
#extension s enable // missing :
|
||||
#defin A // Bad define
|
||||
#if X // In glsl X must be defined for X to work.
|
||||
// Lack of endif.
|
||||
void main() {
|
||||
}
|
||||
''', '.vert')
|
||||
expected_error = [
|
||||
shader, ':2: error: \'#extension\' : \':\' missing after extension',
|
||||
' name\n',
|
||||
shader, ':3: error: \'#\' : invalid directive: defin\n',
|
||||
shader, ':4: error: \'preprocessor evaluation\' : undefined macro in',
|
||||
' expression not allowed in es profile X\n',
|
||||
shader, ':8: error: \'\' : missing #endif\n',
|
||||
'4 errors generated.\n']
|
||||
glslc_args = ['-E', shader]
|
||||
|
||||
|
||||
@inside_glslc_testsuite('OptionCapE')
|
||||
class TestDashCapEStdinErrors(expect.ErrorMessage):
|
||||
"""Tests that -E outputs error messages correctly for stdin input."""
|
||||
|
||||
shader = StdinShader('''#version 310 es
|
||||
#extension s enable // missing :
|
||||
void main() {
|
||||
}
|
||||
''')
|
||||
expected_error = [
|
||||
'<stdin>:2: error: \'#extension\' : \':\' missing after extension',
|
||||
' name\n',
|
||||
'1 error generated.\n']
|
||||
glslc_args = ['-E', shader]
|
||||
Reference in New Issue
Block a user