Failures in test_requirements_file.py
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con tests/test_requirements_parser.py::test_RequirementsFile_to_dict y tests/pip_requirements_parser_tests/test_requirements_file.py; después inspecciona los fixtures de requirements que fallan y sus archivos -expected.json y -expected.dumps. Ejecuta las pruebas afectadas con Python 3.12 y compara los mensajes de líneas no válidas generados con las expectativas incluidas en el repositorio; se considera terminado cuando las pruebas afectadas pasan sin cambiar el comportamiento no relacionado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 ======
- Lenguaje dominante
- Python
- Estrellas
- 20
- Forks
- 16
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aboutcode-org/pip-requirements-parser
-
Quadratic comment split on a requirements file line (pip_requirements_parser.py:1058)Posiblemente ocupada @Anurag-S1ngh la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aboutcode-org/pip-requirements-parser#30 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 60/100
-
Tests failures with packaging 26.0Posiblemente ocupada @s-t-e-v-e-n-k la tomó hace 269 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
aboutcode-org/pip-requirements-parser#26 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
Todos los issues de aboutcode-org/pip-requirements-parser
Issues similares
-
Context/namespace resources fail in-cluster: "Invalid kube-config file. No configuration found."Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
bug documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
awslabs/visual-asset-management-system#880 ·
Los mantenedores suelen responder en 1 día
-
netbox status: needs owner type: documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
netbox-community/netbox#23533 ·
Los mantenedores suelen responder en 1 día
-
app: scripts status: backlog type: documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
netbox-community/netbox-scripts#68 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
marin-community/marin#10765 ·
Los mantenedores suelen responder en 1 día