text: #!/usr/bin/env python3
  
  import os
  
  import pytest
  from gql_checker import pylama_linter
  from tests.utils import extract_expected_errors
  
  
  def load_test_cases():
      base_path = os.path.dirname(__file__)
      test_case_path = os.path.join(base_path, "test_cases")
      test_case_files = os.listdir(test_case_path)
  
      test_cases = []
  
      for fname in test_case_files:
          if not fname.endswith(".py"):
              continue
  
          fullpath = os.path.join(test_case_path, fname)
          data = open(fullpath).read()
          codes, messages = extract_expected_errors(data)
          test_cases.append((fullpath, codes, messages))
  
      return test_cases
  
  
  @pytest.mark.parametrize(
      "filename, expected_codes, expected_messages", load_test_cases()
  )
  def test_expected_error(filename, expected_codes, expected_messages):
      checker = pylama_linter.Linter()
      assert checker.allow(filename)
  
      codes = []
      messages = []
  
      options = {"gql_introspection_schema": "./tests/introspection_schema.json"}
  
      for error in checker.run(filename, **options):
          codes.append(error["type"])
          messages.append(error["text"])
  
      assert codes == expected_codes
      assert set(messages) >= set(expected_messages)
  