<!--
Copyright (c) 2019 The Khronos Group Inc.
Use of this source code is governed by an MIT-style license that can be
found in the LICENSE.txt file.
-->

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebGL GLSL Conformance Tests</title>
<link rel="stylesheet" href="../../../resources/js-test-style.css"/>
<link rel="stylesheet" href="../../../resources/glsl-feature-tests.css"/>
<script src="../../../js/js-test-pre.js"></script>
<script src="../../../js/webgl-test-utils.js"></script>
<script src="../../../js/glsl-conformance-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script id="fshaderWithErrorDirective" type="text/something-not-javascript">
#error testing123 testing123
void main()
{
    gl_FragColor = vec4(0,0,0,0);
}
</script>
<script>
"use strict";
description("Checks shader with error directive");

var wtu = WebGLTestUtils;
GLSLConformanceTester.runTests([
{ vShaderId: undefined,
  vShaderSuccess: true,
  fShaderId: 'fshaderWithErrorDirective',
  fShaderSuccess: false,
  // We can't test for the actual error message as
  // GLSL 1.0.17 11 says the messages are implementation dependant.
  //fShaderTest: (function() {
  //  return wtu.getLastError().indexOf("testing123 testing123") >= 0; }),
  linkSuccess: false,
  passMsg: "error directive causes error",
},
]);

debug("");
var successfullyParsed = true;
</script>
</body>
</html>
