[Python-checkins] distutils2: added verification to finalize_options
tarek.ziade
python-checkins at python.org
Sun Jul 4 11:48:38 CEST 2010
tarek.ziade pushed 4d2e03cda556 to distutils2:
http://hg.python.org/distutils2/rev/4d2e03cda556
changeset: 276:4d2e03cda556
user: Konrad Delong <konryd at gmail.com>
date: Tue Jun 01 15:28:49 2010 +0200
summary: added verification to finalize_options
files: src/distutils2/command/upload_docs.py, src/distutils2/tests/test_upload_docs.py
diff --git a/src/distutils2/command/upload_docs.py b/src/distutils2/command/upload_docs.py
--- a/src/distutils2/command/upload_docs.py
+++ b/src/distutils2/command/upload_docs.py
@@ -1,6 +1,7 @@
import base64, httplib, os.path, socket, tempfile, urlparse, zipfile
from cStringIO import StringIO
from distutils2 import log
+from distutils2.command.upload import upload
from distutils2.core import PyPIRCCommand
from distutils2.errors import DistutilsFileError
@@ -50,17 +51,24 @@
class upload_docs(PyPIRCCommand):
user_options = [
+ #('repository=', 'r',
+ #"url of repository [default: %s]" % upload.DEFAULT_REPOSITORY),
+ #('show-response', None,
+ #'display full response text from server'),
('upload-dir=', None, 'directory to upload'),
]
def initialize_options(self):
- self.upload_dir = None
+ PyPIRCCommand.initialize_options(self)
+ self.upload_dir = "build/docs"
def finalize_options(self):
PyPIRCCommand.finalize_options(self)
if self.upload_dir == None:
build = self.get_finalized_command('build')
self.upload_dir = os.path.join(build.build_base, "docs")
+ self.announce('Using upload directory %s' % self.upload_dir)
+ self.verify_upload_dir(self.upload_dir)
config = self._read_pypirc()
if config != {}:
self.username = config['username']
@@ -69,16 +77,15 @@
self.realm = config['realm']
def verify_upload_dir(self, upload_dir):
+ self.ensure_dirname('upload_dir')
index_location = os.path.join(upload_dir, "index.html")
if not os.path.exists(index_location):
mesg = "No 'index.html found in docs directory (%s)"
raise DistutilsFileError(mesg % upload_dir)
-
def run(self):
tmp_dir = tempfile.mkdtemp()
name = self.distribution.metadata['Name']
- self.verify_upload_dir(self.upload_dir)
zip_file = zip_dir(self.upload_dir)
fields = {':action': 'doc_upload', 'name': name}.items()
diff --git a/src/distutils2/tests/test_upload_docs.py b/src/distutils2/tests/test_upload_docs.py
--- a/src/distutils2/tests/test_upload_docs.py
+++ b/src/distutils2/tests/test_upload_docs.py
@@ -1,6 +1,6 @@
"""Tests for distutils.command.upload_docs."""
# -*- encoding: utf8 -*-
-import httplib, os, os.path, tempfile, unittest2, zipfile
+import httplib, os, os.path, shutil, tempfile, unittest2, zipfile
from cStringIO import StringIO
from distutils2.command import upload_docs as upload_docs_mod
@@ -8,7 +8,7 @@
encode_multipart)
from distutils2.core import Distribution
-from distutils2.errors import DistutilsFileError
+from distutils2.errors import DistutilsFileError, DistutilsOptionError
from distutils2.tests import support
from distutils2.tests.pypi_server import PyPIServer, PyPIServerTestCase
@@ -54,15 +54,23 @@
self.dist.metadata['Name'] = "distr-name"
self.cmd = upload_docs(self.dist)
- def test_generates_uploaddir_if_not_given(self):
- self.assertEqual(self.cmd.upload_dir, None)
- self.cmd.ensure_finalized()
- self.assertEqual(self.cmd.upload_dir, os.path.join("build", "docs"))
+ def test_default_uploaddir(self):
+ sandbox = tempfile.mkdtemp()
+ previous = os.getcwd()
+ os.chdir(sandbox)
+ try:
+ os.mkdir("build")
+ self.prepare_sample_dir("build")
+ self.cmd.ensure_finalized()
+ self.assertEqual(self.cmd.upload_dir, os.path.join("build", "docs"))
+ finally:
+ os.chdir(previous)
- def prepare_sample_dir(self):
- sample_dir = tempfile.mkdtemp()
- os.mkdir(os.path.join(sample_dir, "some_dir"))
- self.write_file(os.path.join(sample_dir, "some_dir", "index.html"), "Ce mortel ennui")
+ def prepare_sample_dir(self, sample_dir=None):
+ if sample_dir is None:
+ sample_dir = tempfile.mkdtemp()
+ os.mkdir(os.path.join(sample_dir, "docs"))
+ self.write_file(os.path.join(sample_dir, "docs", "index.html"), "Ce mortel ennui")
self.write_file(os.path.join(sample_dir, "index.html"), "Oh la la")
return sample_dir
@@ -71,7 +79,7 @@
compressed = zip_dir(source_dir)
zip_f = zipfile.ZipFile(compressed)
- self.assertEqual(zip_f.namelist(), ['index.html', 'some_dir/index.html'])
+ self.assertEqual(zip_f.namelist(), ['index.html', 'docs/index.html'])
def test_encode_multipart(self):
fields = [("a", "b"), ("c", "d")]
@@ -81,9 +89,9 @@
self.assertEqual(body, EXPECTED_MULTIPART_OUTPUT)
def prepare_command(self):
+ self.cmd.upload_dir = self.prepare_sample_dir()
self.cmd.ensure_finalized()
self.cmd.repository = self.pypi.full_address
- self.cmd.upload_dir = self.prepare_sample_dir()
self.cmd.username = "username"
self.cmd.password = "password"
@@ -109,7 +117,7 @@
# check their contents
self.assertIn("doc_upload", action)
self.assertIn("distr-name", name)
- self.assertIn("some_dir/index.html", content)
+ self.assertIn("docs/index.html", content)
self.assertIn("Ce mortel ennui", content)
def test_https_connection(self):
@@ -151,14 +159,20 @@
def test_reads_pypirc_data(self):
self.write_file(self.rc, PYPIRC % self.pypi.full_address)
self.cmd.repository = self.pypi.full_address
+ self.cmd.upload_dir = self.prepare_sample_dir()
self.cmd.ensure_finalized()
self.assertEqual(self.cmd.username, "real_slim_shady")
self.assertEqual(self.cmd.password, "long_island")
def test_checks_index_html_presence(self):
- self.prepare_command()
+ self.cmd.upload_dir = self.prepare_sample_dir()
os.remove(os.path.join(self.cmd.upload_dir, "index.html"))
- self.assertRaises(DistutilsFileError, self.cmd.run)
+ self.assertRaises(DistutilsFileError, self.cmd.ensure_finalized)
+
+ def test_checks_upload_dir(self):
+ self.cmd.upload_dir = self.prepare_sample_dir()
+ shutil.rmtree(os.path.join(self.cmd.upload_dir))
+ self.assertRaises(DistutilsOptionError, self.cmd.ensure_finalized)
def test_suite():
return unittest2.makeSuite(UploadDocsTestCase)
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list