Commits

georg.brandl  committed 0a71b9b

Merged revisions 65529 via svnmerge from
svn+ssh://pythondev@svn.python.org/doctools/branches/0.4.x

........
r65529 | georg.brandl | 2008-08-04 22:19:30 +0000 (Mon, 04 Aug 2008) | 6 lines

Revert r65499 which was not well thought out. Instead, put
the whole build dir in exclude_trees by default in quickstart.

Also, revisit application cleanup and make it consistently use
less setup time while still trying to leave to traces.
........

  • Participants
  • Parent commits e63649e

Comments (0)

Files changed (7)

File sphinx/application.py

 """
 
 import sys
-from os import path
 
 from docutils import nodes
 from docutils.parsers.rst import directives, roles
         self.builderclasses = builtin_builders.copy()
         self.builder = None
 
-        self.srcdir = path.abspath(srcdir)
-        self.confdir = path.abspath(confdir)
-        self.outdir = path.abspath(outdir)
-        self.doctreedir = path.abspath(doctreedir)
+        self.srcdir = srcdir
+        self.confdir = confdir
+        self.outdir = outdir
+        self.doctreedir = doctreedir
 
         self._status = status
         self._warning = warning
         # now that we know all config values, collect them from conf.py
         self.config.init_values()
 
-        # if the output and/or doctree dirs are within the source dir, except
-        # them from being searched for source files
-        if self.outdir.startswith(self.srcdir):
-            self.config.exclude_trees += [self.outdir[len(self.srcdir)+1:]]
-        if self.doctreedir.startswith(self.srcdir):
-            self.config.exclude_trees += [self.doctreedir[len(self.srcdir)+1:]]
-
         if buildername is None:
             print >>status, 'No builder selected, using default: html'
             buildername = 'html'

File sphinx/environment.py

             for imgpath in candidates.itervalues():
                 self.dependencies.setdefault(docname, set()).add(imgpath)
                 if not os.access(path.join(self.srcdir, imgpath), os.R_OK):
-                    self.warn(docname, 'Image file not readable: %s' % imgpath, node.line)
+                    self.warn(docname, 'Image file not readable: %s' % imgpath,
+                              node.line)
                 if imgpath in self.images:
                     self.images[imgpath][0].add(docname)
                     continue

File sphinx/quickstart.py

 
 # List of directories, relative to source directories, that shouldn't be searched
 # for source files.
-#exclude_dirs = []
+exclude_trees = [%(exclude_trees)s]
 
 # The reST default role (used for this markup: `text`) to use for all documents.
 #default_role = None
     mkdir_p(srcdir)
     if separate:
         builddir = path.join(d['path'], 'build')
+        d['exclude_trees'] = ''
     else:
         builddir = path.join(srcdir, d['dot'] + 'build')
+        d['exclude_trees'] = repr(d['dot'] + 'build')
     mkdir_p(builddir)
     mkdir_p(path.join(srcdir, d['dot'] + 'templates'))
     mkdir_p(path.join(srcdir, d['dot'] + 'static'))

File tests/root/conf.py

 
 # List of directories, relative to source directories, that shouldn't be searched
 # for source files.
-#exclude_dirs = []
 exclude_trees = ['_build']
 
 # If true, '()' will be appended to :func: etc. cross-reference text.

File tests/test_build.py

 def test_text(app):
     app.builder.build_all()
 
-@with_testapp(buildername='changes')
+@with_testapp(buildername='changes', cleanenv=True)
 def test_changes(app):
     app.builder.build_all()

File tests/test_markup.py

 
 def setup_module():
     global app, settings, parser
-    app = TestApp()
+    app = TestApp(cleanenv=True)
     optparser = frontend.OptionParser(components=(rst.Parser, HTMLWriter, LaTeXWriter))
     settings = optparser.get_default_values()
     settings.env = app.builder.env

File tests/util.py

 
     def __init__(self, srcdir=None, confdir=None, outdir=None, doctreedir=None,
                  buildername='html', confoverrides=None, status=None, warning=None,
-                 freshenv=None, confname='conf.py'):
+                 freshenv=None, confname='conf.py', cleanenv=False):
 
         application.CONFIG_FILENAME = confname
 
+        self.cleanup_trees = []
+
         if srcdir is None:
             srcdir = test_root
         if srcdir == '(temp)':
-            tempdir = path(tempfile.mkdtemp()) / 'root'
-            test_root.copytree(tempdir)
-            srcdir = tempdir
+            tempdir = path(tempfile.mkdtemp())
+            self.cleanup_trees.append(tempdir)
+            temproot = tempdir / 'root'
+            test_root.copytree(temproot)
+            srcdir = temproot
         else:
             srcdir = path(srcdir)
         self.builddir = srcdir.joinpath('_build')
-        if not self.builddir.isdir():
-            self.builddir.makedirs()
-            self.made_builddir = True
-        else:
-            self.made_builddir = False
         if confdir is None:
             confdir = srcdir
         if outdir is None:
             outdir = srcdir.joinpath(self.builddir, buildername)
             if not outdir.isdir():
                 outdir.makedirs()
+            self.cleanup_trees.insert(0, outdir)
         if doctreedir is None:
             doctreedir = srcdir.joinpath(srcdir, self.builddir, 'doctrees')
+            if cleanenv:
+                self.cleanup_trees.insert(0, doctreedir)
         if confoverrides is None:
             confoverrides = {}
         if status is None:
         if warning is None:
             warning = ListOutput('stderr')
         if freshenv is None:
-            freshenv = True
+            freshenv = False
 
         application.Sphinx.__init__(self, srcdir, confdir, outdir, doctreedir,
                                     buildername, confoverrides, status, warning,
                                     freshenv)
 
-    def cleanup(self):
-        trees = [self.outdir, self.doctreedir]
-        if self.made_builddir:
-            trees.append(self.builddir)
-        for tree in trees:
+    def cleanup(self, doctrees=False):
+        for tree in self.cleanup_trees:
             shutil.rmtree(tree, True)