def test_project_url(self): metadata = Metadata() metadata['Project-URL'] = [('one', 'http://ok')] self.assertEqual(metadata['Project-URL'], [('one', 'http://ok')]) metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.2') # make sure this particular field is handled properly when written fp = StringIO() metadata.write_file(fp) self.assertIn('Project-URL: one,http://ok', fp.getvalue().split('\n')) fp.seek(0) metadata = Metadata() metadata.read_file(fp) self.assertEqual(metadata['Project-Url'], [('one', 'http://ok')])
def test_metadata_versions(self): metadata = Metadata(mapping={'name': 'project', 'version': '1.0'}) self.assertEqual(metadata['Metadata-Version'], PKG_INFO_PREFERRED_VERSION) self.assertNotIn('Provides', metadata) self.assertNotIn('Requires', metadata) self.assertNotIn('Obsoletes', metadata) metadata['Classifier'] = ['ok'] metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.1') metadata = Metadata() metadata['Download-URL'] = 'ok' metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.1') metadata = Metadata() metadata['Obsoletes'] = 'ok' metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.1') del metadata['Obsoletes'] metadata['Obsoletes-Dist'] = 'ok' metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.2') metadata.set('Obsoletes', 'ok') self.assertRaises(MetadataConflictError, metadata.set_metadata_version) del metadata['Obsoletes'] del metadata['Obsoletes-Dist'] metadata.set_metadata_version() metadata['Version'] = '1' self.assertEqual(metadata['Metadata-Version'], '1.1') # make sure the _best_version function works okay with # non-conflicting fields from 1.1 and 1.2 (i.e. we want only the # requires/requires-dist and co. pairs to cause a conflict, not all # fields in _314_MARKERS) metadata = Metadata() metadata['Requires-Python'] = '3' metadata['Classifier'] = ['Programming language :: Python :: 3'] metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.2') PKG_INFO = os.path.join(HERE, 'SETUPTOOLS-PKG-INFO') metadata = Metadata(PKG_INFO) self.assertEqual(metadata['Metadata-Version'], '1.1') PKG_INFO = os.path.join(HERE, 'SETUPTOOLS-PKG-INFO2') metadata = Metadata(PKG_INFO) self.assertEqual(metadata['Metadata-Version'], '1.1') # make sure an empty list for Obsoletes and Requires-dist gets ignored metadata['Obsoletes'] = [] metadata['Requires-dist'] = [] metadata.set_metadata_version() self.assertEqual(metadata['Metadata-Version'], '1.1') # Update the _fields dict directly to prevent 'Metadata-Version' # from being updated by the _set_best_version() method. metadata._fields['Metadata-Version'] = '1.618' self.assertRaises(MetadataUnrecognizedVersionError, metadata.keys)