def test_validators_plist_ufo3_contents_success():
    lib_validator = plistvalidators.ContentsPlistValidator(
        ufo3_test_success_path, 3, ufo3_dir_list)

    xml_fail_list = lib_validator.run_xml_validation()
    ufolib_fail_list = lib_validator.run_ufolib_import_validation()

    assert isinstance(xml_fail_list, list)
    assert isinstance(ufolib_fail_list, list)
    assert len(xml_fail_list) == 0
    assert len(ufolib_fail_list) == 0
def test_validators_plist_ufo3_contents_missing_file_fail(capsys):
    contents_ufo_path = os.path.join(contents_test_dir_failpath,
                                     'UFO3-UnlistedGlifs.ufo')
    contents_validator = plistvalidators.ContentsPlistValidator(
        contents_ufo_path, 3, ufo3_dir_list)

    with pytest.raises(SystemExit) as pytest_wrapped_e:
        contents_validator.run_ufolib_import_validation()

    out, _ = capsys.readouterr()
    assert pytest_wrapped_e.type == SystemExit
    assert pytest_wrapped_e.value.code == 1
    assert 'rogue files not listed in contents.plist: a.001.glif' in out
def test_validators_plist_ufo3_contents_missing_file_fail():
    contents_ufo_path = os.path.join(contents_test_dir_failpath,
                                     'UFO3-MissingCont.ufo')
    contents_validator = plistvalidators.ContentsPlistValidator(
        contents_ufo_path, 3, ufo3_dir_list)

    xml_fail_list = contents_validator.run_xml_validation()
    ufolib_fail_list = contents_validator.run_ufolib_import_validation()

    assert isinstance(xml_fail_list, list)
    assert isinstance(ufolib_fail_list, list)
    assert len(xml_fail_list) == 0
    assert len(ufolib_fail_list) == 0
def test_validators_plist_ufo3_contents_ufolib_import_fail(capsys):
    contents_ufo_path = os.path.join(contents_test_dir_failpath,
                                     'UFO3-UFOlibError.ufo')
    contents_validator = plistvalidators.ContentsPlistValidator(
        contents_ufo_path, 3, ufo3_dir_list)

    with pytest.raises(SystemExit) as pytest_wrapped_e:
        fail_list = contents_validator.run_ufolib_import_validation()

        assert isinstance(fail_list, list)
        assert len(fail_list) == 1
        assert 'contents.plist' in fail_list[0].test_long_stdstream_string
    out, err = capsys.readouterr()
    assert pytest_wrapped_e.type == SystemExit
    assert pytest_wrapped_e.value.code == 1
    assert 'UFO3-UFOlibError.ufo' in out
    assert 'contents.plist' in out
def test_validators_plist_ufo2_contents_xml_fail(capsys):
    contents_ufo_path = os.path.join(contents_test_dir_failpath,
                                     'UFO2-XMLcont.ufo')
    contents_validator = plistvalidators.ContentsPlistValidator(
        contents_ufo_path, 2, ufo2_dir_list)

    with pytest.raises(SystemExit) as pytest_wrapped_e:
        xml_fail_list = contents_validator.run_xml_validation()

        assert isinstance(xml_fail_list, list)
        assert len(xml_fail_list) == 1
        assert 'contents.plist' in xml_fail_list[0].test_long_stdstream_string
    out, err = capsys.readouterr()
    assert pytest_wrapped_e.type == SystemExit
    assert pytest_wrapped_e.value.code == 1
    assert 'UFO2-XMLcont.ufo' in out
    assert 'contents.plist' in out