Ejemplo n.º 1
0
    def test_completionEmpty(self):
        "An empty target generates completions for the whole directory"
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        os.chdir(tmpdir)
        os.mkdir('the_pkg')
        fh = open(os.path.join('the_pkg', '__init__.py'), 'w')
        fh.write('')
        fh.close()
        fh = open(os.path.join('the_pkg', 'test_things.py'), 'w')
        fh.write(
"""
import unittest

class A(unittest.TestCase):
    def testOne(self):
        pass
    def testTwo(self):
        pass
""")
        fh.close()
        c = set(loader.getCompletions('').split('\n'))
        self.assertIn('the_pkg', c)
        self.assertIn('the_pkg.test_things', c)
        self.assertIn('the_pkg.test_things.A.testOne', c)
        self.assertIn('the_pkg.test_things.A.testTwo', c)
        os.chdir(cwd)
        shutil.rmtree(tmpdir)
Ejemplo n.º 2
0
    def test_completionEmpty(self):
        """
        An empty target generates completions for the whole directory
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir("the_pkg")
        fh = open(os.path.join("the_pkg", "__init__.py"), "w")
        fh.write("")
        fh.close()
        fh = open(os.path.join("the_pkg", "test_things.py"), "w")
        fh.write(
            dedent(
                """
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """
            )
        )
        fh.close()
        c = set(loader.getCompletions("").split("\n"))
        self.assertIn("the_pkg", c)
        self.assertIn("the_pkg.test_things", c)
        self.assertIn("the_pkg.test_things.A.testOne", c)
        self.assertIn("the_pkg.test_things.A.testTwo", c)
Ejemplo n.º 3
0
    def test_completionDot(self):
        """
        A '.' target generates completions for the whole directory
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir('my_pkg')
        fh = open(os.path.join('my_pkg', '__init__.py'), 'w')
        fh.write('')
        fh.close()
        fh = open(os.path.join('my_pkg', 'test_things.py'), 'w')
        fh.write(
            dedent("""
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """))
        fh.close()
        c = set(loader.getCompletions('.').split('\n'))
        self.assertIn('my_pkg', c)
        self.assertIn('my_pkg.test_things', c)
        self.assertIn('my_pkg.test_things.A.testOne', c)
        self.assertIn('my_pkg.test_things.A.testTwo', c)
Ejemplo n.º 4
0
    def test_completionEmpty(self):
        """
        An empty target generates completions for the whole directory
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir("the_pkg")
        fh = open(os.path.join("the_pkg", "__init__.py"), "w")
        fh.write("")
        fh.close()
        fh = open(os.path.join("the_pkg", "test_things.py"), "w")
        fh.write(
            dedent(
                """
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """
            )
        )
        fh.close()
        c = set(loader.getCompletions("").split("\n"))
        self.assertIn("the_pkg", c)
        self.assertIn("the_pkg.test_things", c)
        self.assertIn("the_pkg.test_things.A.testOne", c)
        self.assertIn("the_pkg.test_things.A.testTwo", c)
Ejemplo n.º 5
0
    def test_completionDot(self):
        """
        A '.' target generates completions for the whole directory
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir('my_pkg')
        fh = open(os.path.join('my_pkg', '__init__.py'), 'w')
        fh.write('')
        fh.close()
        fh = open(os.path.join('my_pkg', 'test_things.py'), 'w')
        fh.write(dedent(
            """
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """))
        fh.close()
        c = set(loader.getCompletions('.').split('\n'))
        self.assertIn('my_pkg', c)
        self.assertIn('my_pkg.test_things', c)
        self.assertIn('my_pkg.test_things.A.testOne', c)
        self.assertIn('my_pkg.test_things.A.testTwo', c)
Ejemplo n.º 6
0
 def test_completionPartial(self):
     "Correct completions generated for partial match.  2nd target ignored."
     c = set(loader.getCompletions(['green.te', 'green']).split('\n'))
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
         'green.test.test_loader.TestCompletions.test_completionPartial', c)
     self.assertNotIn('green', c)
Ejemplo n.º 7
0
 def test_completionExact(self):
     "Correct completions are generated for an exact match."
     c = set(loader.getCompletions('green').split('\n'))
     self.assertIn('green', c)
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
             'green.test.test_loader.TestCompletions.test_completionExact', c)
