code: def test_error(self):
      vert = """
          void main() {
              vec2 xy;
              error on this line
              vec2 ab;
          }
          """
      frag = "void main() { glFragColor = vec4(1, 1, 1, 1); }"
      with app.Canvas() as c:
          program = Program(vert, frag)
          try:
              program._glir.flush(c.context.shared.parser)
          except Exception as err:
              assert "error on this line" in str(err)
          else:
              raise Exception("Compile program should have failed.")
  
imports: import unittest
  import numpy
  from vispy import gloo, app
  from vispy.gloo.program import Program
  from vispy.testing import run_tests_if_main, requires_application
  from vispy.gloo.context import set_current_canvas, forget_canvas
label_desc: Use image node_id 3 for calling the ProgramTest obj's underlying member method code with example usage: obj.test_error() without return types