Example #1
0
 def test_duplicate_error_no_traceback(self):
     errorlog = errors.ErrorLog()
     stack = test_utils.fake_stack(2)
     errorlog.error(stack, "error")  # traceback
     errorlog.error(stack[-1:], "error")  # no traceback
     # Keep the error with no traceback.
     unique_errors = errorlog.unique_sorted_errors()
     self.assertEqual(len(unique_errors), 1)
     self.assertIsNone(unique_errors[0]._traceback)
Example #2
0
 def test_truncated_traceback(self):
     stack = test_utils.fake_stack(errors.MAX_TRACEBACK_LENGTH + 2)
     error = errors.Error.with_stack(stack, errors.SEVERITY_ERROR, "")
     self.assertMultiLineEqual(
         error._traceback,
         textwrap.dedent("""
   Called from (traceback):
     line 0, in function0
     ...
     line 3, in function3""").lstrip())
Example #3
0
 def test_traceback(self):
     stack = test_utils.fake_stack(errors.MAX_TRACEBACK_LENGTH + 1)
     error = errors.Error.with_stack(stack, errors.SEVERITY_ERROR, "")
     self.assertMultiLineEqual(
         error._traceback,
         textwrap.dedent("""\
   Called from (traceback):
     line 0, in function0
     line 1, in function1
     line 2, in function2"""))
Example #4
0
 def test_duplicate_error_shorter_traceback(self):
     errorlog = errors.ErrorLog()
     stack = test_utils.fake_stack(3)
     errorlog.error(stack, "error")  # longer traceback
     errorlog.error(stack[-2:], "error")  # shorter traceback
     # Keep the error with a shorter traceback.
     unique_errors = errorlog.unique_sorted_errors()
     self.assertEqual(len(unique_errors), 1)
     self.assertMultiLineEqual(
         unique_errors[0]._traceback,
         textwrap.dedent("""
   Called from (traceback):
     line 1, in function1""").lstrip())
Example #5
0
 def test_error_without_stack(self):
     errorlog = errors.ErrorLog()
     stack = test_utils.fake_stack(1)
     errorlog.error(stack, "error_with_stack")
     errorlog.error([], "error_without_stack")
     unique_errors = errorlog.unique_sorted_errors()
     unique_errors = [(error.message, error.filename, error.lineno)
                      for error in unique_errors]
     self.assertEqual(
         [("error_without_stack", None, 0),
          ("error_with_stack", "foo.py", 0)],
         unique_errors,
     )
Example #6
0
    def test_write_to_csv_with_traceback(self):
        errorlog = errors.ErrorLog()
        stack = test_utils.fake_stack(2)
        errorlog.error(stack, "", "some\ndetails")
        with file_utils.Tempdir() as d:
            filename = d.create_file("errors.csv")
            errorlog.print_to_csv_file(filename)
            with open(filename, "r") as fi:
                (_, _, _, _,
                 actual_details), = list(csv.reader(fi, delimiter=","))
                self.assertMultiLineEqual(
                    actual_details,
                    textwrap.dedent("""
          some
          details

          Called from (traceback):
            line 0, in function0""").lstrip())