diff options
35 files changed, 99 insertions, 81 deletions
diff --git a/coverage/__init__.py b/coverage/__init__.py index 331b304b..429a7bd0 100644 --- a/coverage/__init__.py +++ b/coverage/__init__.py @@ -14,7 +14,7 @@ from coverage.version import __version__, __url__, version_info from coverage.control import Coverage, process_startup from coverage.data import CoverageData -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from coverage.plugin import CoveragePlugin, FileTracer, FileReporter from coverage.pytracer import PyTracer diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 318cd5a0..cc7d8082 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -18,8 +18,8 @@ from coverage import env from coverage.collector import CTracer from coverage.data import line_counts from coverage.debug import info_formatter, info_header, short_stack +from coverage.exceptions import BaseCoverageException, ExceptionDuringRun, NoSource from coverage.execfile import PyRunner -from coverage.misc import BaseCoverageException, ExceptionDuringRun, NoSource from coverage.results import should_fail_under diff --git a/coverage/collector.py b/coverage/collector.py index fd88e37d..e219c928 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -9,7 +9,8 @@ import sys from coverage import env from coverage.debug import short_stack from coverage.disposition import FileDisposition -from coverage.misc import CoverageException, isolate_module +from coverage.exceptions import CoverageException +from coverage.misc import isolate_module from coverage.pytracer import PyTracer os = isolate_module(os) diff --git a/coverage/config.py b/coverage/config.py index 1dee072e..71f8fbd0 100644 --- a/coverage/config.py +++ b/coverage/config.py @@ -10,8 +10,8 @@ import os import os.path import re -from coverage.misc import contract, CoverageException, isolate_module -from coverage.misc import substitute_variables +from coverage.exceptions import CoverageException +from coverage.misc import contract, isolate_module, substitute_variables from coverage.tomlconfig import TomlConfigParser, TomlDecodeError diff --git a/coverage/control.py b/coverage/control.py index b3c5b7dc..95d22007 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -20,11 +20,12 @@ from coverage.context import should_start_context_test_function, combine_context from coverage.data import CoverageData, combine_parallel_data from coverage.debug import DebugControl, short_stack, write_formatted_info from coverage.disposition import disposition_debug_msg +from coverage.exceptions import CoverageException from coverage.files import PathAliases, abs_file, relative_filename, set_relative_directory from coverage.html import HtmlReporter from coverage.inorout import InOrOut from coverage.jsonreport import JsonReporter -from coverage.misc import CoverageException, bool_or_none, join_regex +from coverage.misc import bool_or_none, join_regex from coverage.misc import DefaultValue, ensure_dir_for_file, isolate_module from coverage.plugin import FileReporter from coverage.plugin_support import Plugins diff --git a/coverage/data.py b/coverage/data.py index cf258328..752822b7 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -13,7 +13,8 @@ imports working. import glob import os.path -from coverage.misc import CoverageException, file_be_gone +from coverage.exceptions import CoverageException +from coverage.misc import file_be_gone from coverage.sqldata import CoverageData diff --git a/coverage/exceptions.py b/coverage/exceptions.py new file mode 100644 index 00000000..ed96fb21 --- /dev/null +++ b/coverage/exceptions.py @@ -0,0 +1,48 @@ +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 +# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt + +"""Exceptions coverage.py can raise.""" + + +class BaseCoverageException(Exception): + """The base of all Coverage exceptions.""" + pass + + +class CoverageException(BaseCoverageException): + """An exception raised by a coverage.py function.""" + pass + + +class NoSource(CoverageException): + """We couldn't find the source for a module.""" + pass + + +class NoCode(NoSource): + """We couldn't find any code at all.""" + pass + + +class NotPython(CoverageException): + """A source file turned out not to be parsable Python.""" + pass + + +class ExceptionDuringRun(CoverageException): + """An exception happened while running customer code. + + Construct it with three arguments, the values from `sys.exc_info`. + + """ + pass + + +class StopEverything(BaseCoverageException): + """An exception that means everything should stop. + + The CoverageTest class converts these to SkipTest, so that when running + tests, raising this exception will automatically skip the test. + + """ + pass diff --git a/coverage/execfile.py b/coverage/execfile.py index c2709a74..2ca9f55f 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -13,8 +13,9 @@ import sys import types from coverage import env +from coverage.exceptions import CoverageException, ExceptionDuringRun, NoCode, NoSource from coverage.files import canonical_filename, python_reported_file -from coverage.misc import CoverageException, ExceptionDuringRun, NoCode, NoSource, isolate_module +from coverage.misc import isolate_module from coverage.phystokens import compile_unicode from coverage.python import get_python_source diff --git a/coverage/files.py b/coverage/files.py index 1f78e0b6..f1832207 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -13,7 +13,8 @@ import re import sys from coverage import env -from coverage.misc import contract, CoverageException, join_regex, isolate_module +from coverage.exceptions import CoverageException +from coverage.misc import contract, join_regex, isolate_module os = isolate_module(os) diff --git a/coverage/html.py b/coverage/html.py index 5965b048..7626f54e 100644 --- a/coverage/html.py +++ b/coverage/html.py @@ -12,9 +12,9 @@ import types import coverage from coverage.data import add_data_to_hash +from coverage.exceptions import CoverageException from coverage.files import flat_rootname -from coverage.misc import CoverageException, ensure_dir, file_be_gone, Hasher, isolate_module -from coverage.misc import format_local_datetime +from coverage.misc import ensure_dir, file_be_gone, Hasher, isolate_module, format_local_datetime from coverage.report import get_analysis_to_report from coverage.results import Numbers from coverage.templite import Templite diff --git a/coverage/inorout.py b/coverage/inorout.py index b46162ee..fae9ef18 100644 --- a/coverage/inorout.py +++ b/coverage/inorout.py @@ -15,9 +15,9 @@ import traceback from coverage import env from coverage.disposition import FileDisposition, disposition_init +from coverage.exceptions import CoverageException from coverage.files import TreeMatcher, FnmatchMatcher, ModuleMatcher from coverage.files import prep_patterns, find_python_files, canonical_filename -from coverage.misc import CoverageException from coverage.python import source_for_file, source_for_morf diff --git a/coverage/misc.py b/coverage/misc.py index 52583589..db2c3b75 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -17,6 +17,7 @@ import sys import types from coverage import env +from coverage.exceptions import CoverageException ISOLATED_MODULES = {} @@ -338,47 +339,3 @@ def import_local_file(modname, modfile=None): spec.loader.exec_module(mod) return mod - - -class BaseCoverageException(Exception): - """The base of all Coverage exceptions.""" - pass - - -class CoverageException(BaseCoverageException): - """An exception raised by a coverage.py function.""" - pass - - -class NoSource(CoverageException): - """We couldn't find the source for a module.""" - pass - - -class NoCode(NoSource): - """We couldn't find any code at all.""" - pass - - -class NotPython(CoverageException): - """A source file turned out not to be parsable Python.""" - pass - - -class ExceptionDuringRun(CoverageException): - """An exception happened while running customer code. - - Construct it with three arguments, the values from `sys.exc_info`. - - """ - pass - - -class StopEverything(BaseCoverageException): - """An exception that means everything should stop. - - The CoverageTest class converts these to SkipTest, so that when running - tests, raising this exception will automatically skip the test. - - """ - pass diff --git a/coverage/parser.py b/coverage/parser.py index 445eeeab..87a8f6a4 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -13,8 +13,8 @@ import tokenize from coverage import env from coverage.bytecode import code_objects from coverage.debug import short_stack +from coverage.exceptions import NoSource, NotPython, StopEverything from coverage.misc import contract, join_regex, new_contract, nice_pair, one_of -from coverage.misc import NoSource, NotPython, StopEverything from coverage.phystokens import compile_unicode, generate_tokens, neuter_encoding_declaration diff --git a/coverage/plugin_support.py b/coverage/plugin_support.py index cf7ef80f..7accc56f 100644 --- a/coverage/plugin_support.py +++ b/coverage/plugin_support.py @@ -7,7 +7,8 @@ import os import os.path import sys -from coverage.misc import CoverageException, isolate_module +from coverage.exceptions import CoverageException +from coverage.misc import isolate_module from coverage.plugin import CoveragePlugin, FileTracer, FileReporter os = isolate_module(os) diff --git a/coverage/python.py b/coverage/python.py index 7b6a6d8a..619857d9 100644 --- a/coverage/python.py +++ b/coverage/python.py @@ -8,8 +8,8 @@ import types import zipimport from coverage import env, files +from coverage.exceptions import CoverageException, NoSource from coverage.misc import contract, expensive, isolate_module, join_regex -from coverage.misc import CoverageException, NoSource from coverage.parser import PythonParser from coverage.phystokens import source_token_lines, source_encoding from coverage.plugin import FileReporter diff --git a/coverage/report.py b/coverage/report.py index 4849fe80..3a5a03b7 100644 --- a/coverage/report.py +++ b/coverage/report.py @@ -4,8 +4,9 @@ """Reporter foundation for coverage.py.""" import sys +from coverage.exceptions import CoverageException, NoSource, NotPython from coverage.files import prep_patterns, FnmatchMatcher -from coverage.misc import CoverageException, NoSource, NotPython, ensure_dir_for_file, file_be_gone +from coverage.misc import ensure_dir_for_file, file_be_gone def render_report(output_path, reporter, morfs): diff --git a/coverage/results.py b/coverage/results.py index 0a7a6135..c60ccac2 100644 --- a/coverage/results.py +++ b/coverage/results.py @@ -6,7 +6,8 @@ import collections from coverage.debug import SimpleReprMixin -from coverage.misc import contract, CoverageException, nice_pair +from coverage.exceptions import CoverageException +from coverage.misc import contract, nice_pair class Analysis: diff --git a/coverage/sqldata.py b/coverage/sqldata.py index 0e31a358..14279518 100644 --- a/coverage/sqldata.py +++ b/coverage/sqldata.py @@ -18,8 +18,9 @@ import threading import zlib from coverage.debug import NoDebugging, SimpleReprMixin, clipped_repr +from coverage.exceptions import CoverageException from coverage.files import PathAliases -from coverage.misc import CoverageException, contract, file_be_gone, filename_suffix, isolate_module +from coverage.misc import contract, file_be_gone, filename_suffix, isolate_module from coverage.numbits import numbits_to_nums, numbits_union, nums_to_numbits from coverage.version import __version__ diff --git a/coverage/summary.py b/coverage/summary.py index 7d000150..0597a2aa 100644 --- a/coverage/summary.py +++ b/coverage/summary.py @@ -5,9 +5,9 @@ import sys +from coverage.exceptions import CoverageException from coverage.report import get_analysis_to_report from coverage.results import Numbers -from coverage.misc import CoverageException class SummaryReporter: diff --git a/coverage/tomlconfig.py b/coverage/tomlconfig.py index 0853812a..1e0b1241 100644 --- a/coverage/tomlconfig.py +++ b/coverage/tomlconfig.py @@ -7,7 +7,8 @@ import configparser import os import re -from coverage.misc import CoverageException, substitute_variables +from coverage.exceptions import CoverageException +from coverage.misc import substitute_variables # TOML support is an install-time extra option. try: diff --git a/lab/parse_all.py b/lab/parse_all.py index 37606838..b14c1f0e 100644 --- a/lab/parse_all.py +++ b/lab/parse_all.py @@ -3,7 +3,7 @@ import os import sys -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from coverage.parser import PythonParser for root, dirnames, filenames in os.walk(sys.argv[1]): diff --git a/tests/conftest.py b/tests/conftest.py index 5e3ed445..c84f446a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,7 +14,7 @@ import warnings import pytest from coverage import env -from coverage.misc import StopEverything +from coverage.exceptions import StopEverything # Pytest will rewrite assertions in test modules, but not elsewhere. diff --git a/tests/test_api.py b/tests/test_api.py index 05554ae4..d6a9c08a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -18,8 +18,9 @@ import pytest import coverage from coverage import env from coverage.data import line_counts +from coverage.exceptions import CoverageException from coverage.files import abs_file, relative_filename -from coverage.misc import CoverageException, import_local_file +from coverage.misc import import_local_file from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin from tests.helpers import assert_count_equal, change_dir, nice_file diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index ed5090f5..b214473c 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -16,7 +16,7 @@ import coverage.cmdline from coverage import env from coverage.config import CoverageConfig from coverage.data import CoverageData -from coverage.misc import ExceptionDuringRun +from coverage.exceptions import ExceptionDuringRun from coverage.version import __url__ from tests.coveragetest import CoverageTest, OK, ERR, command_line diff --git a/tests/test_config.py b/tests/test_config.py index 83d756a5..a8b0ecef 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -10,7 +10,7 @@ import pytest import coverage from coverage.config import HandyConfigParser -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from tests.coveragetest import CoverageTest, UsingModulesMixin from tests.helpers import without_module diff --git a/tests/test_coverage.py b/tests/test_coverage.py index 3ddc6e86..1ae927bd 100644 --- a/tests/test_coverage.py +++ b/tests/test_coverage.py @@ -7,7 +7,7 @@ import pytest import coverage from coverage import env -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from tests.coveragetest import CoverageTest diff --git a/tests/test_data.py b/tests/test_data.py index 867891d4..4b385b7f 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -16,8 +16,8 @@ import pytest from coverage.data import CoverageData, combine_parallel_data from coverage.data import add_data_to_hash, line_counts from coverage.debug import DebugControlString +from coverage.exceptions import CoverageException from coverage.files import PathAliases, canonical_filename -from coverage.misc import CoverageException from tests.coveragetest import CoverageTest from tests.helpers import assert_count_equal diff --git a/tests/test_execfile.py b/tests/test_execfile.py index 7c63ac15..dcd03b44 100644 --- a/tests/test_execfile.py +++ b/tests/test_execfile.py @@ -14,9 +14,9 @@ import sys import pytest from coverage import env +from coverage.exceptions import NoCode, NoSource from coverage.execfile import run_python_file, run_python_module from coverage.files import python_reported_file -from coverage.misc import NoCode, NoSource from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin diff --git a/tests/test_files.py b/tests/test_files.py index cfe37460..98ece632 100644 --- a/tests/test_files.py +++ b/tests/test_files.py @@ -8,13 +8,13 @@ import os.path import pytest +from coverage import env from coverage import files +from coverage.exceptions import CoverageException from coverage.files import ( TreeMatcher, FnmatchMatcher, ModuleMatcher, PathAliases, find_python_files, abs_file, actual_path, flat_rootname, fnmatches_to_regex, ) -from coverage.misc import CoverageException -from coverage import env from tests.coveragetest import CoverageTest diff --git a/tests/test_html.py b/tests/test_html.py index 3b3250e4..c9dbacc8 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -16,9 +16,9 @@ import pytest import coverage from coverage import env +from coverage.exceptions import CoverageException, NotPython, NoSource from coverage.files import abs_file, flat_rootname import coverage.html -from coverage.misc import CoverageException, NotPython, NoSource from coverage.report import get_analysis_to_report from tests.coveragetest import CoverageTest, TESTS_DIR diff --git a/tests/test_misc.py b/tests/test_misc.py index 760d8efe..95ca977d 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -5,9 +5,10 @@ import pytest +from coverage.exceptions import CoverageException from coverage.misc import contract, dummy_decorator_with_args, file_be_gone from coverage.misc import Hasher, one_of, substitute_variables -from coverage.misc import CoverageException, USE_CONTRACTS +from coverage.misc import USE_CONTRACTS from tests.coveragetest import CoverageTest diff --git a/tests/test_parser.py b/tests/test_parser.py index 46ee25f3..7fd87bba 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -8,7 +8,7 @@ import textwrap import pytest from coverage import env -from coverage.misc import NotPython +from coverage.exceptions import NotPython from coverage.parser import PythonParser from tests.coveragetest import CoverageTest diff --git a/tests/test_plugins.py b/tests/test_plugins.py index 21aeab14..3401895b 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -12,9 +12,10 @@ import pytest import coverage from coverage import env -from coverage.data import line_counts from coverage.control import Plugins -from coverage.misc import CoverageException, import_local_file +from coverage.data import line_counts +from coverage.exceptions import CoverageException +from coverage.misc import import_local_file import coverage.plugin diff --git a/tests/test_results.py b/tests/test_results.py index 0453424b..5811b0c2 100644 --- a/tests/test_results.py +++ b/tests/test_results.py @@ -5,7 +5,7 @@ import pytest -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from coverage.results import format_lines, Numbers, should_fail_under from tests.coveragetest import CoverageTest diff --git a/tests/test_summary.py b/tests/test_summary.py index a326fc85..a6384c46 100644 --- a/tests/test_summary.py +++ b/tests/test_summary.py @@ -16,7 +16,7 @@ import coverage from coverage import env from coverage.control import Coverage from coverage.data import CoverageData -from coverage.misc import CoverageException +from coverage.exceptions import CoverageException from coverage.summary import SummaryReporter from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin |