Major rewrite of RCS backends. RCS now represented as a class.
authorW. Trevor King <wking@drexel.edu>
Wed, 19 Nov 2008 01:42:50 +0000 (20:42 -0500)
committerW. Trevor King <wking@drexel.edu>
Wed, 19 Nov 2008 01:42:50 +0000 (20:42 -0500)
commit19b153b9a86377a2b30cc80fa3f475fed892e2fe
tree8f5688707ab1b34ffec2bc4372d087580ff21709
parente4018dfe8cfa553adbd20898c5b42c3462ca1733
Major rewrite of RCS backends.  RCS now represented as a class.

Lots of changes and just one commit.  This started with bug
dac91856-cb6a-4f69-8c03-38ff0b29aab2, when I noticed that new bugs
were not being added appropriately with the Git backend.  I'd been
working with Git trouble before with bug
0cad2ac6-76ef-4a88-abdf-b2e02de76f5c, and decided things would be
better off if I just scrapped the current RCS architecture and went to
a more object oriented setup.  So I did.  It's not clear how to add
support for an RCS backend:
 * Create a new module that
   - defines an inheritor of rsc.RCS, overriding the _rcs_*() methods
   - provide a new() function for instantizating the new class
   - defines an inheritor of rcs.RCStestCase, overiding the Class attribute
   - defines 'suite' a unittest.TestSuite testing the module
 * Add your new module to the rest in rcs._get_matching_rcs()
 * Add your new module to the rest in libbe/tests.py
Although I'm not sure libbe/tests.py is still usefull.

The new framework clears out a bunch of hackery that used to be
involved with supporting becommands/diff.py.  There's still room for
progress though.  While implementing the new verision, I moved the
testing framework over from doctest to a doctest/unittest combination.
Longer tests that don't demonstrate a function's usage should be moved
to unittests at the end of the module, since unittest has better
support for setup/teardown, etc.

The new framework also revealed some underimplented backends, most
notably arch.  These backends have now been fixed.

I also tweaked the test_usage.sh script to run through all the backends
if it is called with no arguments.

The fix for the dac bug turned out to be an unflushed file write :p.
39 files changed:
.be/bugs/0cad2ac6-76ef-4a88-abdf-b2e02de76f5c/values
.be/bugs/65776f00-34d8-4b58-874d-333196a5e245/values
.be/bugs/dac91856-cb6a-4f69-8c03-38ff0b29aab2/comments/1182d8e6-5e87-4d0a-b271-c298c36bbc21/body [new file with mode: 0644]
.be/bugs/dac91856-cb6a-4f69-8c03-38ff0b29aab2/comments/1182d8e6-5e87-4d0a-b271-c298c36bbc21/values [new file with mode: 0644]
.be/bugs/dac91856-cb6a-4f69-8c03-38ff0b29aab2/comments/8097468f-87a9-4d84-ac20-1772393bb54d/body [new file with mode: 0644]
.be/bugs/dac91856-cb6a-4f69-8c03-38ff0b29aab2/comments/8097468f-87a9-4d84-ac20-1772393bb54d/values [new file with mode: 0644]
.be/bugs/dac91856-cb6a-4f69-8c03-38ff0b29aab2/values [new file with mode: 0644]
becommands/assign.py
becommands/close.py
becommands/comment.py
becommands/list.py
becommands/new.py
becommands/open.py
becommands/remove.py
becommands/set.py
becommands/set_root.py
becommands/severity.py
becommands/status.py
becommands/target.py
becommands/upgrade.py
libbe/arch.py
libbe/bug.py
libbe/bugdir.py
libbe/bzr.py
libbe/cmdutil.py
libbe/config.py
libbe/diff.py
libbe/git.py
libbe/hg.py
libbe/mapfile.py
libbe/names.py
libbe/no_rcs.py [deleted file]
libbe/plugin.py
libbe/rcs.py
libbe/restconvert.py
libbe/tests.py
libbe/utility.py
test.py
test_usage.sh