Ejemplo n.º 8
0
 def test_completionPartial(self):
     """
     Correct completions generated for partial match.  2nd target ignored.
     """
     c = set(loader.getCompletions(["green.te", "green"]).split("\n"))
     self.assertIn("green.test", c)
     self.assertIn("green.test.test_loader", c)
     self.assertIn("green.test.test_loader.TestCompletions", c)
     self.assertIn("green.test.test_loader.TestCompletions.test_completionPartial", c)
     self.assertNotIn("green", c)
Ejemplo n.º 9
0
 def test_completionExact(self):
     """
     Correct completions are generated for an exact match.
     """
     c = set(loader.getCompletions("green").split("\n"))
     self.assertIn("green", c)
     self.assertIn("green.test", c)
     self.assertIn("green.test.test_loader", c)
     self.assertIn("green.test.test_loader.TestCompletions", c)
     self.assertIn("green.test.test_loader.TestCompletions.test_completionExact", c)
Ejemplo n.º 10
0
 def test_completionExact(self):
     """
     Correct completions are generated for an exact match.
     """
     c = set(loader.getCompletions("green").split("\n"))
     self.assertIn("green", c)
     self.assertIn("green.test", c)
     self.assertIn("green.test.test_loader", c)
     self.assertIn("green.test.test_loader.TestCompletions", c)
     self.assertIn("green.test.test_loader.TestCompletions.test_completionExact", c)
Ejemplo n.º 11
0
 def test_completionExact(self):
     """
     Correct completions are generated for an exact match.
     """
     c = set(loader.getCompletions('green').split('\n'))
     self.assertIn('green', c)
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
         'green.test.test_loader.TestCompletions.test_completionExact', c)
Ejemplo n.º 12
0
 def test_completionPartial(self):
     """
     Correct completions generated for partial match.  2nd target ignored.
     """
     c = set(loader.getCompletions(['green.te', 'green']).split('\n'))
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
         'green.test.test_loader.TestCompletions.test_completionPartial', c)
     self.assertNotIn('green', c)
Ejemplo n.º 13
0
 def test_completionPartial(self):
     """
     Correct completions generated for partial match.  2nd target ignored.
     """
     c = set(loader.getCompletions(["green.te", "green"]).split("\n"))
     self.assertIn("green.test", c)
     self.assertIn("green.test.test_loader", c)
     self.assertIn("green.test.test_loader.TestCompletions", c)
     self.assertIn(
         "green.test.test_loader.TestCompletions.test_completionPartial", c
     )
     self.assertNotIn("green", c)
Ejemplo n.º 14
0
 def test_completionPartialShort(self):
     "Correct completions generated for short partial match."
     cwd = os.getcwd()
     green_parent = dirname(dirname(dirname(os.path.abspath(__file__))))
     os.chdir(green_parent)
     c = set(loader.getCompletions('gre').split('\n'))
     self.assertIn('green', c)
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
         'green.test.test_loader.TestCompletions.test_completionPartialShort', c)
     os.chdir(cwd)
Ejemplo n.º 15
0
 def test_completionPartialShort(self):
     """
     Correct completions generated for short partial match.
     """
     cwd = os.getcwd()
     green_parent = dirname(dirname(dirname(os.path.abspath(__file__))))
     os.chdir(green_parent)
     self.addCleanup(os.chdir, cwd)
     c = set(loader.getCompletions("gre").split("\n"))
     self.assertIn("green", c)
     self.assertIn("green.test", c)
     self.assertIn("green.test.test_loader", c)
     self.assertIn("green.test.test_loader.TestCompletions", c)
     self.assertIn("green.test.test_loader.TestCompletions.test_completionPartialShort", c)
Ejemplo n.º 16
0
 def test_completionPartialShort(self):
     """
     Correct completions generated for short partial match.
     """
     cwd = os.getcwd()
     green_parent = dirname(dirname(dirname(os.path.abspath(__file__))))
     os.chdir(green_parent)
     self.addCleanup(os.chdir, cwd)
     c = set(loader.getCompletions('gre').split('\n'))
     self.assertIn('green', c)
     self.assertIn('green.test', c)
     self.assertIn('green.test.test_loader', c)
     self.assertIn('green.test.test_loader.TestCompletions', c)
     self.assertIn(
         'green.test.test_loader.TestCompletions.test_completionPartialShort', c)
