Changeset - 0342c5b83e70
[Not reviewed]
0 1 0
Ben Sturmfels (bsturmfels) - 3 years ago 2022-02-04 08:11:54
ben@sturm.com.au
tests: Replace skipUnless with skipif.

The function skipUnless is available in `unittest`, but not `pytest`.
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
tests/test_pdfforms_fill.py
Show inline comments
...
 
@@ -252,130 +252,130 @@ def test_generate():
 
@pytest.mark.parametrize('options,value', [
 
    (['1'], True),
 
    (['1'], False),
 
    (['On', 'Off'], True),
 
    (['On', 'Off'], False),
 
])
 
def test_generate_checkbox_with_options(options, value):
 
    source = [{
 
        'fdf': {'name': 'cbox', 'type': 'Btn', 'options': options},
 
        'value': value,
 
    }]
 
    actual, errors = fillmod.generate_form(source)
 
    assert not errors
 
    assert actual[0]['V'].name == (options[0] if value else 'Off')
 

	
 
@pytest.mark.parametrize('yaml_type', [None, 'Ch', 'Sig'])
 
def test_generate_unsupported_field_type(yaml_type):
 
    source = [{
 
        'fdf': {'name': 'badtype', 'type': yaml_type},
 
        'value': 'unsupported type value',
 
    }]
 
    if yaml_type is None:
 
        del source[0]['fdf']['type']
 
    _, errors = fillmod.generate_form(source)
 
    error, = errors
 
    assert error.level >= logging.ERROR
 
    assert error.yaml_index == 0
 
    assert error.name == 'badtype'
 

	
 
def test_generate_invalid_field_type():
 
    source = [{
 
        'fdf': {'name': 'badtype', 'type': '<unknown>'},
 
        'value': 'unsupported type value',
 
    }]
 
    _, errors = fillmod.generate_form(source)
 
    assert errors
 
    found_msg = False
 
    for error in errors:
 
        assert error.level >= logging.ERROR
 
        assert error.yaml_index == 0
 
        assert error.name == 'badtype'
 
        found_msg = found_msg or '<unknown>' in error.errdesc
 
    assert found_msg, "no errors mentioned unknown field type"
 

	
 
@pytest.mark.parametrize('value', [True, False, [], {}])
 
def test_generate_unsupported_text_value(value):
 
    source = [{
 
        'fdf': {'name': 'badtext', 'type': 'Tx'},
 
        'value': value,
 
    }]
 
    _, errors = fillmod.generate_form(source)
 
    error, = errors
 
    assert error.level >= logging.ERROR
 
    assert error.yaml_index == 0
 
    assert error.name == 'badtext'
 

	
 
@pytest.mark.parametrize('value', ['', 'Off', 'Yes', [], {}])
 
def test_generate_unsupported_checkbox_value(value):
 
    source = [{
 
        'fdf': {'name': 'badbutton', 'type': 'Btn'},
 
        'value': value,
 
    }]
 
    _, errors = fillmod.generate_form(source)
 
    error, = errors
 
    assert error.level >= logging.ERROR
 
    assert error.yaml_index == 0
 
    assert error.name == 'badbutton'
 

	
 
def test_main_generate_fdf():
 
    arglist = ['--output-file=-', str(testutil.test_path('pdfforms/form1_fill.yml'))]
 
    stdout = io.BytesIO()
 
    stderr = io.StringIO()
 
    retcode = fillmod.main(arglist, stdout, stderr)
 
    assert retcode == 0
 
    assert not stderr.getvalue()
 
    patterns = iter(expected_re(p) for p in [
 
            b'/T (text1_0)',
 
            b'/V (text 1.0)',
 
            b'/T (button1_0)',
 
            b'/V /1',
 
            b'/T (text2_0)',
 
            b'/V (text 2.0)',
 
            b'/T (button2_1)',
 
            b'/V /2',
 
    ])
 
    pattern = next(patterns)
 
    stdout.seek(0)
 
    for line in stdout:
 
        if re.search(pattern, line):
 
            try:
 
                pattern = next(patterns)
 
            except StopIteration:
 
                break
 
    else:
 
        pytest.fail(f"pattern {pattern!r} not found in FDF output")
 

	
 
@pytest.mark.skipUnless(PDFTK, "need pdftk installed")
 
@pytest.mark.skipif(not PDFTK, reason="need pdftk installed")
 
@pytest.mark.xfail(reason="`pdftk fill_form` expects a full PDF")
 
def test_main_fill_pdf():
 
    arglist = [
 
        '--pdftk', PDFTK,
 
        '--output-file', '-',
 
        str(testutil.test_path('pdfforms/form1_fill.yml')),
 
        str(testutil.test_path('pdfforms/form1.fdf')),
 
    ]
 
    stdout = io.BytesIO()
 
    stderr = io.StringIO()
 
    retcode = fillmod.main(arglist, stdout, stderr)
 
    assert retcode == 0
 
    assert not stderr.getvalue()
 
    patterns = iter(expected_re(p) for p in [
 
            b'/T (text1_0)',
 
            b'/V (text 1.0)',
 
            b'/T (button1_0)',
 
            b'/V /1',
 
            b'/T (text2_0)',
 
            b'/V (text 2.0)',
 
            b'/T (button2_1)',
 
            b'/V /2',
 
    ])
 
    pattern = next(patterns)
 
    stdout.seek(0)
 
    for line in stdout:
 
        if re.search(pattern, line):
 
            try:
 
                pattern = next(patterns)
 
            except StopIteration:
 
                break
 
    else:
 
        pytest.fail(f"pattern {pattern!r} not found in FDF output")
0 comments (0 inline, 0 general)