def test_libfv_set_gitsha1_both_dev_release_error(capsys): fv = FontVersion("tests/testfiles/Test-VersionMeta.ttf") with pytest.raises(ValueError) as pytest_wrapped_e: fv.set_state_git_commit_sha1(release=True, development=True) out, err = capsys.readouterr() assert pytest_wrapped_e.type == ValueError
def test_libfv_get_version_number_string_bad_version_number(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") with pytest.raises(ValueError): # mock a bad version number substring fv.set_version_number("x.xxx") assert fv.get_version_number_string() == ""
def test_libfv_set_version_number_invalid_number(allfonts): fv = FontVersion(allfonts) with pytest.raises(ValueError): # mock a bad version number substring fv.set_version_number("x.xxx") response = fv.get_version_number_string() assert len(response) == 0
def test_libfv_fontversion_object_versionparts_meta_lists_versionstring_only(): fv1 = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") assert len(fv1.version_string_parts) == 1 assert len(fv1.metadata) == 0 assert len(fv2.version_string_parts) == 1 assert len(fv2.metadata) == 0
def test_libfv_fontversion_object_properties_truth_state_versionstring_only(): fv1 = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") assert fv1.contains_state is False assert fv2.contains_state is False assert len(fv1.state) == 0 assert len(fv2.state) == 0
def test_libfv_fontversion_object_inequality(allfonts): fv1 = FontVersion(allfonts) fv2 = FontVersion(allfonts) fv3 = FontVersion(allfonts) fv3.version_string_parts[0] = "Version 12.000" assert (fv1 != fv2) is False assert fv1 != fv3 assert fv1 != "test string" assert fv1 != fv1.version_string_parts
def test_libfv_set_version_number(allfonts): fv = FontVersion(allfonts) prelength = len(fv.version_string_parts) fv.set_version_number("2.000") postlength = len(fv.version_string_parts) assert prelength == postlength assert fv.version_string_parts[0] == "Version 2.000" assert fv.version == "Version 2.000" assert fv.head_fontRevision == 2.000
def test_libfv_fontversion_object_properties_truth_defaults(): fv1 = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") assert fv1.contains_metadata is False assert fv1.contains_status is False assert fv1.is_development is False assert fv1.is_release is False assert fv2.contains_metadata is False assert fv2.contains_status is False assert fv2.is_development is False assert fv2.is_release is False
def test_libfv_set_release_method_on_development(devfonts): fv = FontVersion(devfonts) prelength = len(fv.version_string_parts) fv.set_release_status() postlength = len(fv.version_string_parts) assert prelength == postlength assert fv.version_string_parts[0] == "Version 1.010" assert fv.version_string_parts[1] == "RELEASE" assert fv.is_development is False assert fv.is_release is True assert fv.contains_status is True assert fv.contains_metadata is True
def test_libfv_set_release_gitsha1_method(allfonts): fv = FontVersion(allfonts) fv.set_state_git_commit_sha1(release=True) sha_needle = fv.version_string_parts[1] assert _test_hexadecimal_sha1_formatted_string_matches( sha_needle) is True # confirm that set with state label assert _test_hexadecimal_sha1_string_matches( fv.state) is True # confirm that state property is properly set assert ("-dev" in sha_needle) is False assert ("-release" in sha_needle) is True assert ("DEV" in sha_needle) is False assert ("RELEASE" in sha_needle) is False
def test_libfv_set_release_method_on_nostatus(metafonts): fv = FontVersion(metafonts) prelength = len(fv.version_string_parts) fv.set_release_status() postlength = len(fv.version_string_parts) assert prelength == ( postlength - 1 ) # should add an additional substring to the version string here assert fv.version_string_parts[0] == "Version 1.010" assert fv.version_string_parts[1] == "RELEASE" assert fv.is_development is False assert fv.is_release is True assert fv.contains_status is True assert fv.contains_metadata is True
def test_libfv_fontversion_object_properties_truth_state_meta_without_state(): fv1 = FontVersion("tests/testfiles/Test-VersionMeta.ttf") fv2 = FontVersion("tests/testfiles/Test-VersionMeta.otf") fv3 = FontVersion("tests/testfiles/Test-VersionMoreMeta.ttf") fv4 = FontVersion("tests/testfiles/Test-VersionMoreMeta.otf") assert fv1.contains_state is False assert fv2.contains_state is False assert fv3.contains_state is False assert fv4.contains_state is False assert len(fv1.state) == 0 assert len(fv2.state) == 0 assert len(fv3.state) == 0 assert len(fv4.state) == 0
def test_libfv_fontversion_object_versionparts_meta_lists_version_with_onemeta( ): fv1 = FontVersion("tests/testfiles/Test-VersionMeta.ttf") assert len(fv1.version_string_parts) == 2 assert fv1.version_string_parts[0] == "Version 1.010" assert fv1.version_string_parts[1] == "metadata string" assert len(fv1.metadata) == 1 assert fv1.metadata[0] == "metadata string" fv2 = FontVersion("tests/testfiles/Test-VersionMeta.otf") assert len(fv2.version_string_parts) == 2 assert fv2.version_string_parts[0] == "Version 1.010" assert fv2.version_string_parts[1] == "metadata string" assert len(fv2.metadata) == 1 assert fv2.metadata[0] == "metadata string"
def test_libfv_fontversion_obj_instantiation_with_ttfont_object(allfonts): ttf = TTFont(allfonts) fv1 = FontVersion(ttf) fv2 = FontVersion(allfonts) assert fv1.fontpath == fv2.fontpath assert fv1.version_string_parts == fv2.version_string_parts assert fv1.develop_string == fv2.develop_string assert fv1.release_string == fv2.release_string assert fv1.sha1_develop == fv2.sha1_develop assert fv1.sha1_release == fv2.sha1_release assert fv1.version == fv2.version assert fv1.metadata == fv2.metadata assert fv1.contains_status == fv2.contains_status assert fv1.contains_metadata == fv2.contains_metadata assert fv1.is_release == fv2.is_release assert fv1.is_development == fv2.is_development
def test_libfv_fontversion_object_properties_truth_defaults_with_metaonly( metafonts): fv = FontVersion(metafonts) assert fv.contains_metadata is True assert fv.contains_status is False assert fv.is_development is False assert fv.is_release is False
def test_libfv_is_state_substring_return_match_invalid(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") is_state_substring, state_substring = fv._is_state_substring_return_state_match( "abcd123") assert is_state_substring is False assert state_substring == "" is_state_substring, state_substring = fv._is_state_substring_return_state_match( "{abcd123}") assert is_state_substring is False assert state_substring == "" is_state_substring, state_substring = fv._is_state_substring_return_state_match( "[&%$#@!]") assert is_state_substring is False assert state_substring == ""
def test_libfv_fontversion_object_parameter_properties_defaults_ttfont_object( allfonts): ttf = TTFont(allfonts) fv = FontVersion(ttf) assert fv.develop_string == "DEV" assert fv.release_string == "RELEASE" assert fv.sha1_develop == "-dev" assert fv.sha1_release == "-release"
def test_libfv_fontversion_object_properties_truth_release_ttfont_object( relfonts): ttf = TTFont(relfonts) fv = FontVersion(ttf) assert fv.contains_metadata is True assert fv.contains_status is True assert fv.is_development is False assert fv.is_release is True
def test_libfv_is_state_substring_return_match_valid(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") is_state_substring, state_substring = fv._is_state_substring_return_state_match( "[abcd123]") assert is_state_substring is True assert state_substring == "abcd123" is_state_substring, state_substring = fv._is_state_substring_return_state_match( "[abcd123]-dev") assert is_state_substring is True assert state_substring == "abcd123" is_state_substring, state_substring = fv._is_state_substring_return_state_match( "[abcd123]-release") assert is_state_substring is True assert state_substring == "abcd123"
def test_libfv_fontversion_object_versionparts_meta_lists_version_with_twometa( ): fv = FontVersion("tests/testfiles/Test-VersionMoreMeta.ttf") assert len(fv.version_string_parts) == 3 assert fv.version_string_parts[0] == "Version 1.010" assert fv.version_string_parts[1] == "metadata string" assert fv.version_string_parts[2] == "another metadata string" assert len(fv.metadata) == 2 assert fv.metadata[0] == "metadata string" assert fv.metadata[1] == "another metadata string" fv2 = FontVersion("tests/testfiles/Test-VersionMoreMeta.otf") assert len(fv2.version_string_parts) == 3 assert fv2.version_string_parts[0] == "Version 1.010" assert fv2.version_string_parts[1] == "metadata string" assert fv2.version_string_parts[2] == "another metadata string" assert len(fv2.metadata) == 2 assert fv2.metadata[0] == "metadata string" assert fv2.metadata[1] == "another metadata string"
def test_libfv_set_version_string_one_substring(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv.set_version_string("Version 2.000") assert len(fv.version_string_parts) == 1 assert fv.version_string_parts[0] == "Version 2.000" assert fv.version == "Version 2.000" assert fv.head_fontRevision == 2.000 fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") fv2.set_version_string("Version 2.000") assert len(fv2.version_string_parts) == 1 assert fv2.version_string_parts[0] == "Version 2.000" assert fv2.version == "Version 2.000" assert fv2.head_fontRevision == 2.000
def test_libfv_fontversion_object_versionparts_meta_lists_version_with_twometa_ttfont_object( ): ttf1 = TTFont("tests/testfiles/Test-VersionMoreMeta.ttf") fv1 = FontVersion(ttf1) assert len(fv1.version_string_parts) == 3 assert fv1.version_string_parts[0] == "Version 1.010" assert fv1.version_string_parts[1] == "metadata string" assert fv1.version_string_parts[2] == "another metadata string" assert len(fv1.metadata) == 2 assert fv1.metadata[0] == "metadata string" assert fv1.metadata[1] == "another metadata string" ttf2 = TTFont("tests/testfiles/Test-VersionMoreMeta.otf") fv2 = FontVersion(ttf2) assert len(fv2.version_string_parts) == 3 assert fv2.version_string_parts[0] == "Version 1.010" assert fv2.version_string_parts[1] == "metadata string" assert fv2.version_string_parts[2] == "another metadata string" assert len(fv2.metadata) == 2 assert fv2.metadata[0] == "metadata string" assert fv2.metadata[1] == "another metadata string"
def test_libfv_set_version_string_three_substrings(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv.set_version_string("Version 2.000;DEV;other stuff") assert len(fv.version_string_parts) == 3 assert fv.version_string_parts[0] == "Version 2.000" assert fv.version_string_parts[1] == "DEV" assert fv.version_string_parts[2] == "other stuff" assert fv.version == "Version 2.000" assert fv.head_fontRevision == 2.000 fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") fv2.set_version_string("Version 2.000;DEV;other stuff") assert len(fv2.version_string_parts) == 3 assert fv2.version_string_parts[0] == "Version 2.000" assert fv2.version_string_parts[1] == "DEV" assert fv2.version_string_parts[2] == "other stuff" assert fv2.version == "Version 2.000" assert fv2.head_fontRevision == 2.000
def test_libfv_set_release_method_on_versiononly(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") assert len(fv.version_string_parts) == 1 fv.set_release_status() assert len(fv.version_string_parts) == 2 assert fv.version_string_parts[0] == "Version 1.010" assert fv.version_string_parts[1] == "RELEASE" assert fv.is_development is False assert fv.is_release is True assert fv.contains_status is True assert fv.contains_metadata is True fv2 = FontVersion("tests/testfiles/Test-VersionOnly.otf") assert len(fv2.version_string_parts) == 1 fv2.set_release_status() assert len(fv2.version_string_parts) == 2 assert fv2.version_string_parts[0] == "Version 1.010" assert fv2.version_string_parts[1] == "RELEASE" assert fv2.is_development is False assert fv2.is_release is True assert fv2.contains_status is True assert fv2.contains_metadata is True
def test_libfv_get_status_method_release(relfonts): fv = FontVersion(relfonts) status_string = fv.get_state_status_substring() assert status_string == fv.version_string_parts[1]
def test_libfv_get_status_method_nostatus(metafonts): fv = FontVersion(metafonts) status_string = fv.get_state_status_substring() assert status_string == ""
def test_libfv_get_version_number_string(allfonts): fv = FontVersion(allfonts) assert fv.get_version_number_string() == "1.010"
def test_libfv_set_gitsha1_bad_parameters_raises_valueerror(allfonts): with pytest.raises(ValueError): fv = FontVersion(allfonts) fv.set_state_git_commit_sha1(development=True, release=True)
def test_libfv_get_version_number_tuple(): fv = FontVersion("tests/testfiles/Test-VersionOnly.ttf") assert fv.get_version_number_tuple() == (1, 0, 1, 0) # mock new version numbers in memory and confirm that they are correct in tuples fv.version = "Version 1.1" assert fv.get_version_number_tuple() == (1, 1) fv.version = "Version 1.01" assert fv.get_version_number_tuple() == (1, 0, 1) fv.version = "Version 1.001" assert fv.get_version_number_tuple() == (1, 0, 0, 1) fv.version = "Version 10.1" assert fv.get_version_number_tuple() == (10, 1) fv.version = "Version 10.01" assert fv.get_version_number_tuple() == (10, 0, 1) fv.version = "Version 10.001" assert fv.get_version_number_tuple() == (10, 0, 0, 1) fv.version = "Version 100.001" assert fv.get_version_number_tuple() == (100, 0, 0, 1)
def test_libfv_get_name_id5_version_string_method(): fv1 = FontVersion("tests/testfiles/Test-VersionOnly.ttf") fv2 = FontVersion("tests/testfiles/Test-VersionMeta.ttf") fv3 = FontVersion("tests/testfiles/Test-VersionMoreMeta.ttf") assert fv1.get_name_id5_version_string() == "Version 1.010" assert fv2.get_name_id5_version_string() == "Version 1.010;metadata string" assert fv3.get_name_id5_version_string( ) == "Version 1.010;metadata string;another metadata string" fv4 = FontVersion("tests/testfiles/Test-VersionOnly.otf") fv5 = FontVersion("tests/testfiles/Test-VersionMeta.otf") fv6 = FontVersion("tests/testfiles/Test-VersionMoreMeta.otf") assert fv4.get_name_id5_version_string() == "Version 1.010" assert fv5.get_name_id5_version_string() == "Version 1.010;metadata string" assert fv6.get_name_id5_version_string( ) == "Version 1.010;metadata string;another metadata string"