zaufi / pytest-matcher

A pytest plugin to match test output against patterns stored in files
https://pytest-matcher.readthedocs.io
2 stars 1 forks source link

Allow tests to be marked as requiring a system/platform/etc pattern file suffix #22

Closed zaufi closed 7 months ago

zaufi commented 7 months ago

I.e., in the situation when some (not all!) pattern files have some system-specific content (e.g., different EOL styles).

Smth like this:

def generic_test(capfd, expected_out):
    ...
    stdout, _ = capfd.readouterr()
    # Get content from `<base-dir>/.../generic_test.out`
    assert expected_out == stdout

@pytest.mark.expect_system_suffix
def system_specific_test(capfd, expected_out):
    ...
    stdout, _ = capfd.readouterr()
    # Get content from `<base-dir>/.../system_specific_test-Linux.out`
    assert expected_out == stdout
zaufi commented 7 months ago

Actually, it could be almost anything:

@pytest.mark.expect_suffix(
    suffix=platform.system()
  )
def system_specific_test(capfd, expected_out):
    ...
    stdout, _ = capfd.readouterr()
    # Get content from `<base-dir>/.../system_specific-Linux.out`
    assert expected_out == stdout

@pytest.mark.expect_suffix(
    suffix=f'py{sys.version_info.major}.{sys.version_info.minor}'
  )
def python_specific_test(capfd, expected_out):
    ...
    stdout, _ = capfd.readouterr()
    # Get content from `<base-dir>/.../python_specific_test-py3.12.out`
    assert expected_out == stdout
zaufi commented 7 months ago

@xymaxim Ping ;-)

xymaxim commented 7 months ago

I like how it's flexible!

zaufi commented 7 months ago

Implemented in PR #23