The test suite's handling of status output is a royal mess. Three problems Ben
Collins-Sussman and I just found:
1. The 'repos_rev' attribute is totally obsolete and needs to go away.
It holds the repository head revision, for historical reasons
having to do with what our 'status -u' output used to give, but no
longer gives.
2. tree.py:build_tree_from_status() misparses status lines for dirs
that are scheduled delete and missing. For example, basic_tests
10 does this with A/B/E at one point, and because the working
rev is expected to be either a series of digits or a "-", the
entire line fails to match, because the working rev is actually
"?" (see example below).
3. That same function handles its match groups very sloppily. We
need to start parsing out information more strictly.
4. The singleton handler 'expect_extra_files' should just say
"object", not "disk object", since in basic_tests 10, for
example, it is handling status trees not disk trees.
5. Singleton handlers in general should be classes! This is Python,
not C, for crying out loud. The whole callback/baton idiom is
silly in an object-oriented language.
The example of the missing schedule-delete directory status line is:
D * - ? ? working_copies/basic_tests-10/A/B/E
Note that that is *with* the patch from issue #1553; without the patch, the
working rev might be "?" or "0" instead of "-". But we can't apply that patch
until the test suite can be fixed to tolerate its new, more correct output, and
that will be hard before the above problems are fixed.