def test_metadata_text_generation(self, full_usage): # Order of the header lines is NOT tested (order in payload - is) expected_headers = dedent("""\ Metadata-Version: 2.1 Name: package-name Version: 1.2.3 Platform: SomeOS Platform: SomeOtherOS Supported-Platform: some-architecture-128 Supported-Platform: my-mips-21 Summary: this is a test Description-Content-Type: text/plain Keywords: test,unittests,package,wheelfile License: May be distributed only if this test succeeds Home-page: http://example.com/package-name/1.2.3 Download-URL: http://example.com/package-name/1.2.3/download Author: MrMino Author-email: [email protected] Maintainer: NotMrMino Maintainer-email: [email protected] Classifier: Topic :: Software Development :: Testing Classifier: Framework :: Pytest Requires-Dist: wheelfile[metadata]~=1.0 Requires-Dist: paramiko Requires-Python: ~=3.6 Requires-External: vim Requires-External: zsh Project-URL: Details: http://example.com/package-name/ Provides-Extra: metadata Provides-Dist: wheel_packaging Obsoletes-Dist: wheel """).splitlines() expected_payload = dedent("""\ Some Long Description """).splitlines() lines = str(MetaData(**full_usage)).splitlines() header_end_idx = lines.index('') headers = lines[:header_end_idx] payload = lines[header_end_idx:] assert set(headers) == set(expected_headers) assert payload == expected_payload
def test_keywords_is_not_multiple_use(self): assert not MetaData.field_is_multiple_use('keywords')
def test_plural_fields_except_keywords_show_up_as_multiple_use( self, field): assert MetaData.field_is_multiple_use(field)
def test_to_and_fro_str_objects_are_equal(self, metadata): assert metadata == MetaData.from_str(str(metadata))
def test_basic_from_str(self, metadata): assert str(MetaData.from_str(str(metadata))) == str(metadata)
def test_basic_eq(self): args = {'name': 'x', 'version': '1'} assert MetaData(**args) == MetaData(**args)
def metadata(self): return MetaData(name='my-package', version='1.2.3')
def test_only_name_and_version_is_required(self): md = MetaData(name='my-package', version='1.2.3') assert md.name == 'my-package' and str(md.version) == '1.2.3'
def test_keywords_param_accepts_list(self): metadata = MetaData(name='name', version='1.2.3', keywords=['a', 'b', 'c']) assert metadata.keywords == ['a', 'b', 'c']
def test_keywords_param_accepts_comma_separated_str(self): metadata = MetaData(name='name', version='1.2.3', keywords='a,b,c') assert metadata.keywords == ['a', 'b', 'c']
def test_full_usage_from_str_eqs_by_obj(self, full_usage): md = MetaData(**full_usage) fs = MetaData.from_str(str(md)) assert fs == md
def test_full_usage_from_str_eqs_by_str(self, full_usage): md = MetaData(**full_usage) fs = MetaData.from_str(str(md)) assert str(fs) == str(md)
def test_params_are_memorized(self, full_usage): md = MetaData(**full_usage) for field, value in full_usage.items(): assert getattr(md, field) == value