1fd4e5da5Sopenharmony_ci# Copyright (c) 2018 Google LLC
2fd4e5da5Sopenharmony_ci#
3fd4e5da5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
4fd4e5da5Sopenharmony_ci# you may not use this file except in compliance with the License.
5fd4e5da5Sopenharmony_ci# You may obtain a copy of the License at
6fd4e5da5Sopenharmony_ci#
7fd4e5da5Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
8fd4e5da5Sopenharmony_ci#
9fd4e5da5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
10fd4e5da5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
11fd4e5da5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fd4e5da5Sopenharmony_ci# See the License for the specific language governing permissions and
13fd4e5da5Sopenharmony_ci# limitations under the License.
14fd4e5da5Sopenharmony_ci
15fd4e5da5Sopenharmony_ciimport placeholder
16fd4e5da5Sopenharmony_ciimport expect
17fd4e5da5Sopenharmony_ciimport re
18fd4e5da5Sopenharmony_ci
19fd4e5da5Sopenharmony_cifrom spirv_test_framework import inside_spirv_testsuite
20fd4e5da5Sopenharmony_ci
21fd4e5da5Sopenharmony_ci
22fd4e5da5Sopenharmony_cidef empty_main_assembly():
23fd4e5da5Sopenharmony_ci  return """
24fd4e5da5Sopenharmony_ci         OpCapability Shader
25fd4e5da5Sopenharmony_ci         OpMemoryModel Logical GLSL450
26fd4e5da5Sopenharmony_ci         OpEntryPoint Vertex %4 "main"
27fd4e5da5Sopenharmony_ci         OpName %4 "main"
28fd4e5da5Sopenharmony_ci    %2 = OpTypeVoid
29fd4e5da5Sopenharmony_ci    %3 = OpTypeFunction %2
30fd4e5da5Sopenharmony_ci    %4 = OpFunction %2 None %3
31fd4e5da5Sopenharmony_ci    %5 = OpLabel
32fd4e5da5Sopenharmony_ci         OpReturn
33fd4e5da5Sopenharmony_ci         OpFunctionEnd"""
34fd4e5da5Sopenharmony_ci
35fd4e5da5Sopenharmony_ci
36fd4e5da5Sopenharmony_ci@inside_spirv_testsuite('SpirvOptConfigFile')
37fd4e5da5Sopenharmony_ciclass TestOconfigEmpty(expect.SuccessfulReturn):
38fd4e5da5Sopenharmony_ci  """Tests empty config files are accepted."""
39fd4e5da5Sopenharmony_ci
40fd4e5da5Sopenharmony_ci  shader = placeholder.FileSPIRVShader(empty_main_assembly(), '.spvasm')
41fd4e5da5Sopenharmony_ci  config = placeholder.ConfigFlagsFile('', '.cfg')
42fd4e5da5Sopenharmony_ci  spirv_args = [shader, '-o', placeholder.TempFileName('output.spv'), config]
43fd4e5da5Sopenharmony_ci
44fd4e5da5Sopenharmony_ci
45fd4e5da5Sopenharmony_ci@inside_spirv_testsuite('SpirvOptConfigFile')
46fd4e5da5Sopenharmony_ciclass TestOconfigComments(expect.SuccessfulReturn):
47fd4e5da5Sopenharmony_ci  """Tests empty config files are accepted.
48fd4e5da5Sopenharmony_ci
49fd4e5da5Sopenharmony_ci  https://github.com/KhronosGroup/SPIRV-Tools/issues/1778
50fd4e5da5Sopenharmony_ci  """
51fd4e5da5Sopenharmony_ci
52fd4e5da5Sopenharmony_ci  shader = placeholder.FileSPIRVShader(empty_main_assembly(), '.spvasm')
53fd4e5da5Sopenharmony_ci  config = placeholder.ConfigFlagsFile("""
54fd4e5da5Sopenharmony_ci# This is a comment.
55fd4e5da5Sopenharmony_ci-O
56fd4e5da5Sopenharmony_ci--loop-unroll
57fd4e5da5Sopenharmony_ci""", '.cfg')
58fd4e5da5Sopenharmony_ci  spirv_args = [shader, '-o', placeholder.TempFileName('output.spv'), config]
59fd4e5da5Sopenharmony_ci
60fd4e5da5Sopenharmony_ci@inside_spirv_testsuite('SpirvOptConfigFile')
61fd4e5da5Sopenharmony_ciclass TestOconfigComments(expect.SuccessfulReturn):
62fd4e5da5Sopenharmony_ci  """Tests empty config files are accepted.
63fd4e5da5Sopenharmony_ci
64fd4e5da5Sopenharmony_ci  https://github.com/KhronosGroup/SPIRV-Tools/issues/1778
65fd4e5da5Sopenharmony_ci  """
66fd4e5da5Sopenharmony_ci
67fd4e5da5Sopenharmony_ci  shader = placeholder.FileSPIRVShader(empty_main_assembly(), '.spvasm')
68fd4e5da5Sopenharmony_ci  config = placeholder.ConfigFlagsFile("""
69fd4e5da5Sopenharmony_ci# This is a comment.
70fd4e5da5Sopenharmony_ci-O
71fd4e5da5Sopenharmony_ci--relax-struct-store
72fd4e5da5Sopenharmony_ci""", '.cfg')
73fd4e5da5Sopenharmony_ci  spirv_args = [shader, '-o', placeholder.TempFileName('output.spv'), config]
74