diff options
author | W. Trevor King <wking@drexel.edu> | 2008-11-18 20:42:50 -0500 |
---|---|---|
committer | W. Trevor King <wking@drexel.edu> | 2008-11-18 20:42:50 -0500 |
commit | 19b153b9a86377a2b30cc80fa3f475fed892e2fe (patch) | |
tree | 8f5688707ab1b34ffec2bc4372d087580ff21709 /test.py | |
parent | e4018dfe8cfa553adbd20898c5b42c3462ca1733 (diff) | |
download | bugseverywhere-19b153b9a86377a2b30cc80fa3f475fed892e2fe.tar.gz |
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.
Diffstat (limited to 'test.py')
-rw-r--r-- | test.py | 47 |
1 files changed, 29 insertions, 18 deletions
@@ -9,32 +9,43 @@ that module. """ from libbe import plugin +import unittest import doctest import sys + +suite = unittest.TestSuite() + if len(sys.argv) > 1: + submodname = sys.argv[1] match = False - libbe_failures = libbe_tries = becommands_failures = becommands_tries = 0 - mod = plugin.get_plugin("libbe", sys.argv[1]) - if mod is not None: - libbe_failures, libbe_tries = doctest.testmod(mod) + mod = plugin.get_plugin("libbe", submodname) + if mod is not None and hasattr(mod, "suite"): + suite.addTest(mod.suite) match = True - mod = plugin.get_plugin("becommands", sys.argv[1]) + mod = plugin.get_plugin("becommands", submodname) if mod is not None: - becommands_failures, becommands_tries = doctest.testmod(mod) + suite.addTest(doctest.DocTestSuite(mod)) match = True if not match: - print "No modules match \"%s\"" % sys.argv[1] + print "No modules match \"%s\"" % submodname sys.exit(1) - else: - sys.exit(libbe_failures or becommands_failures) else: failed = False - for module in plugin.iter_plugins("libbe"): - failures, tries = doctest.testmod(module[1]) - if failures: - failed = True - for module in plugin.iter_plugins("becommands"): - failures, tries = doctest.testmod(module[1]) - if failures: - failed = True - sys.exit(failed) + for modname,module in plugin.iter_plugins("libbe"): + if not hasattr(module, "suite"): + continue + suite.addTest(module.suite) + for modname,module in plugin.iter_plugins("becommands"): + suite.addTest(doctest.DocTestSuite(module)) + +#for s in suite._tests: +# print s +#exit(0) +result = unittest.TextTestRunner(verbosity=2).run(suite) + +numErrors = len(result.errors) +numFailures = len(result.failures) +numBad = numErrors + numFailures +if numBad > 126: + numBad = 1 +sys.exit(numBad) |