Skip to content

Parser crashes on CircleCI config #577

@svandiekendialpad

Description

@svandiekendialpad

v 0.33.1 and 0.33.2 crash when trying to parse my CircleCI config (which unfortunately I cannot share).
As far as I can tell there isn't even a way to infer which line it is crashing on, right?
I believe this is an issue with check-jsonschema or one of its dependencies because CircleCI's config validator (https://circleci.com/docs/local-cli/) accepts my config as valid and it is running in CircleCI just fine.

> pre-commit run check-circle-ci --all
Validate CircleCI config.................................................Failed
- hook id: check-circle-ci
- exit code: 1

Traceback (most recent call last):
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/bin/check-jsonschema", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/click/core.py", line 1442, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/click/core.py", line 1363, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/click/core.py", line 1226, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/click/core.py", line 794, in invoke
    return callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/check_jsonschema/cli/main_command.py", line 293, in main
    execute(args)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/check_jsonschema/cli/main_command.py", line 348, in execute
    ret = checker.run()
          ^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/check_jsonschema/checker.py", line 99, in run
    self._run()
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/check_jsonschema/checker.py", line 85, in _run
    result = self._build_result()
             ^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/check_jsonschema/checker.py", line 76, in _build_result
    for err in validator.iter_errors(data):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 384, in iter_errors
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 275, in ref
    yield from validator._validate_reference(ref=ref, instance=instance)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 296, in properties
    yield from validator.descend(
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 44, in additionalProperties
    yield from validator.descend(instance[extra], aP, path=extra)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 355, in oneOf
    errs = list(validator.descend(instance, subschema, schema_path=index))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 296, in properties
    yield from validator.descend(
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_legacy_keywords.py", line 135, in items_draft6_draft7_draft201909
    yield from validator.descend(item, items, path=index)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 275, in ref
    yield from validator._validate_reference(ref=ref, instance=instance)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 355, in oneOf
    errs = list(validator.descend(instance, subschema, schema_path=index))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 33, in propertyNames
    yield from validator.descend(instance=property, schema=propertyNames)
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/validators.py", line 432, in descend
    for error in errors:
                 ^^^^^^
  File "/Users/svandieken/.cache/pre-commit/repoz7caoob1/py_env-python3.12/lib/python3.12/site-packages/jsonschema/_keywords.py", line 218, in pattern
    and not re.search(patrn, instance)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/__init__.py", line 177, in search
    return _compile(pattern, flags).search(string)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/__init__.py", line 307, in _compile
    p = _compiler.compile(pattern, flags)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/_compiler.py", line 750, in compile
    p = _parser.parse(p, flags)
        ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/_parser.py", line 979, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/_parser.py", line 460, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/re/_parser.py", line 612, in _parse
    raise source.error(msg, len(this) + 1 + len(that))
re.error: bad character range \d-/ at position 10

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions