Skip to content

Commit

Permalink
Merge pull request #87 from madig/contents-plist-use-right-exception
Browse files Browse the repository at this point in the history
Contents.plist: use right exception when missing
  • Loading branch information
chrissimpkins authored Dec 8, 2020
2 parents c81fe78 + 94d02fb commit eedf001
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 29 deletions.
38 changes: 19 additions & 19 deletions lib/ufolint/validators/plistvalidators.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,29 +289,29 @@ def run_ufolib_import_validation(self):
# glyphs_dir_list is a list of lists mapped to glyphs dir name,
# glyphs dir path
gs = GlyphSet(
str(rel_dir_path), ufoFormatVersion=self.ufoversion, validateRead=True
str(rel_dir_path),
ufoFormatVersion=self.ufoversion,
validateRead=True,
expectContentsFile=True,
) # test for raised exceptions
res.test_failed = False

# Check for unlisted files if contents.plist exists. It is mandated by
# the spec, but if it does not exist, glifLib will shrug and say the
# glyph set was empty.
if (rel_dir_path / self.testfile).exists():
files = set(gs.contents.values())
files.update(("contents.plist", "layerinfo.plist"))
files_actually = set(
str(p.relative_to(rel_dir_path))
for p in rel_dir_path.glob("**/*")
# Check for unlisted files.
files = set(gs.contents.values())
files.update(("contents.plist", "layerinfo.plist"))
files_actually = set(
str(p.relative_to(rel_dir_path))
for p in rel_dir_path.glob("**/*")
)
unlisted_files = files_actually - files
if unlisted_files:
res.test_failed = True
res.exit_failure = True # sacrilege
res.test_long_stdstream_string = (
f"{str(rel_dir_path)} contains rogue files not listed "
f"in contents.plist: {', '.join(unlisted_files)}"
)
unlisted_files = files_actually - files
if unlisted_files:
res.test_failed = True
res.exit_failure = True # sacrilege
res.test_long_stdstream_string = (
f"{str(rel_dir_path)} contains rogue files not listed "
f"in contents.plist: {', '.join(unlisted_files)}"
)
self.test_fail_list.append(res)
self.test_fail_list.append(res)

ss.stream_result(res)
except Exception as e:
Expand Down
28 changes: 18 additions & 10 deletions tests/test_validator_plist.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,30 +621,38 @@ def test_validators_plist_ufo3_contents_success():

# Fail tests

def test_validators_plist_ufo2_contents_missing_file_fail():
def test_validators_plist_ufo2_contents_missing_file_fail(capsys):
contents_ufo_path = os.path.join(contents_test_dir_failpath, 'UFO2-MissingCont.ufo')
contents_validator = plistvalidators.ContentsPlistValidator(contents_ufo_path, 2, ufo2_dir_list)

xml_fail_list = contents_validator.run_xml_validation()
ufolib_fail_list = contents_validator.run_ufolib_import_validation()
with pytest.raises(SystemExit) as pytest_wrapped_e:
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
assert len(xml_fail_list) == 1

out, _ = capsys.readouterr()
assert pytest_wrapped_e.type == SystemExit
assert pytest_wrapped_e.value.code == 1
assert 'contents.plist is missing.' in out

def test_validators_plist_ufo3_contents_missing_file_fail():

def test_validators_plist_ufo3_contents_missing_file_fail(capsys):
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()
with pytest.raises(SystemExit) as pytest_wrapped_e:
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
assert len(xml_fail_list) == 1

out, _ = capsys.readouterr()
assert pytest_wrapped_e.type == SystemExit
assert pytest_wrapped_e.value.code == 1
assert 'contents.plist is missing.' in out


def test_validators_plist_ufo3_contents_missing_file_fail(capsys):
Expand Down

0 comments on commit eedf001

Please sign in to comment.