Ejemplo n.º 17
0
    def test_completionIgnoresErrors(self):
        """
        Errors in one module don't block the remaining completions
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir("my_pkg2")
        fh = open(os.path.join("my_pkg2", "__init__.py"), "w")
        fh.write("")
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash01.py"), "w")
        contents = dedent(
            """
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """
        )
        fh.write(contents)
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash02.py"), "w")
        fh.write("import moocow")
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash03.py"), "w")
        fh.write(contents)
        fh.close()
        c = set(loader.getCompletions(".").split("\n"))
        self.assertIn("my_pkg2", c)
        self.assertIn("my_pkg2.test_crash01", c)
        self.assertIn("my_pkg2.test_crash01.A.testOne", c)
        self.assertIn("my_pkg2.test_crash01.A.testTwo", c)
        self.assertIn("my_pkg2.test_crash03", c)
        self.assertIn("my_pkg2.test_crash03.A.testOne", c)
        self.assertIn("my_pkg2.test_crash03.A.testTwo", c)
Ejemplo n.º 18
0
    def test_completionIgnoresErrors(self):
        """
        Errors in one module don't block the remaining completions
        """
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir("my_pkg2")
        fh = open(os.path.join("my_pkg2", "__init__.py"), "w")
        fh.write("")
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash01.py"), "w")
        contents = dedent(
            """
            import unittest

            class A(unittest.TestCase):
                def testOne(self):
                    pass
                def testTwo(self):
                    pass
            """
        )
        fh.write(contents)
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash02.py"), "w")
        fh.write("import moocow")
        fh.close()
        fh = open(os.path.join("my_pkg2", "test_crash03.py"), "w")
        fh.write(contents)
        fh.close()
        c = set(loader.getCompletions(".").split("\n"))
        self.assertIn("my_pkg2", c)
        self.assertIn("my_pkg2.test_crash01", c)
        self.assertIn("my_pkg2.test_crash01.A.testOne", c)
        self.assertIn("my_pkg2.test_crash01.A.testTwo", c)
        self.assertIn("my_pkg2.test_crash03", c)
        self.assertIn("my_pkg2.test_crash03.A.testOne", c)
        self.assertIn("my_pkg2.test_crash03.A.testTwo", c)
Ejemplo n.º 19
0
    def test_completionIgnoresErrors(self):
        "Errors in one module don't block the remaining completions"
        cwd = os.getcwd()
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        os.chdir(tmpdir)
        self.addCleanup(os.chdir, cwd)
        os.mkdir('my_pkg2')
        fh = open(os.path.join('my_pkg2', '__init__.py'), 'w')
        fh.write('')
        fh.close()
        fh = open(os.path.join('my_pkg2', 'test_crash01.py'), 'w')
        contents = """
import unittest

class A(unittest.TestCase):
    def testOne(self):
        pass
    def testTwo(self):
        pass
