예제 #1
0
 def test_format_and_save(self):
     doctest = (
         "narrative is a line that exceeds 78 characters which causes "
         "scrolling in consoles and wraps poorly in email\n"
         "  * item\n\n"
         "    >>> very_very_very_very_very.long_long_long_long("
         "method_method_method_method)\n"
         "    True\n\n")
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.format_and_save()
     expected = (
         "narrative is a line that exceeds 78 characters which causes "
         "scrolling in\nconsoles and wraps poorly in email\n\n"
         "  * item\n\n"
         "    >>> very_very_very_very_very.long_long_long_long("
         "method_method_method_method)\n"
         "    True\n\n\n")
     self.file.seek(0)
     text = self.file.read()
     self.assertEqual(expected, text)
     self.assertEqual(expected, checker.doctest)
     # Source code issues cannot be fixed by the formatter.
     checker.check()
     self.assertEqual(
         [(6, 'source exceeds 78 characters.')],
         self.reporter.messages)
예제 #2
0
 def test_doctest_without_issues(self):
     self.file.write(good_doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, good_doctest, self.reporter)
     checker.check()
     self.assertEqual([], self.reporter.messages)
예제 #3
0
 def test_doctest_with_python_compilation_error(self):
     doctest = "    >>> if (True\n    pong text"
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(1, 'Could not compile:\n    if (True')],
         self.reporter.messages)
예제 #4
0
 def test_doctest_with_globs(self):
     # Doctest runners often setup global identifiers that are not python
     # execution issues
     doctest = "    >>> ping('text')\n    pong text"
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual([], self.reporter.messages)
예제 #5
0
 def test_trailing_whitespace(self):
     doctest = "narrative  \n    >>> print 'done'\n"
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(1, 'narrative has trailing whitespace.')],
         self.reporter.messages)
예제 #6
0
 def test_bad_indentation(self):
     doctest = "narrative\n>>> print 'done'\n"
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(2, 'source has bad indentation.')],
         self.reporter.messages)
예제 #7
0
 def test_moin_header(self):
     doctest = "= Heading =\n\nnarrative"
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(1, 'narrative uses a moin header.')],
         self.reporter.messages)
예제 #8
0
 def test_doctest_malformed_doctest(self):
     self.file.write(malformed_doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, malformed_doctest, self.reporter)
     checker.check()
     expected = (
         "line 4 of the docstring for %s has inconsistent leading "
         "whitespace: 'Narrative without WANT section.'" % self.file.name)
     self.assertEqual(
         [(0, expected)], self.reporter.messages)
예제 #9
0
 def test_long_line_narrative(self):
     doctest = (
         "narrative is a line that exceeds 78 characters which causes "
         "scrolling in consoles and wraps poorly in email\n")
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(1, 'narrative exceeds 78 characters.')],
         self.reporter.messages)
예제 #10
0
 def test_long_line_source_and_want(self):
     doctest = (
         "    >>> very_very_very_very_very.long_long_long_long("
         "method_method_method_method,\n"
         "    ...   call_call_call_call_call_call_call_call_call_call,"
         "bad_bad_bad_bad_bad)\n")
     self.file.write(doctest)
     self.file.flush()
     checker = DoctestReviewer(
         self.file.name, doctest, self.reporter)
     checker.check()
     self.assertEqual(
         [(1, 'source exceeds 78 characters.'),
          (2, 'source exceeds 78 characters.')],
         self.reporter.messages)