diff options
author | Frazer McLean <frazer@frazermclean.co.uk> | 2019-09-16 22:24:53 +0200 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-11-03 21:27:42 -0500 |
commit | f97d0750a91e53bec387528344c1ca3bf86e1d08 (patch) | |
tree | b240becda198190abdf545f02ce116ca3eae8808 /coverage/config.py | |
parent | 1c06204a8b1db6cd5f53c553c42f3ef8229d6b20 (diff) | |
download | python-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.py | 16 |
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), ] |