示例#1
0
 def makeRunner(self):
     """
     Return a runner instance.
     """
     runner = Runner()
     runner.setOutput(self.outputStream)
     return runner
    def test_reporter(self):
        """
        Test for LimitedReporter.
        Use test file of indentation to test
        whether limited messages are returned when using LimitedReporter.

        Complete run on the test file will return two warnings:
        W0311 and W0312, but with limited report it returns only one.
        """
        moduleTestIndentation = "twistedchecker.functionaltests.indentation"
        pathTestIndentation = os.path.join(twistedchecker.abspath,
                                      "functionaltests", "indentation.py")
        # assert the test file exists
        self.assertTrue(os.path.exists(pathTestIndentation))
        streamTestResult = NativeStringIO()
        runner = Runner()
        runner.setOutput(streamTestResult)
        # defaultly, runner will use LimitedReporter as its output reporter
        # set allowed messages for it
        runner.linter.reporter.messagesAllowed = set(["W0311"])

        exitResult = self.assertRaises(
            SystemExit, runner.run, [moduleTestIndentation])

        # check the results to see only W0311 is reported
        resultTest = streamTestResult.getvalue()
        self.assertTrue("W0311" in resultTest)
        self.assertTrue("W0312" not in resultTest)
        self.assertEqual(4, exitResult.code)
示例#3
0
 def makeRunner(self):
     """
     Return a runner instance.
     """
     runner = Runner()
     runner.setOutput(self.outputStream)
     return runner
示例#4
0
    def test_setNameExceptions(self):
        """
        Test for twistedchecker.core.runner.Runner.setNameExceptions.
        """
        pathTestFiles = createTestFilesForFindingExceptions(self.mktemp())
        self.clearOutputStream()
        runner = Runner()
        runner.setOutput(self.outputStream)
        # Set the reporter to C{twistedchecker.reporters.test.TestReporter}.
        runner.setReporter(TestReporter())
        # Limit messages.
        runner.linter.disable_noerror_messages()
        runner.linter.enable("C0103")

        workingDir = os.getcwd()
        os.chdir(os.path.dirname(pathTestFiles))
        moduleName = os.path.basename(pathTestFiles)

        exitResult = self.assertRaises(SystemExit, runner.run, [moduleName])

        os.chdir(workingDir)
        predictResult = "11:C0103\n14:C0103\n15:C0103\n"
        outputResult = self.outputStream.getvalue()
        self.assertEqual(outputResult, predictResult)
        self.assertEqual(16, exitResult.code)
示例#5
0
    def test_setNameExceptions(self):
        """
        Test for twistedchecker.core.runner.Runner.setNameExceptions.
        """
        pathTestFiles = createTestFilesForFindingExceptions(self.mktemp())
        self.clearOutputStream()
        runner = Runner()
        runner.setOutput(self.outputStream)
        # Set the reporter to C{twistedchecker.reporters.test.TestReporter}.
        runner.setReporter(TestReporter())
        # Limit messages.
        runner.linter.disable_noerror_messages()
        # Enable invalid function names.
        runner.linter.enable("C0103")
        # Enable invalid method names.
        runner.linter.enable("C9302")

        workingDir = os.getcwd()
        os.chdir(os.path.dirname(pathTestFiles))
        moduleName = os.path.basename(pathTestFiles)

        exitResult = self.assertRaises(SystemExit, runner.run, [moduleName])

        os.chdir(workingDir)
        predictResult = "7:C9302\n11:C0103\n14:C0103\n15:C9302\n"
        outputResult = self.outputStream.getvalue()
        self.assertEqual(outputResult, predictResult)
        self.assertEqual(16, exitResult.code)
示例#6
0
    def test_runWithErrors(self):
        """
        When checked file is not clean it will exit with non zero exit code.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        # The comments functional test is assumed to have at lest one error.
        exitResult = self.assertRaises(SystemExit, runner.run, [
            "twistedchecker.functionaltests.comments"])

        self.assertNotEqual(0, exitResult.code)
示例#7
0
    def test_runWithErrors(self):
        """
        When checked file is not clean it will exit with non zero exit code.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        # The comments functional test is assumed to have at lest one error.
        exitResult = self.assertRaises(
            SystemExit, runner.run,
            ["twistedchecker.functionaltests.comments"])

        self.assertNotEqual(0, exitResult.code)
