def test_upload_documentation(self): "Test upload of documentation" raise unittest.SkipTest('Skipped, as pythonhosted.org is being ' 'de-emphasised and this functionality may ' 'no longer be available') self.check_pypi_server_available() self.check_testdist_available() d = os.path.join(HERE, self.testdir) data = self.load_package_metadata(d) md = Metadata(mapping=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 setUpClass(cls): if cls.run_test_server: cls.server = None server_script = os.path.join(HERE, 'pypi-server-standalone.py') if not os.path.exists(server_script): logger.debug('test server not available - some tests ' 'will be skipped.') return pwdfn = os.path.join(HERE, 'passwords') if not os.path.exists(pwdfn): # pragma: no cover with open(pwdfn, 'w') as f: f.write('test:secret\n') pkgdir = os.path.join(HERE, 'packages') if not os.path.isdir(pkgdir): # pragma: no cover os.mkdir(pkgdir) cls.sink = sink = open(os.devnull, 'w') cmd = [sys.executable, 'pypi-server-standalone.py', '-P', 'passwords', 'packages'] cls.server = subprocess.Popen(cmd, stdout=sink, stderr=sink, cwd=HERE) # wait for the server to start up response = None while response is None: try: response = urlopen(cls.test_server_url) except URLError: pass
def setUpClass(cls): if cls.run_test_server: cls.server = None server_script = os.path.join(HERE, 'pypi-server-standalone.py') if not os.path.exists(server_script): logger.debug('test server not available - some tests ' 'will be skipped.') return pwdfn = os.path.join(HERE, 'passwords') if not os.path.exists(pwdfn): # pragma: no cover with open(pwdfn, 'w') as f: f.write('test:secret\n') pkgdir = os.path.join(HERE, 'packages') if not os.path.isdir(pkgdir): # pragma: no cover os.mkdir(pkgdir) cls.sink = sink = open(os.devnull, 'w') cmd = [ sys.executable, 'pypi-server-standalone.py', '-P', 'passwords', 'packages' ] cls.server = subprocess.Popen(cmd, stdout=sink, stderr=sink, cwd=HERE) # wait for the server to start up response = None while response is None: try: response = urlopen(cls.test_server_url) except URLError: pass
def test_upload_documentation(self): "Test upload of documentation" raise unittest.SkipTest('Skipped, as pythonhosted.org is being ' 'de-emphasised and this functionality may ' 'no longer be available') self.check_pypi_server_available() self.check_testdist_available() d = os.path.join(HERE, self.testdir) data = self.load_package_metadata(d) md = Metadata(mapping=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 setUpClass(cls): if cls.run_test_server: cls.server = None server_script = os.path.join(HERE, 'pypi-server-standalone.py') if not os.path.exists(server_script): logger.debug('test server not available - some tests ' 'will be skipped.') return pwdfn = os.path.join(HERE, 'passwords') if not os.path.exists(pwdfn): # pragma: no cover with open(pwdfn, 'w') as f: f.write('test:secret\n') pkgdir = os.path.join(HERE, 'packages') if not os.path.isdir(pkgdir): # pragma: no cover os.mkdir(pkgdir) fd, cls.sinkfile = tempfile.mkstemp(suffix='.log', prefix='distlib-pypi-') os.close(fd) cls.sink = sink = open(cls.sinkfile, 'w') cmd = [ sys.executable, 'pypi-server-standalone.py', '--interface', '127.0.0.1', '--port', TEST_SERVER_PORT, '-P', 'passwords', 'packages' ] cls.server = subprocess.Popen(cmd, stdout=sink, stderr=sink, cwd=HERE) # wait for the server to start up response = None tries = 20 timeout = 0.5 count = 0 while response is None: try: count += 1 time.sleep(timeout) response = urlopen(cls.test_server_url) if response.getcode() != 200: response = None break # In case some other server is listening on the same port ... # need to check the actual response for pypiserver-specific content data = response.read() if b'Welcome to pypiserver!' not in data: response = None break except URLError: if count < tries: pass else: break if response is None or cls.server.poll() is not None: logger.warning('PyPI test server could not be run') cls.server = None cls.sink.close() os.remove(cls.sinkfile)
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)