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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions