aboutcode-org / pip-requirements-parser

a mostly correct pip requirements parsing library
MIT License
20 stars 9 forks source link

Failures in test_requirements_file.py #22

Open eclipseo opened 1 year ago

eclipseo commented 1 year ago

Environment:

It seems some error messages changed, which make the comparison fail for the following tests:

test_RequirementsFile_to_dict test_RequirementsFile_dumps_unparse

=================================== FAILURES ===================================
_ test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/requirements_parser_reqfiles/fail_1.txt] _

test_file = '/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/requirements_parser_reqfiles/fail_1.txt'
regen = False

    @pytest.mark.parametrize("test_file", ALL_REQFILES)
    def test_RequirementsFile_to_dict(
        test_file: str,
        regen=False,
    ) -> None:

        expected_file = test_file + "-expected.json"
        results = pip_requirements_parser.RequirementsFile.from_file(test_file).to_dict()
        if regen:
            with open (expected_file, 'w') as outp:
                json.dump(results, outp, indent=2)
            expected = results
        else:
            with open (expected_file) as inp:
                expected = json.load(inp)

>       assert results == expected
E       AssertionError: assert {'comments': ...irements': []} == {'comments': ...irements': []}
E         Omitting 3 identical items, use -vv to show
E         Differing items:
E         {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected end or semicolon (after name and no valid versio...on (after name and no valid version specifier)\n    test=>1.2.0\n        ^', 'line': 'test=>1.2.0', 'line_number': 2}]} != {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected version after operator\n    test>>1.2.0\n       ...on (after name and no valid version specifier)\n    test=>1.2.0\n        ^', 'line': 'test=>1.2.0', 'line_number': 2}]}
E         Use -v to get more diff

tests/test_requirements_parser.py:74: AssertionError
_ test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt] _

test_file = Path('/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt')
regen = False

    @pytest.mark.parametrize("test_file", all_test_requirements_files)
    def test_RequirementsFile_to_dict(
        test_file: str,
        regen=False,
    ) -> None:

        expected_file = test_file + "-expected.json"
        results = pip_requirements_parser.RequirementsFile.from_file(test_file).to_dict()
        if regen:
            with open (expected_file, 'w') as outp:
                json.dump(results, outp, indent=2)
            expected = results
        else:
            with open (expected_file) as inp:
                expected = json.load(inp)

>       assert results == expected
E       AssertionError: assert {'comments': ...], ...}, ...]} == {'comments': ...], ...}, ...]}
E         Omitting 3 identical items, use -vv to show
E         Differing items:
E         {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected end or semicolon (after name and no valid version specifier)\n    fabric==dev\n          ^', 'line': 'fabric==dev', 'line_number': 4}]} != {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected version after operator\n    fabric==dev\n            ^', 'line': 'fabric==dev', 'line_number': 4}]}
E         Use -v to get more diff

tests/pip_requirements_parser_tests/test_requirements_file.py:38: AssertionError
_ test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt] _

test_file = Path('/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt')
regen = False

    @pytest.mark.parametrize("test_file", all_test_requirements_files)
    def test_RequirementsFile_to_dict(
        test_file: str,
        regen=False,
    ) -> None:

        expected_file = test_file + "-expected.json"
        results = pip_requirements_parser.RequirementsFile.from_file(test_file).to_dict()
        if regen:
            with open (expected_file, 'w') as outp:
                json.dump(results, outp, indent=2)
            expected = results
        else:
            with open (expected_file) as inp:
                expected = json.load(inp)

