Skip to content

[Bug]: TestSearch.test_chars_valid test failure #855

@Thermi

Description

@Thermi

Actual Behavior

Test failed

Expected Behavior

Test succeeds

Steps to Reproduce

Try to run the tests using ...

python3 -m venv --clear --system-site-packages testenv
testenv/bin/python3 -m installer dist/*.whl
testenv/bin/python3 -m pytest

OpenAPI Core Version

0.19.2

OpenAPI Core Integration

No integration

Affected Area(s)

testing

References

No response

Anything else we need to know?

Please let me know if I am doing anything drastically wrong here, but I expect this to just work. Any help is greatly appreciated. :)

The tests worked fine with 0.19.1, the code for building the package on Alpine (and running the test suite) is here: https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/testing/py3-openapi-core/APKBUILD

The test environment is a clean Alpine Linux docker container with these additional packages:

py3-isodate-pyc (0.6.1-r5)
py3-isodate (0.6.1-r5)
py3-more-itertools-pyc (10.2.0-r1)
py3-more-itertools (10.2.0-r1)
py3-openapi-spec-validator-pyc (0.7.1-r0)
py3-openapi-spec-validator (0.7.1-r0)
py3-jsonschema-path-pyc (0.3.2-r0)
py3-jsonschema-path (0.3.2-r0)
py3-pathable-pyc (0.4.3-r0)
py3-pathable (0.4.3-r0)
py3-openapi-schema-validator-pyc (0.6.2-r0)
py3-openapi-schema-validator (0.6.2-r0)
py3-jsonschema-pyc (4.22.0-r0)
py3-jsonschema (4.22.0-r0)
py3-jsonschema-specifications-pyc (2023.12.1-r1)
py3-jsonschema-specifications (2023.12.1-r1)
py3-referencing-pyc (0.35.1-r0)
py3-referencing (0.35.1-r0)
py3-rpds-py-pyc (0.18.1_git20240605-r0)
py3-rpds-py (0.18.1_git20240605-r0)
py3-rfc3339-validator-pyc (0.1.4-r0)
py3-rfc3339-validator (0.1.4-r0)
py3-six-pyc (1.16.0-r9)
py3-six (1.16.0-r9)
py3-lazy-object-proxy-pyc (1.10.0-r1)
py3-lazy-object-proxy (1.10.0-r1)
py3-parse-pyc (1.20.0-r1)
py3-parse (1.20.0-r1)
py3-gpep517-pyc (16-r0)
py3-gpep517 (16-r0)
py3-installer-pyc (0.7.0-r2)
py3-installer (0.7.0-r2)
py3-setuptools-pyc (70.0.0-r0)
py3-setuptools (70.0.0-r0)
py3-wheel-pyc (0.42.0-r1)
py3-wheel (0.42.0-r1)
py3-poetry-core-pyc (1.9.0-r0)
py3-poetry-core (1.9.0-r0)
py3-fastjsonschema-pyc (2.20.0-r0)
py3-fastjsonschema (2.20.0-r0)
py3-lark-parser-pyc (1.1.9-r1)
py3-lark-parser (1.1.9-r1)
py3-pytest-aiohttp-pyc (1.0.5-r3)
py3-pytest-aiohttp (1.0.5-r3)
py3-pytest-asyncio-pyc (0.23.6-r0)
py3-pytest-asyncio (0.23.6-r0)
py3-pytest-pyc (8.2.2-r0)
py3-pytest (8.2.2-r0)
py3-iniconfig-pyc (2.0.0-r1)
py3-iniconfig (2.0.0-r1)
py3-packaging-pyc (24.1-r0)
py3-packaging (24.1-r0)
py3-parsing-pyc (3.1.2-r1)
py3-parsing (3.1.2-r1)
py3-pluggy-pyc (1.5.0-r0)
py3-pluggy (1.5.0-r0)
py3-py-pyc (1.11.0-r3)
py3-py (1.11.0-r3)
py3-aiohttp-pyc (3.9.3-r1)
py3-aiohttp (3.9.3-r1)
py3-aiosignal-pyc (1.3.1-r3)
py3-aiosignal (1.3.1-r3)
py3-frozenlist-pyc (1.4.1-r1)
py3-frozenlist (1.4.1-r1)
py3-async-timeout-pyc (4.0.3-r1)
py3-async-timeout (4.0.3-r1)
py3-attrs-pyc (23.2.0-r1)
py3-attrs (23.2.0-r1)
py3-brotli-pyc (1.1.0-r2)
py3-brotli (1.1.0-r2)
py3-idna-ssl-pyc (1.1.0-r9)
py3-idna-ssl (1.1.0-r9)
py3-yarl-pyc (1.9.4-r1)
py3-yarl (1.9.4-r1)
py3-django-rest-framework-pyc (3.15.1-r2)
py3-django-rest-framework (3.15.1-r2)
py3-django-pyc (4.2.12-r0)
py3-django (4.2.12-r0)
py3-asgiref-pyc (3.8.1-r1)
py3-asgiref (3.8.1-r1)
py3-sqlparse-pyc (0.4.4-r2)
py3-sqlparse (0.4.4-r2)
tzdata (2024a-r1)
py3-tz-pyc (2024.1-r1)
py3-tz (2024.1-r1)
py3-fastapi-pyc (0.111.0-r0)
py3-fastapi (0.111.0-r0)
py3-pydantic-pyc (2.6.4-r1)
py3-pydantic (2.6.4-r1)
py3-annotated-types-pyc (0.7.0-r0)
py3-annotated-types (0.7.0-r0)
py3-pydantic-core-pyc (2.16.3-r1)
py3-pydantic-core (2.16.3-r1)
py3-typing-extensions-pyc (4.11.0-r1)
py3-typing-extensions (4.11.0-r1)
py3-flask-pyc (3.0.3-r0)
py3-flask (3.0.3-r0)
py3-blinker-pyc (1.7.0-r1)
py3-blinker (1.7.0-r1)
py3-click-pyc (8.1.7-r2)
py3-click (8.1.7-r2)
py3-itsdangerous-pyc (2.1.2-r4)
py3-itsdangerous (2.1.2-r4)
py3-jinja2-pyc (3.1.4-r0)
py3-jinja2 (3.1.4-r0)
py3-werkzeug-pyc (3.0.3-r0)
py3-werkzeug (3.0.3-r0)
py3-markupsafe-pyc (2.1.5-r1)
py3-markupsafe (2.1.5-r1)
py3-httpx-pyc (0.27.0-r1)
py3-httpx (0.27.0-r1)
py3-httpcore-pyc (1.0.4-r1)
py3-httpcore (1.0.4-r1)
py3-h11-pyc (0.14.0-r4)
py3-h11 (0.14.0-r4)
py3-multidict-pyc (6.0.5-r1)
py3-multidict (6.0.5-r1)
py3-responses-pyc (0.25.0-r1)
py3-responses (0.25.0-r1)
py3-toml-pyc (0.10.2-r7)
py3-toml (0.10.2-r7)
py3-yaml-pyc (6.0.1-r3)
py3-yaml (6.0.1-r3)
py3-starlette-pyc (0.37.2-r2)
py3-starlette (0.37.2-r2)
py3-anyio-pyc (4.3.0-r2)
py3-anyio (4.3.0-r2)
py3-sniffio-pyc (1.3.1-r1)
py3-sniffio (1.3.1-r1)
py3-curio-pyc (1.6-r2)
py3-curio (1.6-r2)
ccache (4.9.1-r0)
hiredis (1.2.0-r0)
yaml (0.2.5-r2)

Test output:

                                                                 
================================================================ FAILURES =================================================================
_________________________________________ TestSearch.test_chars_valid[/{test-id}/test-expected2] __________________________________________
                                                                     
self = <test_templating_util.TestSearch object at 0x7a1665bd8290>, path_pattern = '/{test-id}/test', expected = {'test-id': 'test'}
                                                                     
    @pytest.mark.parametrize(                                        
        "path_pattern,expected",                                     
        [                                                            
            ("/{test_id}/test", {"test_id": "test"}),
            ("/{test.id}/test", {"test.id": "test"}),
            ("/{test-id}/test", {"test-id": "test"}),
        ],                                                           
    )                                                                
    def test_chars_valid(self, path_pattern, expected):
        full_url_pattern = "/test/test"        
                                                                     
        result = search(path_pattern, full_url_pattern)
                                                                     
>       assert result.named == expected       
E       AttributeError: 'NoneType' object has no attribute 'named'
                                                                     
expected   = {'test-id': 'test'}                                     
full_url_pattern = '/test/test'                                      
path_pattern = '/{test-id}/test'                                     
result     = None                                                    
self       = <test_templating_util.TestSearch object at 0x7a1665bd8290>
                                                                     
tests/unit/templating/test_templating_util.py:40: AttributeError
-------------- generated xml file: /home/buildozer/aports/testing/py3-openapi-core/src/openapi-core-0.19.2/reports/junit.xml --------------
========================================================= short test summary info =========================================================
FAILED tests/unit/templating/test_templating_util.py::TestSearch::test_chars_valid[/{test-id}/test-expected2] - AttributeError: 'NoneType' 

Test is run like this:

        python3 -m venv --clear --system-site-packages testenv
        testenv/bin/python3 -m installer dist/*.whl
        testenv/bin/python3 -m pytest

Would you like to implement a fix?

No

Activity

p1c2u

p1c2u commented on Jun 22, 2024

@p1c2u
Collaborator

Hi @Thermi

thanks for the report. I think the problem is parse version, parse supports hyphens since version 1.20.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugIndicates an issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @p1c2u@Thermi

        Issue actions

          [Bug]: TestSearch.test_chars_valid test failure · Issue #855 · python-openapi/openapi-core