"""
        fh.write(contents)
        fh.close()
        fh = open(os.path.join('my_pkg2', 'test_crash02.py'), 'w')
        fh.write("import moocow")
        fh.close()
        fh = open(os.path.join('my_pkg2', 'test_crash03.py'), 'w')
        fh.write(contents)
        fh.close()
        c = set(loader.getCompletions('.').split('\n'))
        self.assertIn('my_pkg2', c)
        self.assertIn('my_pkg2.test_crash01', c)
        self.assertIn('my_pkg2.test_crash01.A.testOne', c)
        self.assertIn('my_pkg2.test_crash01.A.testTwo', c)
        self.assertIn('my_pkg2.test_crash03', c)
        self.assertIn('my_pkg2.test_crash03.A.testOne', c)
        self.assertIn('my_pkg2.test_crash03.A.testTwo', c)
Ejemplo n.º 20
0
def _main(argv, testing):
    args = config.parseArguments(argv)
    args = config.mergeConfig(args, testing)

    if args.shouldExit:
        return args.exitCode

    # Clear out all the passed-in-options just in case someone tries to run a
    # test that assumes sys.argv is clean.  I can't guess at the script name
    # that they want, though, so we'll just leave ours.
    sys.argv = sys.argv[:1]

    # Set up our various main objects
    from green.loader import GreenTestLoader, getCompletions
    from green.runner import run
    from green.output import GreenStream, debug
    import green.output
    from green.suite import GreenTestSuite

    GreenTestSuite.args = args

    if args.debug:
        green.output.debug_level = args.debug

    stream = GreenStream(sys.stdout, disable_windows=args.disable_windows)

    # Location of shell completion file
    if args.completion_file:
        print(os.path.join(os.path.dirname(__file__), "shell_completion.sh"))
        return 0

    # Argument-completion for bash and zsh (for test-target completion)
    if args.completions:
        print(getCompletions(args.targets))
        return 0

    # Option-completion for bash and zsh
    if args.options:
        print("\n".join(sorted(args.store_opt.options)))
        return 0

    # Add debug logging for stuff that happened before this point here
    if config.files_loaded:
        debug("Loaded config file(s): {}".format(", ".join(
            config.files_loaded)))

    # Discover/Load the test suite
    if testing:
        test_suite = None
    else:  # pragma: no cover
        loader = GreenTestLoader()
        test_suite = loader.loadTargets(args.targets,
                                        file_pattern=args.file_pattern)

    # We didn't even load 0 tests...
    if not test_suite:
        debug(
            "No test loading attempts succeeded.  Created an empty test suite."
        )
        test_suite = GreenTestSuite()

    # Actually run the test_suite
    result = run(test_suite, stream, args, testing)

    # Generate a test report if required
    if args.junit_report:
        from green.junit import JUnitXML

        adapter = JUnitXML()
        with open(args.junit_report, "w") as report_file:
            adapter.save_as(result, report_file)

    return int(not result.wasSuccessful())
Ejemplo n.º 21
0
 def test_completionBad(self):
     """
     Bad match generates no completions
     """
     self.assertEqual("", loader.getCompletions("garbage.in"))
Ejemplo n.º 22
0
def main(testing=False, coverage_testing=False):
    args = config.parseArguments()
    args = config.mergeConfig(args, testing, coverage_testing)
    if args.shouldExit:
        return args.exitCode

    # Clear out all the passed-in-options just in case someone tries to run a
    # test that assumes sys.argv is clean.  I can't guess at the script name
    # that they want, though, so we'll just leave ours.
    sys.argv = sys.argv[:1]

    # Set up our various main objects
    from green.loader import loadTargets
    from green.runner import GreenTestRunner
    from green.output import GreenStream, debug
    import green.output
    if args.debug:
        green.output.debug_level = args.debug

    stream = GreenStream(sys.stdout, html = args.html)
    runner = GreenTestRunner(verbosity = args.verbose, stream = stream,
            termcolor=args.termcolor, subprocesses=args.subprocesses,
            run_coverage=args.run_coverage, omit=args.omit)

    # Location of shell completion file
    if args.completion_file:
        print(os.path.join(os.path.dirname(__file__), 'shell_completion.sh'))
        return 0

    # Argument-completion for bash and zsh (for test-target completion)
    if args.completions:
        from green.loader import getCompletions
        print(getCompletions(args.targets))
        return 0

    # Option-completion for bash and zsh
    if args.options:
        print('\n'.join(sorted(args.store_opt.options)))
        return 0

    # Add debug logging for stuff that happened before this point here
    if config.files_loaded:
        debug("Loaded config file(s): {}".format(
            ', '.join(config.files_loaded)))

    # Discover/Load the TestSuite
    if testing:
        test_suite = None
    else:
        test_suite = loadTargets(args.targets)

    # We didn't even load 0 tests...
    if not test_suite:
        debug(
            "No test loading attempts succeeded.  Created an empty test suite.")
        test_suite = unittest.suite.TestSuite()

    # Actually run the test_suite
    if testing:
        result = lambda: None
        result.wasSuccessful = lambda: 0
    else:
        result = runner.run(test_suite) # pragma: no cover

    if args.run_coverage and ((not testing) or coverage_testing):
        stream.writeln()
        args.cov.stop()
        args.cov.save()
        args.cov.combine()
        args.cov.save()
        args.cov.report(file=stream, omit=args.omit)
    return(int(not result.wasSuccessful()))
Ejemplo n.º 23
0
 def test_completionBad(self):
     """
     Bad match generates no completions
     """
     self.assertEqual('', loader.getCompletions('garbage.in'))
Ejemplo n.º 24
0
def main(testing=False, coverage_testing=False):
    args = config.parseArguments()
    args = config.mergeConfig(args, testing, coverage_testing)
    if getattr(args, 'html', False): # pragma: no cover
        print("""
