OLD | NEW |
(Empty) | |
| 1 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
| 2 # For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt |
| 3 |
| 4 """Tests of miscellaneous stuff.""" |
| 5 |
| 6 import sys |
| 7 |
| 8 import coverage |
| 9 from coverage.version import _make_url, _make_version |
| 10 from coverage.misc import Hasher, file_be_gone |
| 11 |
| 12 from tests.coveragetest import CoverageTest |
| 13 |
| 14 |
| 15 class HasherTest(CoverageTest): |
| 16 """Test our wrapper of md5 hashing.""" |
| 17 |
| 18 run_in_temp_dir = False |
| 19 |
| 20 def test_string_hashing(self): |
| 21 h1 = Hasher() |
| 22 h1.update("Hello, world!") |
| 23 h2 = Hasher() |
| 24 h2.update("Goodbye!") |
| 25 h3 = Hasher() |
| 26 h3.update("Hello, world!") |
| 27 self.assertNotEqual(h1.hexdigest(), h2.hexdigest()) |
| 28 self.assertEqual(h1.hexdigest(), h3.hexdigest()) |
| 29 |
| 30 def test_bytes_hashing(self): |
| 31 h1 = Hasher() |
| 32 h1.update(b"Hello, world!") |
| 33 h2 = Hasher() |
| 34 h2.update(b"Goodbye!") |
| 35 self.assertNotEqual(h1.hexdigest(), h2.hexdigest()) |
| 36 |
| 37 def test_dict_hashing(self): |
| 38 h1 = Hasher() |
| 39 h1.update({'a': 17, 'b': 23}) |
| 40 h2 = Hasher() |
| 41 h2.update({'b': 23, 'a': 17}) |
| 42 self.assertEqual(h1.hexdigest(), h2.hexdigest()) |
| 43 |
| 44 |
| 45 class RemoveFileTest(CoverageTest): |
| 46 """Tests of misc.file_be_gone.""" |
| 47 |
| 48 def test_remove_nonexistent_file(self): |
| 49 # It's OK to try to remove a file that doesn't exist. |
| 50 file_be_gone("not_here.txt") |
| 51 |
| 52 def test_remove_actual_file(self): |
| 53 # It really does remove a file that does exist. |
| 54 self.make_file("here.txt", "We are here, we are here, we are here!") |
| 55 file_be_gone("here.txt") |
| 56 self.assert_doesnt_exist("here.txt") |
| 57 |
| 58 def test_actual_errors(self): |
| 59 # Errors can still happen. |
| 60 # ". is a directory" on Unix, or "Access denied" on Windows |
| 61 with self.assertRaises(OSError): |
| 62 file_be_gone(".") |
| 63 |
| 64 |
| 65 class VersionTest(CoverageTest): |
| 66 """Tests of version.py""" |
| 67 |
| 68 run_in_temp_dir = False |
| 69 |
| 70 def test_version_info(self): |
| 71 # Make sure we didn't screw up the version_info tuple. |
| 72 self.assertIsInstance(coverage.version_info, tuple) |
| 73 self.assertEqual([type(d) for d in coverage.version_info], [int, int, in
t, str, int]) |
| 74 self.assertIn(coverage.version_info[3], ['alpha', 'beta', 'candidate', '
final']) |
| 75 |
| 76 def test_make_version(self): |
| 77 self.assertEqual(_make_version(4, 0, 0, 'alpha', 0), "4.0a0") |
| 78 self.assertEqual(_make_version(4, 0, 0, 'alpha', 1), "4.0a1") |
| 79 self.assertEqual(_make_version(4, 0, 0, 'final', 0), "4.0") |
| 80 self.assertEqual(_make_version(4, 1, 2, 'beta', 3), "4.1.2b3") |
| 81 self.assertEqual(_make_version(4, 1, 2, 'final', 0), "4.1.2") |
| 82 self.assertEqual(_make_version(5, 10, 2, 'candidate', 7), "5.10.2rc7") |
| 83 |
| 84 def test_make_url(self): |
| 85 self.assertEqual( |
| 86 _make_url(4, 0, 0, 'final', 0), |
| 87 "https://coverage.readthedocs.org" |
| 88 ) |
| 89 self.assertEqual( |
| 90 _make_url(4, 1, 2, 'beta', 3), |
| 91 "https://coverage.readthedocs.org/en/coverage-4.1.2b3" |
| 92 ) |
| 93 |
| 94 |
| 95 class SetupPyTest(CoverageTest): |
| 96 """Tests of setup.py""" |
| 97 |
| 98 run_in_temp_dir = False |
| 99 |
| 100 def test_metadata(self): |
| 101 status, output = self.run_command_status( |
| 102 "python setup.py --description --version --url --author" |
| 103 ) |
| 104 self.assertEqual(status, 0) |
| 105 out = output.splitlines() |
| 106 self.assertIn("measurement", out[0]) |
| 107 self.assertEqual(out[1], coverage.__version__) |
| 108 self.assertEqual(out[2], coverage.__url__) |
| 109 self.assertIn("Ned Batchelder", out[3]) |
| 110 |
| 111 def test_more_metadata(self): |
| 112 # Let's be sure we pick up our own setup.py |
| 113 # CoverageTest restores the original sys.path for us. |
| 114 sys.path.insert(0, '') |
| 115 from setup import setup_args |
| 116 |
| 117 classifiers = setup_args['classifiers'] |
| 118 self.assertGreater(len(classifiers), 7) |
| 119 self.assert_starts_with(classifiers[-1], "Development Status ::") |
| 120 |
| 121 long_description = setup_args['long_description'].splitlines() |
| 122 self.assertGreater(len(long_description), 7) |
| 123 self.assertNotEqual(long_description[0].strip(), "") |
| 124 self.assertNotEqual(long_description[-1].strip(), "") |
OLD | NEW |