示例#8
0
    def test_runNoError(self):
        """
        When checked file is clean and has no errors it exit with code 0
        without any other output.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        # The twistedchecker/checkers/__init__.py is assumed to be clean.
        exitResult = self.assertRaises(SystemExit, runner.run, [
            "twistedchecker.checkers.__init__"])

        self.assertEqual('', self.outputStream.getvalue())
        self.assertEqual(0, exitResult.code)
示例#9
0
    def test_runVersion(self):
        """
        Pass argument "--version" to C{runner.run}, and it should show
        a version infomation, then exit. So that I could know it called pylint.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        exitResult = self.assertRaises(SystemExit, runner.run, ["--version"])

        self.assertTrue(self.outputStream.getvalue().count("Python") > 0, \
                        msg="failed to call pylint")
        self.assertIsNone(runner.diffOption)
        self.assertEqual(0, exitResult.code)
示例#10
0
    def test_runNoError(self):
        """
        When checked file is clean and has no errors it exit with code 0
        without any other output.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        # The twistedchecker/checkers/__init__.py is assumed to be clean.
        exitResult = self.assertRaises(SystemExit, runner.run,
                                       ["twistedchecker.checkers.__init__"])

        self.assertEqual('', self.outputStream.getvalue())
        self.assertEqual(0, exitResult.code)
示例#11
0
    def test_runVersion(self):
        """
        Pass argument "--version" to C{runner.run}, and it should show
        a version infomation, then exit. So that I could know it called pylint.
        """
        runner = Runner()
        runner.setOutput(self.outputStream)

        exitResult = self.assertRaises(SystemExit, runner.run, ["--version"])

        self.assertTrue(self.outputStream.getvalue().count("Python") > 0, \
                        msg="failed to call pylint")
        self.assertIsNone(runner.diffOption)
        self.assertEqual(0, exitResult.code)
def _runTest(testCase, testFilePath):
    """
    Run a functional test.

    @param testCase: The test case on which to call assertions.
    @type testCase: L{unittest.TestCase}

    @param testFilePath: The path to the module to test.
    @type testFilePath: L{str}
    """
    pathResultFile = testFilePath.replace(".py", ".result")
    moduleName = filenameToModuleName(testFilePath)
    outputStream = NativeStringIO()

    runner = Runner()
    runner.allowOptions = False
    runner.setOutput(outputStream)
    runner.setReporter(TestReporter())

    limits = _parseLimitMessages(testFilePath)
    if limits is not None:
        action, messages = limits
        _setLinterLimits(runner.linter, action, messages)

    exitCode = None
    try:
        runner.run([moduleName])
    except SystemExit as error:
        exitCode = error.code

    # Check the results
    with open(pathResultFile) as f:
        expectedResult = sorted(f.read().strip().splitlines())

    outputResult = sorted(outputStream.getvalue().strip().splitlines())

    try:
        testCase.assertEqual(expectedResult, outputResult)
    except unittest.FailTest:
        testCase.fail(_formatResults(moduleName, expectedResult, outputResult))

    if not expectedResult:
        testCase.assertEqual(0, exitCode)
    else:
        testCase.assertNotEqual(0, exitCode)
def _runTest(testCase, testFilePath):
    """
    Run a functional test.

    @param testCase: The test case on which to call assertions.
    @type testCase: L{unittest.TestCase}

    @param testFilePath: The path to the module to test.
    @type testFilePath: L{str}
    """
    pathResultFile = testFilePath.replace(".py", ".result")
    moduleName = filenameToModuleName(testFilePath)
    outputStream = io.BytesIO()

    runner = Runner()
    runner.allowOptions = False
    runner.setOutput(outputStream)
    runner.setReporter(TestReporter())

    limits = _parseLimitMessages(testFilePath)
    if limits is not None:
        action, messages = limits
        _setLinterLimits(runner.linter, action, messages)

    _enablePEP8Checker(runner.linter)

    exitCode = None
    try:
        runner.run([moduleName])
    except SystemExit as error:
        exitCode = error.code

    # Check the results
    expectedResult = open(pathResultFile).read().strip()
    outputResult = outputStream.getvalue().strip()

    try:
        testCase.assertEqual(expectedResult, outputResult)
    except unittest.FailTest:
        testCase.fail(_formatResults(moduleName, expectedResult, outputResult))

    if not expectedResult:
        testCase.assertEqual(0, exitCode)
    else:
        testCase.assertNotEqual(0, exitCode)