Failures in test_requirements_file.py

オープン
#22 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
testing

調査の方向性

tests/test_requirements_parser.py::test_RequirementsFile_to_dict と tests/pip_requirements_parser_tests/test_requirements_file.py から始め、失敗している requirements fixture と、それらの -expected.json および -expected.dumps ファイルを調べます。Python 3.12 で影響を受けるテストを実行し、生成された無効な行のメッセージをチェックイン済みの期待値と比較します。影響を受けるテストが、無関係な動作を変更せずにパスすれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Environment:

  • Python 3.12.0rc1
  • Fedora Rawhide
  • pip-requirements-parser 32.0.1

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 ======
主要言語
Python
スター
20
フォーク
16
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

aboutcode-org/pip-requirements-parser のほかの issue

aboutcode-org/pip-requirements-parser の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。