From a86e730c1f9ae35e943a4eff315d82e8cfdd09d0 Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu Date: Fri, 26 Aug 2011 15:41:12 +0300 Subject: [PATCH] ppf/new: Complete several tests for util.py. --- ppf/new/tests/test_util.py | 90 +++++++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 5 deletions(-) diff --git a/ppf/new/tests/test_util.py b/ppf/new/tests/test_util.py index f5a2ea9..8fb7289 100644 --- a/ppf/new/tests/test_util.py +++ b/ppf/new/tests/test_util.py @@ -24,24 +24,96 @@ class LiveLogStatusTest(unittest.TestCase): class LiveLogFileTest(unittest.TestCase): """Test suite for LiveLogFile class in util.py.""" + ok_log_filename = "ok.log" + ok_status_filename = "ok.log.status" + empty_log_filename = "empty.log" + incomplete_log_filename = "incomplete.log" + no_log_filename = "no.log" + first_line = "line 1\n" + second_line = "line 1\n" + third_line = "line 1\n" def setUp(self): - pass + """Create test log files.""" + f = open(self.ok_log_filename, "wt") + f.write(self.first_line) + f.write(self.second_line) + f.write(self.third_line) + f.close() + + f = open(self.empty_log_filename, "wt") + f.close() + + f = open(self.incomplete_log_filename, "wt") + f.write("no newline") + f.close() + + # Remove "no log" file and status file in case they exist. + try: + os.remove(self.no_log_filename) + except OSError, e: + pass + + try: + os.remove(self.ok_status_filename) + except OSError, e: + pass def tearDown(self): - pass + """Remove test log files.""" + os.remove(self.ok_log_filename) + os.remove(self.empty_log_filename) + os.remove(self.incomplete_log_filename) + + def read_position_in_status_file(self, status_filename): + """Read first line in status file as integer.""" + f = open(status_filename, "rt") + line = f.readline() + return int(line) def test_no_log_file(self): """No log file is present.""" - self.assertEqual(True, False) + exception_raised = False + try: + llf = util.LiveLogFile(self.no_log_filename) + except IOError, e: + exception_raised = True + + self.assertEqual(exception_raised, True) def test_no_status_file(self): """No status file is present.""" - self.assertEqual(True, False) + + # Status file should be created by constructor. + llf = util.LiveLogFile(self.ok_log_filename) + self.assertEqual(os.access(self.ok_status_filename, os.W_OK), True) + + # Log file cursor should be 0 and the first line should be read. + line = llf.readline() + self.assertEqual(line, self.first_line) + llf.close() + + # Check whether position is updated in status file. + pos = self.read_position_in_status_file(self.ok_status_filename) + self.assertEqual(pos, len(self.first_line)) def test_invalid_content_in_status_file(self): """Status file contains invalid content (no string).""" - self.assertEqual(True, False) + + f = open(self.ok_status_filename, "wt") + f.write("ana-are-mere\n") + f.close() + + llf = util.LiveLogFile(self.ok_log_filename) + + # Log file cursor should be 0 and the first line should be read. + line = llf.readline() + self.assertEqual(line, self.first_line) + llf.close() + + # Check whether position is updated in status file. + pos = self.read_position_in_status_file(self.ok_status_filename) + self.assertEqual(pos, len(self.first_line)) def test_no_newline_at_end_of_status_file(self): """Status file contains invalid content (no string).""" @@ -59,9 +131,17 @@ class LiveLogFileTest(unittest.TestCase): """ self.assertEqual(True, False) + def test_empty_log_file(self): + """Log file is empty (zero length).""" + self.assertEqual(True, False) + def test_incomplete_log_file(self): """Log file's last doesn't end in a new line.""" self.assertEqual(True, False) + def test_readline_fails_after_close(self): + """Use readline() after close(). Should fail.""" + self.assertEqual(True, False) + if __name__ == "__main__": unittest.main() -- 2.20.1