コード例 #1
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_unique_errors(self):
     errorlog = errors.ErrorLog()
     current_frame = frame_state.SimpleFrame(
         test_utils.FakeOpcode("foo.py", 123, "foo"))
     backframe1 = frame_state.SimpleFrame(
         test_utils.FakeOpcode("foo.py", 1, "bar"))
     backframe2 = frame_state.SimpleFrame(
         test_utils.FakeOpcode("foo.py", 2, "baz"))
     errorlog.error([backframe1, current_frame], "error")
     errorlog.error([backframe2, current_frame], "error")
     # Keep both errors, since the tracebacks are different.
     unique_errors = errorlog.unique_sorted_errors()
     self.assertEqual(len(unique_errors), 2)
     self.assertSetEqual(set(errorlog), set(unique_errors))
コード例 #2
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_with_stack(self):
     # Opcode of None.
     e = errors.Error.with_stack(None,
                                 errors.SEVERITY_ERROR,
                                 _MESSAGE,
                                 keyword="here")
     self.assertEqual(errors.SEVERITY_ERROR, e._severity)
     self.assertEqual(_MESSAGE, e._message)
     self.assertEqual(e._name, _TEST_ERROR)
     self.assertEqual(None, e._filename)
     self.assertEqual(0, e._lineno)
     self.assertEqual(None, e._methodname)
     self.assertEqual("here", e.keyword)
     # Opcode of None.
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     e = errors.Error.with_stack(op.to_stack(),
                                 errors.SEVERITY_ERROR,
                                 _MESSAGE,
                                 keyword="here")
     self.assertEqual(errors.SEVERITY_ERROR, e._severity)
     self.assertEqual(_MESSAGE, e._message)
     self.assertEqual(e._name, _TEST_ERROR)
     self.assertEqual("foo.py", e._filename)
     self.assertEqual(123, e._lineno)
     self.assertEqual("foo", e._methodname)
     self.assertEqual("here", e.keyword)
コード例 #3
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_warn(self):
     errorlog = errors.ErrorLog()
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     errorlog.warn(op.to_stack(), "unknown attribute %s", "xyz")
     self.assertEqual(len(errorlog), 1)
     e = list(errorlog)[0]  # iterate the log and save the first error.
     self.assertEqual(errors.SEVERITY_WARNING, e._severity)
     self.assertEqual("unknown attribute xyz", e._message)
     self.assertEqual(e._name, _TEST_ERROR)
     self.assertEqual("foo.py", e._filename)
コード例 #4
0
ファイル: errors_test.py プロジェクト: astroparam/pytype
    def test_color_print_to_file(self):
        errorlog = errors.ErrorLog()
        op = test_utils.FakeOpcode("foo.py", 123, "foo")
        errorlog.error(op.to_stack(), "unknown attribute %s" % "xyz")
        self.assertEqual(len(errorlog), 1)

        string_io = io.StringIO()
        errorlog.print_to_file(string_io)
        self.assertIn("[test-error]", string_io.getvalue())
        color_snippet = "xyz [\x1b[1m\x1b[31mtest-error\x1b[39m\x1b[0m]"
        self.assertNotIn(color_snippet, string_io.getvalue())
コード例 #5
0
ファイル: errors_test.py プロジェクト: astroparam/pytype
    def test_color_print_to_stderr(self):
        errorlog = errors.ErrorLog()
        op = test_utils.FakeOpcode("foo.py", 123, "foo")
        errorlog.error(op.to_stack(), "unknown attribute %s" % "xyz")
        self.assertEqual(len(errorlog), 1)

        mock_stderr = io.StringIO()
        with mock.patch("sys.stderr", mock_stderr):
            errorlog.print_to_stderr()
        color_snippet = "xyz [\x1b[1m\x1b[31mtest-error\x1b[39m\x1b[0m]"
        self.assertIn(color_snippet, mock_stderr.getvalue())
コード例 #6
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_write_to_csv(self):
     errorlog = errors.ErrorLog()
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     message, details = "This is an error", "with\nsome\ndetails: \"1\", 2, 3"
     errorlog.error(op.to_stack(), message, details + "0")
     errorlog.error(op.to_stack(), message, details + "1")
     with file_utils.Tempdir() as d:
         filename = d.create_file("errors.csv")
         errorlog.print_to_csv_file(filename)
         with open(filename, "r") as fi:
             rows = list(csv.reader(fi, delimiter=","))
             self.assertEqual(len(rows), 2)
             for i, row in enumerate(rows):
                 filename, lineno, name, actual_message, actual_details = row
                 self.assertEqual(filename, "foo.py")
                 self.assertEqual(lineno, "123")
                 self.assertEqual(name, _TEST_ERROR)
                 self.assertEqual(actual_message, message)
                 self.assertEqual(actual_details, details + str(i))
コード例 #7
0
 def test_empty_data(self):
     """Test that we can trace values without data."""
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     self.trace_vm.trace_opcode(op, "x", 42)
     self.assertEqual(self.trace_vm.opcode_traces, [(op, "x", (None, ))])
コード例 #8
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_no_traceback_no_opcode(self):
     # Frame without opcode
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     stack = [frame_state.SimpleFrame(), frame_state.SimpleFrame(op)]
     error = errors.Error.with_stack(stack, errors.SEVERITY_ERROR, "")
     self.assertIsNone(error._traceback)
コード例 #9
0
ファイル: errors_test.py プロジェクト: zenefits/pytype
 def test_no_traceback_stack_len_1(self):
     # Stack of length 1
     op = test_utils.FakeOpcode("foo.py", 123, "foo")
     error = errors.Error.with_stack(op.to_stack(), errors.SEVERITY_ERROR,
                                     "")
     self.assertIsNone(error._traceback)