def test_upload(self): "Test upload" self.check_pypi_server_available() self.check_testdist_available() if self.run_test_server: self.remove_package(self.dist_project, self.dist_version) d = os.path.join(HERE, self.testdir) data = self.load_package_metadata(d) md = Metadata() md.update(self.get_index_metadata(data)) #import pdb; pdb.set_trace() self.index.gpg_home = os.path.join(HERE, 'keys') try: zip_name = os.path.join(HERE, '%s.zip' % self.testdir) self.assertRaises(DistlibException, self.index.upload_file, md, 'random-' + zip_name, 'Test User', 'tuser') response = self.index.upload_file(md, zip_name, 'Test User', 'tuser') self.assertEqual(response.code, 200) if self.run_test_server: fn = os.path.join(HERE, 'packages', os.path.basename(zip_name)) self.assertTrue(os.path.exists(fn)) except HTTPError as e: # Treat as success if it already exists if e.getcode() != 400 or 'already exists' not in e.msg: raise
def test_register(self): "Test registration" self.check_pypi_server_available() self.check_testdist_available() d = os.path.join(HERE, self.testdir) data = self.load_package_metadata(d) md = Metadata() self.assertRaises(MetadataMissingError, self.index.register, md) md['Name'] = self.dist_project self.assertRaises(MetadataMissingError, self.index.register, md) md.update(self.get_index_metadata(data)) response = self.index.register(md) self.assertEqual(response.code, 200)
def test_upload_documentation(self): "Test upload of documentation" self.check_pypi_server_available() self.check_testdist_available() d = os.path.join(HERE, self.testdir) data = self.load_package_metadata(d) md = Metadata() md.update(self.get_index_metadata(data)) d = os.path.join(d, 'doc') # Non-existent directory self.assertRaises(DistlibException, self.index.upload_documentation, md, d+'-random') # Directory with no index.html self.assertRaises(DistlibException, self.index.upload_documentation, md, HERE) response = self.index.upload_documentation(md, d) self.assertEqual(response.code, 200) if not self.run_test_server: url = 'http://packages.python.org/%s/' % self.dist_project response = urlopen(url) self.assertEqual(response.code, 200) data = response.read() expected = b'This is dummy documentation' self.assertIn(expected, data)
def test_mapping_api(self): content = self.get_file_contents('PKG-INFO') metadata = Metadata(fileobj=StringIO(content)) self.assertIn('Version', metadata.keys()) self.assertIn('0.5', metadata.values()) self.assertIn(('Version', '0.5'), metadata.items()) metadata.update({'version': '0.6'}) self.assertEqual(metadata['Version'], '0.6') metadata.update([('version', '0.7')]) self.assertEqual(metadata['Version'], '0.7') # use a kwarg to update metadata.update(version='0.6') self.assertEqual(metadata['Version'], '0.6') # make sure update method checks values like the set method does metadata.update({'version': '1--2'}) self.assertEqual(len(self.get_logs()), 1) self.assertEqual(list(metadata), metadata.keys())