>       assert results == expected
E       AssertionError: assert {'comments': ...irements': []} == {'comments': ...irements': []}
E         Omitting 3 identical items, use -vv to show
E         Differing items:
E         {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected end or semicolon (after name and no valid versio...on (after name and no valid version specifier)\n    test=>1.2.0\n        ^', 'line': 'test=>1.2.0', 'line_number': 2}]} != {'invalid_lines': [{'error_message': 'Invalid requirement: : Expected version after operator\n    test>>1.2.0\n       ...on (after name and no valid version specifier)\n    test=>1.2.0\n        ^', 'line': 'test=>1.2.0', 'line_number': 2}]}
E         Use -v to get more diff

tests/pip_requirements_parser_tests/test_requirements_file.py:38: AssertionError
_ test_RequirementsFile_dumps_unparse[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt] _

test_file = Path('/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt')
regen = False

    @pytest.mark.parametrize("test_file", all_test_requirements_files)
    def test_RequirementsFile_dumps_unparse(
        test_file: str,
        regen=False,
    ) -> None:

        dumped = pip_requirements_parser.RequirementsFile.from_file(test_file).dumps(
            preserve_one_empty_line=True,
        )

        expected_file = test_file + "-expected.dumps"

        if regen:
            with open(expected_file, "w") as out:
                out.write(dumped)
            expected = dumped
        else:
            with open(expected_file) as inp:
                expected = inp.read()

>       assert dumped == expected
E       AssertionError: assert 'xmlrpclib\nx...aven>=2.0.3\n' == 'xmlrpclib\nx...aven>=2.0.3\n'
E         Skipping 51 identical leading characters in diff, use -v to show
E         -  Expected version after operator
E         +  Expected end or semicolon (after name and no valid version specifier)
E               fabric==dev
E         -             ^
E         ? --
E         +           ^...
E         
E         ...Full output truncated (18 lines hidden), use '-vv' to show

tests/pip_requirements_parser_tests/test_requirements_file.py:61: AssertionError
_ test_RequirementsFile_dumps_unparse[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt] _

test_file = Path('/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt')
regen = False

    @pytest.mark.parametrize("test_file", all_test_requirements_files)
    def test_RequirementsFile_dumps_unparse(
        test_file: str,
        regen=False,
    ) -> None:

        dumped = pip_requirements_parser.RequirementsFile.from_file(test_file).dumps(
            preserve_one_empty_line=True,
        )

        expected_file = test_file + "-expected.dumps"

        if regen:
            with open(expected_file, "w") as out:
                out.write(dumped)
            expected = dumped
        else:
            with open(expected_file) as inp:
                expected = inp.read()

>       assert dumped == expected
E       AssertionError: assert '# Invalid re...test=>1.2.0\n' == '# Invalid re...test=>1.2.0\n'
E         - # Invalid requirement: : Expected version after operator
E         + # Invalid requirement: : Expected end or semicolon (after name and no valid version specifier)
E               test>>1.2.0
E         -          ^
E         ? -
E         +         ^
E           test>>1.2.0...
E         
E         ...Full output truncated (4 lines hidden), use '-vv' to show

tests/pip_requirements_parser_tests/test_requirements_file.py:61: AssertionError
=============================== warnings summary ===============================
tests/test_requirements_detector_parsing.py: 16 warnings
tests/pip_requirements_parser_tests/unit/test_utils_temp_dir.py: 18 warnings
  /builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/unit/misc.py:43: DeprecationWarning: onerror argument is deprecated, use onexc instead
    shutil.rmtree(directory, ignore_errors=ignore_errors, onerror=rmtree_errorhandler)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_requirements_parser.py::test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/requirements_parser_reqfiles/fail_1.txt]
FAILED tests/pip_requirements_parser_tests/test_requirements_file.py::test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt]
FAILED tests/pip_requirements_parser_tests/test_requirements_file.py::test_RequirementsFile_to_dict[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt]
FAILED tests/pip_requirements_parser_tests/test_requirements_file.py::test_RequirementsFile_dumps_unparse[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/more-requirements/nikdoof-test-auth-requirements.txt]
FAILED tests/pip_requirements_parser_tests/test_requirements_file.py::test_RequirementsFile_dumps_unparse[/builddir/build/BUILD/pip-requirements-parser-32.0.1/tests/pip_requirements_parser_tests/data/sc-requirements/invalid_spec-requirements.txt]
XFAIL tests/test_packaging_legacy_version.py::TestLegacyVersion::test_legacy_version_is_deprecated - We vendored packaging to reinstate LegacyVersion
====== 5 failed, 8265 passed, 5 skipped, 1 xfailed, 34 warnings in 11.69s ======