Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/glslc/test/messages_tests.py
1560 views
1
# Copyright 2015 The Shaderc Authors. All rights reserved.
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
# you may not use this file except in compliance with the License.
5
# You may obtain a copy of the License at
6
#
7
# http://www.apache.org/licenses/LICENSE-2.0
8
#
9
# Unless required by applicable law or agreed to in writing, software
10
# distributed under the License is distributed on an "AS IS" BASIS,
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
# See the License for the specific language governing permissions and
13
# limitations under the License.
14
15
import expect
16
from glslc_test_framework import inside_glslc_testsuite
17
from placeholder import FileShader, StdinShader
18
19
20
@inside_glslc_testsuite('ErrorMessages')
21
class MultipleErrors(expect.ErrorMessage):
22
"""Test Multiple error messages generated."""
23
shader = FileShader('#version 140\nint main() {}', '.vert')
24
glslc_args = ['-c', shader]
25
expected_error = [
26
shader, ":2: error: 'int' : entry point cannot return a value\n",
27
shader, ":2: error: '' : function does not return a value: main\n",
28
'2 errors generated.\n']
29
30
31
@inside_glslc_testsuite('ErrorMessages')
32
class OneError(expect.ErrorMessage):
33
"""Tests that only one error message is generated correctly."""
34
35
shader = FileShader(
36
"""#version 140
37
int a() {
38
}
39
void main() {
40
int x = a();
41
}
42
""", '.vert')
43
glslc_args = ['-c', shader]
44
45
expected_error = [
46
shader, ":2: error: '' : function does not return a value: a\n",
47
'1 error generated.\n']
48
49
50
@inside_glslc_testsuite('ErrorMessages')
51
class ManyLineError(expect.ErrorMessage):
52
"""Tests that only one error message is generated correctly."""
53
54
shader = FileShader(
55
"""#version 140
56
57
58
59
60
61
62
63
64
65
66
int a() {
67
}
68
void main() {
69
int x = a();
70
}
71
""", '.vert')
72
glslc_args = ['-c', shader]
73
74
expected_error = [
75
shader, ":12: error: '' : function does not return a value: a\n",
76
'1 error generated.\n']
77
78
@inside_glslc_testsuite('ErrorMessages')
79
class GlobalWarning(expect.WarningMessage):
80
"""Tests that a warning message without file/line number is emitted."""
81
82
shader = FileShader(
83
"""#version 550
84
void main() {
85
}
86
""", '.vert')
87
glslc_args = ['-c', '-std=400', shader]
88
89
expected_warning = [
90
shader, ': warning: (version, profile) forced to be (400, none),'
91
' while in source code it is (550, none)\n1 warning generated.\n']
92
93
@inside_glslc_testsuite('ErrorMessages')
94
class SuppressedGlobalWarning(expect.SuccessfulReturn):
95
"""Tests that warning messages without file/line numbers are suppressed
96
with -w."""
97
98
shader = FileShader(
99
"""#version 550
100
void main() {
101
}
102
""", '.vert')
103
glslc_args = ['-c', '-std=400', shader, '-w']
104
105
106
@inside_glslc_testsuite('ErrorMessages')
107
class GlobalWarningAsError(expect.ErrorMessage):
108
"""Tests that with -Werror an error warning message without file/line
109
number is emitted instead of a warning."""
110
111
shader = FileShader(
112
"""#version 550
113
void main() {
114
}
115
""", '.vert')
116
glslc_args = ['-c', '-std=400', shader, '-Werror']
117
118
expected_error= [
119
shader, ': error: (version, profile) forced to be (400, none),'
120
' while in source code it is (550, none)\n1 error generated.\n']
121
122
@inside_glslc_testsuite('ErrorMessages')
123
class WarningOnLine(expect.WarningMessage):
124
"""Tests that a warning message with a file/line number is emitted."""
125
126
shader = FileShader(
127
"""#version 400
128
layout(location = 0) attribute float x;
129
void main() {
130
}
131
""", '.vert')
132
glslc_args = ['-c', shader]
133
134
expected_warning = [
135
shader, ':2: warning: attribute deprecated in version 130; ',
136
'may be removed in future release\n1 warning generated.\n']
137
138
@inside_glslc_testsuite('ErrorMessages')
139
class SuppressedWarningOnLine(expect.SuccessfulReturn):
140
"""Tests that a warning message with a file/line number is suppressed in the
141
presence of -w."""
142
143
shader = FileShader(
144
"""#version 400
145
layout(location = 0) attribute float x;
146
void main() {
147
}
148
""", '.vert')
149
glslc_args = ['-c', shader, '-w']
150
151
@inside_glslc_testsuite('ErrorMessages')
152
class WarningOnLineAsError(expect.ErrorMessage):
153
"""Tests that with -Werror an error message with a file/line
154
number is emitted instead of a warning."""
155
156
shader = FileShader(
157
"""#version 400
158
layout(location = 0) attribute float x;
159
void main() {
160
}
161
""", '.vert')
162
glslc_args = ['-c', shader, '-Werror']
163
164
expected_error = [
165
shader, ':2: error: attribute deprecated in version 130; ',
166
'may be removed in future release\n1 error generated.\n']
167
168
@inside_glslc_testsuite('ErrorMessages')
169
class WarningAndError(expect.ErrorMessage):
170
"""Tests that both warnings and errors are emitted together."""
171
172
shader = FileShader(
173
"""#version 400
174
layout(location = 0) attribute float x;
175
int main() {
176
}
177
""", '.vert')
178
glslc_args = ['-c', shader]
179
180
expected_error = [
181
shader, ':2: warning: attribute deprecated in version 130; ',
182
'may be removed in future release\n',
183
shader, ":3: error: 'int' : entry point cannot return a value\n",
184
shader, ":3: error: '' : function does not return a value: main\n",
185
'1 warning and 2 errors generated.\n']
186
187
@inside_glslc_testsuite('ErrorMessages')
188
class SuppressedWarningAndError(expect.ErrorMessage):
189
"""Tests that only warnings are suppressed in the presence of -w."""
190
191
shader = FileShader(
192
"""#version 400
193
layout(location = 0) attribute float x;
194
int main() {
195
}
196
""", '.vert')
197
glslc_args = ['-c', shader, '-w']
198
199
expected_error = [
200
shader, ":3: error: 'int' : entry point cannot return a value\n",
201
shader, ":3: error: '' : function does not return a value: main\n",
202
'2 errors generated.\n']
203
204
@inside_glslc_testsuite('ErrorMessages')
205
class WarningAsErrorAndError(expect.ErrorMessage):
206
"""Tests that with -Werror an warnings and errors are emitted as errors."""
207
208
shader = FileShader(
209
"""#version 400
210
layout(location = 0) attribute float x;
211
int main() {
212
}
213
""", '.vert')
214
glslc_args = ['-c', shader, '-Werror']
215
216
expected_error = [
217
shader, ':2: error: attribute deprecated in version 130; ',
218
'may be removed in future release\n',
219
shader, ":3: error: 'int' : entry point cannot return a value\n",
220
shader, ":3: error: '' : function does not return a value: main\n",
221
'3 errors generated.\n']
222
223
@inside_glslc_testsuite('ErrorMessages')
224
class StdinErrorMessages(expect.StdoutMatch, expect.StderrMatch):
225
"""Tests that error messages using input from stdin are correct."""
226
227
shader = StdinShader(
228
"""#version 140
229
int a() {
230
}
231
void main() {
232
int x = a();
233
}
234
""")
235
glslc_args = ['-c', '-fshader-stage=vertex', shader]
236
237
expected_stdout = ''
238
expected_stderr = [
239
"<stdin>:2: error: '' : function does not return a value: a\n",
240
'1 error generated.\n']
241
242
@inside_glslc_testsuite('ErrorMessages')
243
class WarningAsErrorMultipleFiles(expect.ErrorMessage):
244
"""Tests that with -Werror multiple files emit errors instead of warnings.
245
"""
246
247
shader = FileShader(
248
"""#version 400
249
layout(location = 0) attribute float x;
250
void main() {
251
}
252
""", '.vert')
253
254
shader2 = FileShader(
255
"""#version 550
256
void main() {
257
}
258
""", '.vert')
259
260
glslc_args = ['-c', '-std=400', shader, '-Werror', shader2]
261
262
expected_error = [
263
shader, ':2: error: attribute deprecated in version 130; ',
264
'may be removed in future release\n',
265
shader2, ': error: (version, profile) forced to be (400, none),'
266
' while in source code it is (550, none)\n',
267
'2 errors generated.\n']
268
269
270
@inside_glslc_testsuite('ErrorMessages')
271
class SuppressedWarningAsError(expect.SuccessfulReturn):
272
"""Tests that nothing is returned in the presence of -w -Werror."""
273
274
shader = FileShader(
275
"""#version 400
276
layout(location = 0) attribute float x;
277
void main() {
278
}
279
""", '.vert')
280
glslc_args = ['-c', shader, '-w', '-Werror']
281
282
@inside_glslc_testsuite('ErrorMessages')
283
class MultipleSuppressed(expect.SuccessfulReturn):
284
"""Tests that multiple -w arguments are supported."""
285
286
shader = FileShader(
287
"""#version 400
288
layout(location = 0) attribute float x;
289
void main() {
290
}
291
""", '.vert')
292
glslc_args = ['-w', '-c', shader, '-w', '-w', '-w']
293
294
@inside_glslc_testsuite('ErrorMessages')
295
class MultipleSuppressedFiles(expect.SuccessfulReturn):
296
"""Tests that -w suppresses warnings from all files."""
297
298
shader = FileShader(
299
"""#version 400
300
layout(location = 0) attribute float x;
301
void main() {
302
}
303
""", '.vert')
304
305
shader2 = FileShader(
306
"""#version 400
307
layout(location = 0) attribute float x;
308
void main() {
309
}
310
""", '.vert')
311
glslc_args = ['-w', '-c', shader, shader2]
312
313