summaryrefslogtreecommitdiff
path: root/coverage/config.py
diff options
context:
space:
mode:
authorFrazer McLean <frazer@frazermclean.co.uk>2019-09-16 22:24:53 +0200
committerNed Batchelder <ned@nedbatchelder.com>2019-11-03 21:27:42 -0500
commitf97d0750a91e53bec387528344c1ca3bf86e1d08 (patch)
treeb240becda198190abdf545f02ce116ca3eae8808 /coverage/config.py
parent1c06204a8b1db6cd5f53c553c42f3ef8229d6b20 (diff)
downloadpython-coveragepy-git-f97d0750a91e53bec387528344c1ca3bf86e1d08.tar.gz
TOML support for pyproject.toml and other config files
Squashed and rebased from https://github.com/nedbat/coveragepy/pull/699 Missing getfloat TOMLConfigParser -> TomlConfigParser fix getfloat for int Move TomlConfigParser Add name to contributors Import toml in backward.py fix indentation Don't ignore TomlDecodeError Raise if TomlConfigParser is used without toml installed Add tests for TOML config Fix test on Python 2 Mention toml support in documentation.
Diffstat (limited to 'coverage/config.py')
-rw-r--r--coverage/config.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/coverage/config.py b/coverage/config.py
index c6689d2d..89a0321e 100644
--- a/coverage/config.py
+++ b/coverage/config.py
@@ -9,10 +9,12 @@ import os
import re
from coverage import env
-from coverage.backward import configparser, iitems, string_class
+from coverage.backward import configparser, iitems, string_class, toml
from coverage.misc import contract, CoverageException, isolate_module
from coverage.misc import substitute_variables
+from coverage.tomlconfig import TomlConfigParser, TomlDecodeError
+
os = isolate_module(os)
@@ -256,12 +258,19 @@ class CoverageConfig(object):
coverage.py settings in it.
"""
+ _, ext = os.path.splitext(filename)
+ if ext == '.toml':
+ if toml is None:
+ return False
+ cp = TomlConfigParser(our_file)
+ else:
+ cp = HandyConfigParser(our_file)
+
self.attempted_config_files.append(filename)
- cp = HandyConfigParser(our_file)
try:
files_read = cp.read(filename)
- except configparser.Error as err:
+ except (configparser.Error, TomlDecodeError) as err:
raise CoverageException("Couldn't read config file %s: %s" % (filename, err))
if not files_read:
return False
@@ -473,6 +482,7 @@ def config_files_to_try(config_file):
config_file = ".coveragerc"
files_to_try = [
(config_file, True, specified_file),
+ ("pyproject.toml", False, False),
("setup.cfg", False, False),
("tox.ini", False, False),
]