diff --git a/py/doc/conf.py b/py/doc/conf.py
index f39b3a343..175ccef86 100644
--- a/py/doc/conf.py
+++ b/py/doc/conf.py
@@ -92,7 +92,7 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'basic'
+html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@@ -148,7 +148,7 @@ html_static_path = ['_static']
#html_split_index = False
# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
+html_show_sourcelink = False
# If true, an OpenSearch description file will be output, and all pages will
# contain a tag referring to it. The value of this option must be the
diff --git a/py/doc/future.txt b/py/doc/future.txt
deleted file mode 100644
index b18066db4..000000000
--- a/py/doc/future.txt
+++ /dev/null
@@ -1,145 +0,0 @@
-=======================================================
-Visions and ideas for further development of the py lib
-=======================================================
-
-
-This document tries to describe directions and guiding ideas
-for the near-future development of the py lib. *Note that all
-statements within this document - even if they sound factual -
-mostly just express thoughts and ideas. They not always refer to
-real code so read with some caution.*
-
-
-Distribute tests ad-hoc across multiple platforms
-======================================================
-
-After some more refactoring and unification of
-the current testing and distribution support code
-we'd like to be able to run tests on multiple
-platforms simultanously and allow for interaction
-and introspection into the (remote) failures.
-
-
-Make APIGEN useful for more projects
-================================================
-
-The new APIGEN tool offers rich information
-derived from running tests against an application:
-argument types and callsites, i.e. it shows
-the places where a particular API is used.
-In its first incarnation, there are still
-some specialties that likely prevent it
-from documenting APIs for other projects.
-We'd like to evolve to a `py.apigen` tool
-that can make use of information provided
-by a py.test run.
-
-Consider APIGEN and pdb integration
-===================================
-
-The information provided by APIGEN can be used in many
-different ways. An example of this could be to write
-an extension to pdb which makes it available.
-Imagine you could issue a pdb command
-"info " and get information
-regarding incoming, and outgoing types, possible
-exceptions, field types and call sites.
-
-Distribute channels/programs across networks
-================================================
-
-Apart from stabilizing setup/teardown procedures
-for `py.execnet`_, we'd like to generalize its
-implementation to allow connecting two programs
-across multiple hosts, i.e. we'd like to arbitrarily
-send "channels" across the network. Likely this
-will be done by using the "pipe" model, i.e.
-that each channel is actually a pair of endpoints,
-both of which can be independently transported
-across the network. The programs who "own"
-these endpoints remain connected.
-
-.. _`py.execnet`: execnet.html
-
-Benchmarking and persistent storage
-=========================================
-
-For storing test results, but also benchmarking
-and other information, we need a solid way
-to store all kinds of information from test runs.
-We'd like to generate statistics or html-overview
-out of it, but also use such information to determine when
-a certain test broke, or when its performance
-decreased considerably.
-
-.. _`restructured text`: http://docutils.sourceforge.net/docs/user/rst/quickref.html
-.. _`python standard library`: http://www.python.org/doc/2.3.4/lib/lib.html
-.. _`xpython EuroPython 2004 talk`: http://codespeak.net/svn/user/hpk/talks/xpython-talk.txt
-.. _`under the xpy tree`: http://codespeak.net/svn/user/hpk/xpy/xml.py
-.. _`future book`: future.html
-.. _`PEP-324 subprocess module`: http://www.python.org/peps/pep-0324.html
-.. _`subprocess implementation`: http://www.lysator.liu.se/~astrand/popen5/
-.. _`py.test`: test.html
-
-
-.. _`general-path`:
-.. _`a more general view on path objects`:
-
-Refactor path implementations to use a Filesystem Abstraction
-=============================================================
-
-It seems like a good idea to refactor all `py.path`_ Path implementations to
-use an internal Filesystem abstraction. The current code base
-would be transformed to have Filesystem implementations for e.g.
-local, subversion and subversion "working copy" filesystems. Today
-the according code is scattered through path-handling code.
-
-On a related note, Armin Rigo has hacked `pylufs`_ and more recently has
-written `pyfuse`_ which allow to
-implement kernel-level linux filesystems with pure python. Now
-the idea is that the mentioned filesystem implementations would
-be directly usable for such linux-filesystem glue code.
-
-In other words, implementing a `memoryfs`_ or a `dictfs`_ would
-give you two things for free: a filesystem mountable at kernel level
-as well as a uniform "path" object allowing you to access your
-filesystem in convenient ways.
-
-Also interesting to check out is Will McGugan's work on
-his `fs package`_.
-
-I think the main question is what the very fundamental
-filesystem API should look like. Here are some doctests
-on how a `draft py.fs`_ could look like. There also
-is Matthew Scotts `dictproxy patch`_ which adds
-``py.path.dict`` and ``py.path.proxy``.
-
-
-.. _`dictproxy patch`: http://codespeak.net/pipermail/py-dev/attachments/20050128/d9595512/virtual1-0001.bin
-.. _`draft py.fs`: draft_pyfs
-.. _`py.path`: http://codespeak.net/py/dist/path.html
-.. _`fs package`: http://www.willmcgugan.com/2008/09/21/announcing-fs-010-a-python-file-system/#comment-60276
-.. _`memoryfs`: http://codespeak.net/svn/user/arigo/hack/pyfuse/memoryfs.py
-.. _`dictfs`: http://codespeak.net/pipermail/py-dev/2005-January/000191.html
-.. _`pylufs`: http://codespeak.net/svn/user/arigo/hack/pylufs/
-.. _`pyfuse`: http://codespeak.net/svn/user/arigo/hack/pyfuse/
-
-
-Integrate interactive completion
-==================================
-
-It'd be nice to integrate the bash-like
-rlcompleter2_ python command line completer
-into the py lib, and making it work remotely
-and with pdb.
-
-.. _rlcompleter2: http://codespeak.net/rlcompleter2/
-
-Consider more features
-==================================
-
-There are many more features and useful classes
-that might be nice to integrate. For example, we might put
-Armin's `lazy list`_ implementation into the py lib.
-
-.. _`lazy list`: http://codespeak.net/svn/user/arigo/hack/misc/collect.py
diff --git a/py/doc/impl-test.txt b/py/doc/impl-test.txt
index 8e1adde1c..f76b5f723 100644
--- a/py/doc/impl-test.txt
+++ b/py/doc/impl-test.txt
@@ -1,113 +1,9 @@
===============================================
-Implementation and Customization of ``py.test``
+ATTIC documentation
===============================================
-.. _`basicpicture`:
-
-
-Collecting and running tests / implementation remarks
-======================================================
-
-In order to customize ``py.test`` it's good to understand
-its basic architure (WARNING: these are not guaranteed
-yet to stay the way they are now!)::
-
- ___________________
- | |
- | Collector |
- |___________________|
- / \
- | Item.run()
- | ^
- receive test Items /
- | /execute test Item
- | /
- ___________________/
- | |
- | Session |
- |___________________|
-
- .............................
- . conftest.py configuration .
- . cmdline options .
- .............................
-
-
-The *Session* basically receives test *Items* from a *Collector*,
-and executes them via the ``Item.run()`` method. It monitors
-the outcome of the test and reports about failures and successes.
-
-.. _`collection process`:
-
-Collectors and the test collection process
-------------------------------------------
-
-The collecting process is iterative, i.e. the session
-traverses and generates a *collector tree*. Here is an example of such
-a tree, generated with the command ``py.test --collectonly py/xmlobj``::
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-By default all directories not starting with a dot are traversed,
-looking for ``test_*.py`` and ``*_test.py`` files. Those files
-are imported under their `package name`_.
-
-The Module collector looks for test functions
-and test classes and methods. Test functions and methods
-are prefixed ``test`` by default. Test classes must
-start with a capitalized ``Test`` prefix.
-
-
-.. _`collector API`:
-
-test items are collectors as well
----------------------------------
-
-To make the reporting life simple for the session object
-items offer a ``run()`` method as well. In fact the session
-distinguishes "collectors" from "items" solely by interpreting
-their return value. If it is a list, then we recurse into
-it, otherwise we consider the "test" as passed.
-
-.. _`package name`:
-
-constructing the package name for test modules
--------------------------------------------------
-
-Test modules are imported under their fully qualified
-name. Given a filesystem ``fspath`` it is constructed as follows:
-
-* walk the directories up to the last one that contains
- an ``__init__.py`` file.
-
-* perform ``sys.path.insert(0, basedir)``.
-
-* import the root package as ``root``
-
-* determine the fully qualified name for ``fspath`` by either:
-
- * calling ``root.__pkg__.getimportname(fspath)`` if the
- ``__pkg__`` exists.` or
-
- * otherwise use the relative path of the module path to
- the base dir and turn slashes into dots and strike
- the trailing ``.py``.
-
+XXX REVIEW and remove the below XXX
Customizing the testing process
@@ -140,79 +36,10 @@ and modules the default collectors will produce
custom Collectors and Items if they are found
in a local ``conftest.py`` file.
-example: perform additional ReST checks
-.......................................
-
-With your custom collectors or items you can completely
-derive from the standard way of collecting and running
-tests in a localized manner. Let's look at an example.
-If you invoke ``py.test --collectonly py/documentation``
-then you get::
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-In ``py/documentation/conftest.py`` you find the following
-customization::
-
- class DocDirectory(py.test.collect.Directory):
-
- def run(self):
- results = super(DocDirectory, self).run()
- for x in self.fspath.listdir('*.txt', sort=True):
- results.append(x.basename)
- return results
-
- def join(self, name):
- if not name.endswith('.txt'):
- return super(DocDirectory, self).join(name)
- p = self.fspath.join(name)
- if p.check(file=1):
- return ReSTChecker(p, parent=self)
-
- Directory = DocDirectory
-
-The existence of the 'Directory' name in the
-``pypy/documentation/conftest.py`` module makes the collection
-process defer to our custom "DocDirectory" collector. We extend
-the set of collected test items by ``ReSTChecker`` instances
-which themselves create ``ReSTSyntaxTest`` and ``LinkCheckerMaker``
-items. All of this instances (need to) follow the `collector API`_.
-
-Customizing the reporting of Test Failures
---------------------------------------------
-
-XXX implement Item.repr_run and Item.repr_path for your test items
-
-Writing new assertion methods
--------------------------------------
-
-XXX __tracebackhide__, and use "print"
-
Customizing the collection process in a module
----------------------------------------------
- REPEATED WARNING: details of the collection and running process are
- still subject to refactorings and thus details will change.
- If you are customizing py.test at "Item" level then you
- definitely want to be subscribed to the `py-dev mailing list`_
- to follow ongoing development.
-
If you have a module where you want to take responsibility for
collecting your own test Items and possibly even for executing
a test then you can provide `generative tests`_ that yield
@@ -232,14 +59,13 @@ The collection process dynamically consults the *chain of conftest.py*
modules to determine collectors and items at ``Directory``, ``Module``,
``Class``, ``Function`` or ``Generator`` level respectively.
-Customizing execution of Functions
-----------------------------------
+Customizing execution of Items and Functions
+----------------------------------------------------
- ``py.test.collect.Function`` test items control execution
- of a test function. ``function.run()`` will get called by the
- session in order to actually run a test. The method is responsible
- for performing proper setup/teardown ("Test Fixtures") for a
- Function test.
+ of a test function through its ``function.runtest()`` method.
+ This method is responsible for performing setup and teardown
+ ("Test Fixtures") for a test Function.
- ``Function.execute(target, *args)`` methods are invoked by
the default ``Function.run()`` to actually execute a python
diff --git a/py/doc/index.txt b/py/doc/index.txt
index 1a5c86f77..c5fb5e56a 100644
--- a/py/doc/index.txt
+++ b/py/doc/index.txt
@@ -44,7 +44,6 @@ Full Contents
.. toctree::
:maxdepth: 2
- :numbered:
test
execnet
diff --git a/py/doc/test-ext.txt b/py/doc/test-ext.txt
index c245f197f..7b4988d2e 100644
--- a/py/doc/test-ext.txt
+++ b/py/doc/test-ext.txt
@@ -46,11 +46,78 @@ behind the ``--`` double-dash.
IOW, you can set default values for options per project, per
home-directoray, per shell session or per test-run.
+.. _`collection process`:
+
+Test Collection process
+======================================================
+
+.. module:: py.test.collect
+ :synopsis: basic test collection classes
+
+The collecting process is iterative so that distribution
+and execution of tests can start as soon as the first test
+item is collected. Collection nodes with children are
+called "Collectors" and terminal nodes are called "Items".
+Here is an example of such a tree, generated with the
+command ``py.test --collectonly py/xmlobj``::
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+By default all directories not starting with a dot are traversed,
+looking for ``test_*.py`` and ``*_test.py`` files. Those Python
+files are imported under their `package name`_.
+
+The Module collector looks for test functions
+and test classes and methods. Test functions and methods
+are prefixed ``test`` by default. Test classes must
+start with a capitalized ``Test`` prefix.
+
+.. _`package name`:
+
+constructing the package name for test modules
+-------------------------------------------------
+
+Test modules are imported under their fully qualified
+name. Given a filesystem ``fspath`` it is constructed as follows:
+
+* walk the directories up to the last one that contains
+ an ``__init__.py`` file.
+
+* perform ``sys.path.insert(0, basedir)``.
+
+* import the root package as ``root``
+
+* determine the fully qualified name for ``fspath`` by either:
+
+ * calling ``root.__pkg__.getimportname(fspath)`` if the
+ ``__pkg__`` exists.` or
+
+ * otherwise use the relative path of the module path to
+ the base dir and turn slashes into dots and strike
+ the trailing ``.py``.
+
+
+
Plugin methods
=======================================
+.. module:: py.__.test.pluginapi
+
A Plugin class may implement the following attributes and methods:
XXX
diff --git a/py/doc/why_py.txt b/py/doc/why_py.txt
deleted file mode 100644
index e813fd99f..000000000
--- a/py/doc/why_py.txt
+++ /dev/null
@@ -1,182 +0,0 @@
-==============================================
-Why, who, what and how do you do *the py lib*?
-==============================================
-
-
-Why did we start the py lib?
-============================
-
-Among the main motivation for the py lib and its flagship
-py.test tool were:
-
-- to test applications with a testing tool that provides
- advanced features out of the box, yet allows full customization
- per-project.
-
-- distribute applications in an ad-hoc way both for testing
- and for application integration purposes.
-
-- help with neutralizing platform and python version differences
-
-- offer a uniform way to access local and remote file resources
-
-- offer some unique features like micro-threads (greenlets)
-
-
-What is the py libs current focus?
-==================================
-
-testing testing testing
------------------------
-
-Currently, the main focus of the py lib is to get a decent
-`test environment`_, indeed to produce the best one out there.
-Writing, distributing and deploying tests should become
-a snap ... and fun!
-
-On a side note: automated tests fit very well to the dynamism
-of Python. Automated tests ease development and allow fast
-refactoring cycles. Automated tests are a means of
-communication as well.
-
-
-ad-hoc distribution of programs
-------------------------------------
-
-The py lib through its `py.execnet`_ namespaces offers
-support for ad-hoc distributing programs across
-a network and subprocesses. We'd like to generalize
-this approach further to instantiate and let whole
-ad-hoc networks communicate with each other while
-keeping to a simple programming model.
-
-.. _`py.execnet`: execnet.html
-
-
-allowing maximum refactoring in the future ...
-----------------------------------------------
-
-explicit name export control
-............................
-
-In order to allow a fast development pace across versions of
-the py lib there is **explicit name export control**. You
-should only see names which make sense to use from the outside
-and which the py lib developers want to guarantee across versions.
-However, you don't need to treat the ``py`` lib as
-anything special. You can simply use the usual ``import``
-statement and will not notice much of a difference - except that
-the namespaces you'll see from the ``py`` lib are relatively
-clean and have no clutter.
-
-Release policy & API maintenance
-........................................
-
-We'll talk about major, minor and micro numbers as the three
-numbers in "1.2.3" respectively. These are the
-the rough release policies:
-
-- Micro-releases are bug fix releases and should not introduce
- new names to the public API. They may add tests and thus
- further define the behaviour of the py lib. They may
- completly change the implementation but the public API
- tests should continue to run (unless they needed to
- get fixed themselves).
-
-- No **tested feature** of the exported py API shall vanish
- across minor releases until it is marked deprecated.
-
- For example, pure API tests of a future version 1.0 are to
- continue to fully run on 1.1 and so on. If an API gets
- deprecated with a minor release it goes with the next minor
- release. Thus if you don't use deprecated APIs you should
- be able to use the next two minor releases. However, if
- you relied on some untested implementation behaviour,
- you may still get screwed. Solution: add API tests to the
- py lib :-) It's really the tests that make the difference.
-
-- Pure API tests are not allowed to access any implementation
- level details. For example, accessing names starting with
- a single leading '_' is generally seen as an implementation
- level detail.
-
-- major releases *should*, but are not required to, pass
- all API tests of the previous latest major released
- version.
-
-
-the need to find the right *paths* ...
---------------------------------------
-
-Another focus are well tested so called *path* implementations
-that allow you to seemlessly work with different backends,
-currently a local filesystem, subversion working copies and
-subversion remote URLs.
-
-How does py development work?
-=============================
-
-Communication and coding style
-------------------------------
-
-We are discussing things on our `py-dev mailing list`_
-and collaborate via the codespeak subversion repository.
-
-We follow a `coding style`_ which strongly builds on `PEP 8`_,
-the basic python coding style document.
-
-It's easy to get commit rights especially if you are an
-experienced python developer and share some of the
-frustrations described above.
-
-Licensing
------------------
-
-The Py lib is released under the MIT license and all
-contributors need to release their contributions
-under this license as well.
-
-connections with PyPy_
----------------------------------
-
-A major motivation for writing the py lib stems from needs
-during PyPy_ development, most importantly testing and
-file system access issues. PyPy puts a lot of pressure
-on a testing environment and thus is a good **reality test**.
-
-Who is "we"?
-=============================
-
-Some initial code was written from *Jens-Uwe Mager* and *Holger
-Krekel*, after which Holger continued on a previous
-incarnations of the py.test tool (known first as 'utest', then
-as 'std.utest', now for some 2 years 'py.test').
-
-Helpful discussions took place with *Martijn Faassen*, *Stephan
-Schwarzer*, *Brian Dorsey*, *Grigh Gheorghiu* and then
-*Armin Rigo* who contributed important parts.
-He and Holger came up with a couple of iterations of the
-testing-code that reduced the API to basically nothing: just the
-plain assert statement and a ``py.test.raises`` method to
-check for occuring exceptions within tests.
-
-Currently (as of 2007), there are more people involved
-and also have worked funded through merlinux_ and the
-PyPy EU project, Carl Friedrich Bolz, Guido Wesdorp
-and Maciej Fijalkowski who contributed particularly
-in 2006 and 2007 major parts of the py lib.
-
-.. _`talk at EP2004`: http://codespeak.net/svn/user/hpk/talks/std-talk.txt
-.. _`coding style`: coding-style.html
-.. _`PEP 8`: http://www.python.org/peps/pep-0008.html
-.. _`py-dev mailing list`: http://codespeak.net/mailman/listinfo/py-dev
-.. _`test environment`: test.html
-.. _`PyPy`: http://codespeak.net/pypy
-.. _future: future.html
-.. _`py.test tool and library`: test.html
-.. _merlinux: http://merlinux.de
-
---
-
-.. [#] FOSS is an evolving acronym for Free and Open Source Software
-