diff options
Diffstat (limited to 'test/test_cmdline.py')
| -rw-r--r-- | test/test_cmdline.py | 212 | 
1 files changed, 203 insertions, 9 deletions
diff --git a/test/test_cmdline.py b/test/test_cmdline.py index b8a12ba8..37aac338 100644 --- a/test/test_cmdline.py +++ b/test/test_cmdline.py @@ -1,6 +1,7 @@  """Test cmdline.py for coverage."""  import re, shlex, textwrap, unittest +import mock  import coverage  from coveragetest import CoverageTest @@ -82,25 +83,32 @@ class CmdLineParserTest(CoverageTest):              help_out="Unexpected arguments: baz quux"              ) +    def testNothingToDo(self): +        self.command_line('-x', ret=1, +            help_out="Nothing to do." +            ) +  class CmdLineActionTest(CoverageTest):      """Tests of execution paths through the command line interpreter."""      def model_object(self):          """Return a Mock suitable for use in CoverageScript.""" -        import mock          mk = mock.Mock()          mk.coverage.return_value = mk          return mk -         + +    def run_command_line(self, args): +        """Run `args` through command_line, returning the Mock it used.""" +        m = self.model_object() +        coverage.CoverageScript( +            _covpkg=m, _run_python_file=m.run_python_file +            ).command_line(shlex.split(args)) +        return m +          def cmd_executes(self, args, code):          """Assert that the `args` end up executing the sequence in `code`.""" -        argv = shlex.split(args) -        m1 = self.model_object() -         -        coverage.CoverageScript( -            _covpkg=m1, _run_python_file=m1.run_python_file -            ).command_line(argv) +        m1 = self.run_command_line(args)          code = textwrap.dedent(code)          code = re.sub(r"(?m)^\.", "m2.", code) @@ -109,7 +117,24 @@ class CmdLineActionTest(CoverageTest):          eval(code_obj, globals(), { 'm2': m2 })          self.assertEqual(m1.method_calls, m2.method_calls) -    def testExecution(self): +    def cmd_executes_same(self, args1, args2): +        """Assert that the `args1` executes the same as `args2`.""" +        m1 = self.run_command_line(args1) +        m2 = self.run_command_line(args2) +        self.assertEqual(m1.method_calls, m2.method_calls) +         +    def testErase(self): +        # coverage -e +        self.cmd_executes("-e", """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=None) +            .erase() +            """) +        self.cmd_executes_same("-e", "--erase") + +    def testExecute(self): +        # coverage -x [-p] [-L] [--timid] MODULE.py [ARG1 ARG2 ...] +         +        # -x calls coverage.load first.          self.cmd_executes("-x foo.py", """\              .coverage(cover_pylib=None, data_suffix=False, timid=None)              .load() @@ -118,6 +143,7 @@ class CmdLineActionTest(CoverageTest):              .stop()              .save()              """) +        # -e -x calls coverage.erase first.          self.cmd_executes("-e -x foo.py", """\              .coverage(cover_pylib=None, data_suffix=False, timid=None)              .erase() @@ -126,6 +152,174 @@ class CmdLineActionTest(CoverageTest):              .stop()              .save()              """) +        # --timid sets a flag, and program arguments get passed through. +        self.cmd_executes("-x --timid foo.py abc 123", """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=True) +            .load() +            .start() +            .run_python_file('foo.py', ['foo.py', 'abc', '123']) +            .stop() +            .save() +            """) +        # -L sets a flag, and flags for the program don't confuse us. +        self.cmd_executes("-x -p -L foo.py -a -b", """\ +            .coverage(cover_pylib=True, data_suffix=True, timid=None) +            .load() +            .start() +            .run_python_file('foo.py', ['foo.py', '-a', '-b']) +            .stop() +            .save() +            """) + +        # Check that long forms of flags do the same thing as short forms. +        self.cmd_executes_same("-x f.py", "--execute f.py") +        self.cmd_executes_same("-e -x f.py", "--erase --execute f.py") +        self.cmd_executes_same("-x -p f.py", "-x --parallel-mode f.py") +        self.cmd_executes_same("-x -L f.py", "-x --pylib f.py") + +    def testCombine(self): +        # coverage -c +        self.cmd_executes("-c", """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=None) +            .load() +            .combine() +            .save() +            """) +        self.cmd_executes_same("-c", "--combine") + +    def testReport(self): +        # coverage -r [-m] [-i] [-o DIR,...] [FILE1 FILE2 ...] + +        init_load = """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=None) +            .load()\n""" +             +        self.cmd_executes("-r", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=None, morfs=[], +                    show_missing=None) +            """) +        self.cmd_executes("-r -i", init_load + """\ +            .report(ignore_errors=True, omit_prefixes=None, morfs=[], +                    show_missing=None) +            """) +        self.cmd_executes("-r -m", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=None, morfs=[], +                    show_missing=True) +            """) +        self.cmd_executes("-r -o fooey", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=["fooey"], +                    morfs=[], show_missing=None) +            """) +        self.cmd_executes("-r -o fooey,booey", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=["fooey", "booey"], +                    morfs=[], show_missing=None) +            """) +        self.cmd_executes("-r mod1", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=None, +                    morfs=["mod1"], show_missing=None) +            """) +        self.cmd_executes("-r mod1 mod2 mod3", init_load + """\ +            .report(ignore_errors=None, omit_prefixes=None, +                    morfs=["mod1", "mod2", "mod3"], show_missing=None) +            """) + +        self.cmd_executes_same("-r", "--report") +        self.cmd_executes_same("-r -i", "-r --ignore-errors") +        self.cmd_executes_same("-r -m", "-r --show-missing") +        self.cmd_executes_same("-r -o f", "-r --omit=f") +        self.cmd_executes_same("-r -o f", "-r --omit f") +        self.cmd_executes_same("-r -o f,b", "-r --omit=f,b") +        self.cmd_executes_same("-r -o f,b", "-r --omit f,b") +        self.cmd_executes_same("-r -of", "-r --omit=f") +        self.cmd_executes_same("-r -of,b", "-r --omit=f,b") + +    def testAnnotate(self): +        # coverage -a [-d DIR] [-i] [-o DIR,...] [FILE1 FILE2 ...] +        init_load = """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=None) +            .load()\n""" +             +        self.cmd_executes("-a", init_load + """\ +            .annotate(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-a -d dir1", init_load + """\ +            .annotate(directory="dir1", ignore_errors=None, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-a -i", init_load + """\ +            .annotate(directory=None, ignore_errors=True, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-a -o fooey", init_load + """\ +            .annotate(directory=None, ignore_errors=None, +                    omit_prefixes=["fooey"], morfs=[]) +            """) +        self.cmd_executes("-a -o fooey,booey", init_load + """\ +            .annotate(directory=None, ignore_errors=None, +                    omit_prefixes=["fooey", "booey"], morfs=[]) +            """) +        self.cmd_executes("-a mod1", init_load + """\ +            .annotate(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=["mod1"]) +            """) +        self.cmd_executes("-a mod1 mod2 mod3", init_load + """\ +            .annotate(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=["mod1", "mod2", "mod3"]) +            """) + +        self.cmd_executes_same("-a", "--annotate") +        self.cmd_executes_same("-a -d d1", "-a --directory=d1") +        self.cmd_executes_same("-a -i", "-a --ignore-errors") +        self.cmd_executes_same("-a -o f", "-a --omit=f") +        self.cmd_executes_same("-a -o f", "-a --omit f") +        self.cmd_executes_same("-a -o f,b", "-a --omit=f,b") +        self.cmd_executes_same("-a -o f,b", "-a --omit f,b") +        self.cmd_executes_same("-a -of", "-a --omit=f") +        self.cmd_executes_same("-a -of,b", "-a --omit=f,b") + +    def testHtmlReport(self): +        # coverage -b -d DIR [-i] [-o DIR,...] [FILE1 FILE2 ...] +        init_load = """\ +            .coverage(cover_pylib=None, data_suffix=False, timid=None) +            .load()\n""" +             +        self.cmd_executes("-b", init_load + """\ +            .html_report(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-b -d dir1", init_load + """\ +            .html_report(directory="dir1", ignore_errors=None, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-b -i", init_load + """\ +            .html_report(directory=None, ignore_errors=True, +                    omit_prefixes=None, morfs=[]) +            """) +        self.cmd_executes("-b -o fooey", init_load + """\ +            .html_report(directory=None, ignore_errors=None, +                    omit_prefixes=["fooey"], morfs=[]) +            """) +        self.cmd_executes("-b -o fooey,booey", init_load + """\ +            .html_report(directory=None, ignore_errors=None, +                    omit_prefixes=["fooey", "booey"], morfs=[]) +            """) +        self.cmd_executes("-b mod1", init_load + """\ +            .html_report(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=["mod1"]) +            """) +        self.cmd_executes("-b mod1 mod2 mod3", init_load + """\ +            .html_report(directory=None, ignore_errors=None, +                    omit_prefixes=None, morfs=["mod1", "mod2", "mod3"]) +            """) + +        self.cmd_executes_same("-b", "--html") +        self.cmd_executes_same("-b -d d1", "-b --directory=d1") +        self.cmd_executes_same("-b -i", "-b --ignore-errors") +        self.cmd_executes_same("-b -o f", "-b --omit=f") +        self.cmd_executes_same("-b -o f,b", "-b --omit=f,b") +        self.cmd_executes_same("-b -of", "-b --omit=f") +        self.cmd_executes_same("-b -of,b", "-b --omit=f,b")  if __name__ == '__main__':  | 
