diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-03-14 19:17:17 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-03-14 19:17:17 -0400 |
commit | dad7ff8429e1c785840687d93dc17bfd43ba8a21 (patch) | |
tree | c5767330e9a4709722f72e579751c64f192d05ea | |
parent | 3048c7084e1dd8479359d4183f712db1ebd3fc53 (diff) | |
download | python-coveragepy-git-dad7ff8429e1c785840687d93dc17bfd43ba8a21.tar.gz |
A farm of directories holding test cases.
--HG--
rename : test/white.py,cover => test/farm/000/gold/white.py,cover
rename : test/white.py => test/farm/000/src/white.py
-rw-r--r-- | test/farm/000/gold/white.py,cover | 31 | ||||
-rw-r--r-- | test/farm/000/run.py | 7 | ||||
-rw-r--r-- | test/farm/000/src/white.py | 31 | ||||
-rw-r--r-- | test/test_farm.py | 65 |
4 files changed, 134 insertions, 0 deletions
diff --git a/test/farm/000/gold/white.py,cover b/test/farm/000/gold/white.py,cover new file mode 100644 index 00000000..a959ed5a --- /dev/null +++ b/test/farm/000/gold/white.py,cover @@ -0,0 +1,31 @@ + # A test case sent to me by Steve White
+
+> def f(self):
+! if self==1:
+! pass
+! elif self.m('fred'):
+! pass
+! elif (g==1) and (b==2):
+! pass
+! elif self.m('fred')==True:
+! pass
+! elif ((g==1) and (b==2))==True:
+! pass
+! else:
+! pass
+
+> def g(x):
+> if x == 1:
+> a = 1
+! else:
+! a = 2
+
+> g(1)
+
+> def h(x):
+> if x == 1:
+! a = 1
+> else:
+> a = 2
+
+> h(2)
diff --git a/test/farm/000/run.py b/test/farm/000/run.py new file mode 100644 index 00000000..18425916 --- /dev/null +++ b/test/farm/000/run.py @@ -0,0 +1,7 @@ +clean("src", "*,cover") +run(""" + coverage -x white.py + coverage -a white.py + """) +compare("src", "gold", "*,cover") +clean("src", "*,cover") diff --git a/test/farm/000/src/white.py b/test/farm/000/src/white.py new file mode 100644 index 00000000..0c4bcb81 --- /dev/null +++ b/test/farm/000/src/white.py @@ -0,0 +1,31 @@ +# A test case sent to me by Steve White + +def f(self): + if self==1: + pass + elif self.m('fred'): + pass + elif (g==1) and (b==2): + pass + elif self.m('fred')==True: + pass + elif ((g==1) and (b==2))==True: + pass + else: + pass + +def g(x): + if x == 1: + a = 1 + else: + a = 2 + +g(1) + +def h(x): + if x == 1: + a = 1 + else: + a = 2 + +h(2) diff --git a/test/test_farm.py b/test/test_farm.py new file mode 100644 index 00000000..50f4fdef --- /dev/null +++ b/test/test_farm.py @@ -0,0 +1,65 @@ +"""Run tests in the farm subdirectory. Requires nose.""" + +import filecmp, fnmatch, glob, os, shutil, sys +from coverage.files import FileLocator + + +def test_farm(): + """A test-generating function for nose to find and run.""" + for fname in glob.glob("test/farm/*/*.py"): + case = FarmTestCase(fname) + yield (case.execute,) + + +class FarmTestCase(object): + def __init__(self, runpy): + self.dir, self.runpy = os.path.split(runpy) + + def cd(self, newdir): + cwd = os.getcwd() + os.chdir(newdir) + return cwd + + def execute(self): + print "Running", self.runpy, "in", self.dir + cwd = self.cd(self.dir) + + glo = dict([(a, getattr(self, a)) for a in "run compare clean".split()]) + execfile(self.runpy, glo) + + self.cd(cwd) + + def fnmatch_list(self, files, filepattern): + """Filter the list of `files` to only those that match `filepattern`.""" + + return [f for f in files if fnmatch.fnmatch(f, filepattern)] + + # Functions usable inside farm run.py files + + def run(self, cmds, rundir="src"): + """Run a list of commands. + + `cmds` is a string, commands separated by newlines. + `rundir` is the directory in which to run the commands. + + """ + cwd = self.cd(rundir) + for cmd in cmds.split("\n"): + stdin, stdouterr = os.popen4(cmd) + output = stdouterr.read() + print output, + self.cd(cwd) + + def compare(self, dir1, dir2, filepattern=None): + dc = filecmp.dircmp(dir1, dir2) + + pass + + def clean(self, cleandir): + shutil.rmtree(cleandir) + + +# So that we can run just one farm run.py at a time. +if __name__ == '__main__': + case = FarmTestCase(sys.argv[1]) + case.execute() |