The --html flag is scheduled to be removed in version 2.0 due to it being a pain
to maintain and no one using it.  If you actually use it, please open an issue
stating so!  https://github.com/CleanCut/green/issues/new  Unless some people
request it, it will be removed in 2.0
""")
        import time
        time.sleep(2)
    if args.shouldExit:
        return args.exitCode

    # Clear out all the passed-in-options just in case someone tries to run a
    # test that assumes sys.argv is clean.  I can't guess at the script name
    # that they want, though, so we'll just leave ours.
    sys.argv = sys.argv[:1]

    # Set up our various main objects
    from green.loader import loadTargets
    from green.runner import run
    from green.output import GreenStream, debug
    import green.output
    from green.suite import GreenTestSuite
    GreenTestSuite.args = args

    if args.debug:
        green.output.debug_level = args.debug

    stream = GreenStream(sys.stdout, html = args.html)

    # Location of shell completion file
    if args.completion_file:
        print(os.path.join(os.path.dirname(__file__), 'shell_completion.sh'))
        return 0

    # Argument-completion for bash and zsh (for test-target completion)
    if args.completions:
        from green.loader import getCompletions
        print(getCompletions(args.targets))
        return 0

    # Option-completion for bash and zsh
    if args.options:
        print('\n'.join(sorted(args.store_opt.options)))
        return 0

    # Add debug logging for stuff that happened before this point here
    if config.files_loaded:
        debug("Loaded config file(s): {}".format(
            ', '.join(config.files_loaded)))

    # Discover/Load the test suite
    if testing:
        test_suite = None
    else:
        test_suite = loadTargets(args.targets, file_pattern = args.file_pattern)

    # We didn't even load 0 tests...
    if not test_suite:
        debug(
            "No test loading attempts succeeded.  Created an empty test suite.")
        test_suite = GreenTestSuite()

    # Actually run the test_suite
    if testing:
        result = lambda: None
        result.wasSuccessful = lambda: 0
    else:
        result = run(test_suite, stream, args) # pragma: no cover

    if args.run_coverage and ((not testing) or coverage_testing):
        stream.writeln()
        args.cov.stop()
        args.cov.save()
        args.cov.combine()
        args.cov.save()
        args.cov.report(file=stream, omit=args.omit_patterns)
    return(int(not result.wasSuccessful()))
Ejemplo n.º 25
0
def main(testing=False):
    args = config.parseArguments()
    args = config.mergeConfig(args, testing)

    if args.shouldExit:
        return args.exitCode

    # Clear out all the passed-in-options just in case someone tries to run a
    # test that assumes sys.argv is clean.  I can't guess at the script name
    # that they want, though, so we'll just leave ours.
    sys.argv = sys.argv[:1]

    # Set up our various main objects
    from green.loader import loadTargets
    from green.runner import run
    from green.output import GreenStream, debug
    import green.output
    from green.suite import GreenTestSuite
    GreenTestSuite.args = args

    if args.debug:
        green.output.debug_level = args.debug

    stream = GreenStream(sys.stdout, disable_windows=args.disable_windows)

    # Location of shell completion file
    if args.completion_file:
        print(os.path.join(os.path.dirname(__file__), 'shell_completion.sh'))
        return 0

    # Argument-completion for bash and zsh (for test-target completion)
    if args.completions:
        from green.loader import getCompletions
        print(getCompletions(args.targets))
        return 0

    # Option-completion for bash and zsh
    if args.options:
        print('\n'.join(sorted(args.store_opt.options)))
        return 0

    # Add debug logging for stuff that happened before this point here
    if config.files_loaded:
        debug("Loaded config file(s): {}".format(
            ', '.join(config.files_loaded)))

    # Discover/Load the test suite
    if testing:
        test_suite = None
    else:  # pragma: no cover
        test_suite = loadTargets(args.targets, file_pattern=args.file_pattern)

    # We didn't even load 0 tests...
    if not test_suite:
        debug(
            "No test loading attempts succeeded.  Created an empty test suite.")
        test_suite = GreenTestSuite()

    # Actually run the test_suite
    result = run(test_suite, stream, args, testing)

    return(int(not result.wasSuccessful()))
Ejemplo n.º 26
0
 def test_completionBad(self):
     "Bad match generates no completions"
     self.assertEqual('', loader.getCompletions('garbage.in'))