From c44bbcd1d86e6c4192988f20319d9e3c94e263b6 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 27 Nov 2014 07:38:40 -0500 Subject: Give error messages if an explicitly provided rcfile can't be read. --- tests/test_config.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'tests/test_config.py') diff --git a/tests/test_config.py b/tests/test_config.py index 26a22222..34727ae6 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -91,13 +91,18 @@ class ConfigTest(CoverageTest): self.assertEqual(cov.config.data_file, "fromarg.dat") def test_parse_errors(self): - # Im-parseable values raise CoverageException - self.make_file(".coveragerc", """\ - [run] - timid = maybe? - """) - with self.assertRaises(CoverageException): - coverage.coverage() + # Im-parseable values raise CoverageException, with details. + bad_configs_and_msgs = [ + ("[run]\ntimid = maybe?\n", r"maybe[?]"), + ("timid = 1\n", r"timid = 1"), + ("[run\n", r"\[run"), + ] + + for bad_config, msg in bad_configs_and_msgs: + print("Trying %r" % bad_config) + self.make_file(".coveragerc", bad_config) + with self.assertRaisesRegex(CoverageException, msg): + coverage.coverage() def test_environment_vars_in_config(self): # Config files can have $envvars in them. @@ -339,3 +344,15 @@ class ConfigFileTest(CoverageTest): self.assertEqual(cov.config.html_title, "tabblo & «ταБЬℓσ» # numbers" ) + + def test_unreadable_config(self): + # If a config file is explicitly specified, then it is an error for it + # to not be readable. + bad_files = [ + "nosuchfile.txt", + ".", + ] + for bad_file in bad_files: + msg = "Couldn't read %r as a config file" % bad_file + with self.assertRaisesRegex(CoverageException, msg): + coverage.coverage(config_file=bad_file) -- cgit v1.2.1