summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-08-07 07:27:23 -0400
committerNed Batchelder <ned@nedbatchelder.com>2018-08-07 07:27:23 -0400
commit839a1a0209f2ed27215c8f2fb75c710806346b38 (patch)
tree4ecae9ebf2114623701cae7b188eb436af1045fb /tests
parentb147ea9dafe38e08083842f89502fefd9ba790d7 (diff)
parent305c5fdc378879adaac518ddeac7c22a0c92f49d (diff)
downloadpython-coveragepy-git-839a1a0209f2ed27215c8f2fb75c710806346b38.tar.gz
Merge branch 'master' into nedbat/data-sqlite
Diffstat (limited to 'tests')
-rw-r--r--tests/coveragetest.py14
-rw-r--r--tests/test_api.py6
-rw-r--r--tests/test_data.py19
-rw-r--r--tests/test_testing.py17
4 files changed, 43 insertions, 13 deletions
diff --git a/tests/coveragetest.py b/tests/coveragetest.py
index 8e3fa05d..94f50852 100644
--- a/tests/coveragetest.py
+++ b/tests/coveragetest.py
@@ -6,6 +6,7 @@
import contextlib
import datetime
import functools
+import glob
import os
import random
import re
@@ -347,6 +348,13 @@ class CoverageTest(
msg = "File %r shouldn't exist" % fname
self.assertTrue(not os.path.exists(fname), msg)
+ def assert_file_count(self, pattern, count):
+ """Assert that there are `count` files matching `pattern`."""
+ files = glob.glob(pattern)
+ msg = "There should be {} files matching {!r}, but there are these: {}"
+ msg = msg.format(count, pattern, files)
+ self.assertEqual(len(files), count, msg)
+
def assert_starts_with(self, s, prefix, msg=None):
"""Assert that `s` starts with `prefix`."""
if not s.startswith(prefix):
@@ -355,10 +363,8 @@ class CoverageTest(
def assert_recent_datetime(self, dt, seconds=10, msg=None):
"""Assert that `dt` marks a time at most `seconds` seconds ago."""
age = datetime.datetime.now() - dt
- # Python2.6 doesn't have total_seconds :(
- self.assertEqual(age.days, 0, msg)
- self.assertGreaterEqual(age.seconds, 0, msg)
- self.assertLessEqual(age.seconds, seconds, msg)
+ self.assertGreaterEqual(age.total_seconds(), 0, msg)
+ self.assertLessEqual(age.total_seconds(), seconds, msg)
def command_line(self, args, ret=OK, _covpkg=None):
"""Run `args` through the command line.
diff --git a/tests/test_api.py b/tests/test_api.py
index 248784ff..a860c7da 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -357,6 +357,7 @@ class ApiTest(CoverageTest):
cov = coverage.Coverage(data_suffix=True)
self.start_import_stop(cov, "code2")
cov.save()
+ self.assert_file_count(".coverage.*", 2)
def make_bad_data_file(self):
"""Make one bad data file."""
@@ -378,8 +379,9 @@ class ApiTest(CoverageTest):
# We got the results from code1 and code2 properly.
self.check_code1_code2(cov)
- # The bad file still exists.
+ # The bad file still exists, but it's the only parallel data file left.
self.assert_exists(".coverage.foo")
+ self.assert_file_count(".coverage.*", 1)
def test_combining_twice(self):
self.make_good_data_files()
@@ -387,6 +389,8 @@ class ApiTest(CoverageTest):
cov1.combine()
cov1.save()
self.check_code1_code2(cov1)
+ self.assert_file_count(".coverage.*", 0)
+ self.assert_exists(".coverage")
cov2 = coverage.Coverage()
with self.assertRaisesRegex(CoverageException, r"No data to combine"):
diff --git a/tests/test_data.py b/tests/test_data.py
index 702f4554..68b2c375 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -574,7 +574,7 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.assert_doesnt_exist(".coverage")
def test_true_suffix(self):
- self.assertEqual(glob.glob(".coverage.*"), [])
+ self.assert_file_count(".coverage.*", 0)
# suffix=True will make a randomly named data file.
covdata1 = CoverageData()
@@ -596,26 +596,25 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.assertTrue(all(str(os.getpid()) in fn for fn in data_files2))
def test_combining(self):
- self.assert_doesnt_exist(".coverage.1")
- self.assert_doesnt_exist(".coverage.2")
+ self.assert_file_count(".coverage.*", 0)
covdata1 = CoverageData()
covdata1.add_lines(LINES_1)
covdata1.write(suffix='1')
self.assert_exists(".coverage.1")
- self.assert_doesnt_exist(".coverage.2")
+ self.assert_file_count(".coverage.*", 1)
covdata2 = CoverageData()
covdata2.add_lines(LINES_2)
covdata2.write(suffix='2')
self.assert_exists(".coverage.2")
+ self.assert_file_count(".coverage.*", 2)
covdata3 = CoverageData()
combine_parallel_data(covdata3)
self.assert_line_counts(covdata3, SUMMARY_1_2)
self.assert_measured_files(covdata3, MEASURED_FILES_1_2)
- self.assert_doesnt_exist(".coverage.1")
- self.assert_doesnt_exist(".coverage.2")
+ self.assert_file_count(".coverage.*", 0)
def test_erasing(self):
covdata1 = CoverageData()
@@ -635,8 +634,7 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.make_file(".coverage")
data = CoverageData("datafile")
data.erase(parallel=True)
- self.assert_doesnt_exist("datafile.1")
- self.assert_doesnt_exist("datafile.2")
+ self.assert_file_count("datafile.*", 0)
self.assert_exists(".coverage")
def read_json_data_file(self, fname):
@@ -709,11 +707,16 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
})
covdata2.write(suffix='2')
+ self.assert_file_count(".coverage.*", 2)
+
covdata3 = CoverageData()
aliases = PathAliases()
aliases.add("/home/ned/proj/src/", "./")
aliases.add(r"c:\ned\test", "./")
combine_parallel_data(covdata3, aliases=aliases)
+ self.assert_file_count(".coverage.*", 0)
+ # covdata3 hasn't been written yet. Should this file exist or not?
+ #self.assert_exists(".coverage")
apy = canonical_filename('./a.py')
sub_bpy = canonical_filename('./sub/b.py')
diff --git a/tests/test_testing.py b/tests/test_testing.py
index d8cd0ef0..2b01584e 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -51,6 +51,23 @@ class CoverageTestTest(CoverageTest):
with self.assertRaises(AssertionError):
self.assert_exists("shadow.txt")
+ def test_file_count(self):
+ self.make_file("abcde.txt", "abcde")
+ self.make_file("axczz.txt", "axczz")
+ self.make_file("afile.txt", "afile")
+ self.assert_file_count("a*.txt", 3)
+ self.assert_file_count("*c*.txt", 2)
+ self.assert_file_count("afile.*", 1)
+ self.assert_file_count("*.q", 0)
+ with self.assertRaises(AssertionError):
+ self.assert_file_count("a*.txt", 13)
+ with self.assertRaises(AssertionError):
+ self.assert_file_count("*c*.txt", 12)
+ with self.assertRaises(AssertionError):
+ self.assert_file_count("afile.*", 11)
+ with self.assertRaises(AssertionError):
+ self.assert_file_count("*.q", 10)
+
def test_assert_startwith(self):
self.assert_starts_with("xyzzy", "xy")
self.assert_starts_with("xyz\nabc", "xy")