Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-coverage for openSUSE:Factory
checked in at 2021-05-12 19:31:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-coverage (Old)
and /work/SRC/openSUSE:Factory/.python-coverage.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-coverage"
Wed May 12 19:31:25 2021 rev:45 rq:892445 version:5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-coverage/python-coverage.changes
2021-03-19 16:39:32.737821644 +0100
+++
/work/SRC/openSUSE:Factory/.python-coverage.new.2988/python-coverage.changes
2021-05-12 19:31:34.463196155 +0200
@@ -1,0 +2,47 @@
+Wed May 12 09:29:03 UTC 2021 - Matej Cepl <[email protected]>
+
+- Add change__file__report-dir.patch to fix another issue repored
+ in gh#nedbat/coveragepy#1161.
+
+-------------------------------------------------------------------
+Tue May 11 10:44:16 UTC 2021 - Antonio Larrosa <[email protected]>
+
+- Add a patch from upstream (slightly rebased) to make data
+ collection operations thread safe:
+ * 0001-make-data-collection-operations-thread-safe.patch
+
+-------------------------------------------------------------------
+Sun May 9 22:27:19 UTC 2021 - Matej Cepl <[email protected]>
+
+- Add traced_file_absolute.patch to fix gh#nedbat/coveragepy#1161.
+
+-------------------------------------------------------------------
+Sat May 8 18:47:01 UTC 2021 - Matej Cepl <[email protected]>
+
+- Switch off test_debug_trace started to avoid failure
+ (gh#nedbat/coveragepy#1161).
+
+-------------------------------------------------------------------
+Sat May 8 14:15:04 UTC 2021 - Matej Cepl <[email protected]>
+
+- Update to 5.5:
+ - coverage combine has a new option, --keep to keep the original data
+ files after combining them. The default is still to delete the files
+ after they have been combined. This was requested in issue 1108 and
+ implemented in pull request 1110. Thanks, ??ric Larivi??re.
+ - When reporting missing branches in coverage report, branches aren???t
+ reported that jump to missing lines. This adds to the long-standing
+ behavior of not reporting branches from missing lines. Now branches
+ are only reported if both the source and destination lines are
+ executed. Closes both issue 1065 and issue 955.
+ - Minor improvements to the HTML report:
+ - The state of the line visibility selector buttons is saved in
+ local storage so you don???t have to fiddle with them so often,
+ fixing issue 1123.
+ - It has a little more room for line numbers so that 4-digit numbers
+ work well, fixing issue 1124.
+ - Improved the error message when combining line and branch data, so
+ that users will be more likely to understand what???s happening,
+ closing issue 803.
+
+-------------------------------------------------------------------
Old:
----
coverage-5.4.tar.gz
New:
----
0001-make-data-collection-operations-thread-safe.patch
change__file__report-dir.patch
coverage-5.5.tar.gz
traced_file_absolute.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-coverage.spec ++++++
--- /var/tmp/diff_new_pack.PWNF7d/_old 2021-05-12 19:31:34.891194253 +0200
+++ /var/tmp/diff_new_pack.PWNF7d/_new 2021-05-12 19:31:34.895194236 +0200
@@ -18,12 +18,21 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-coverage
-Version: 5.4
+Version: 5.5
Release: 0
Summary: Code coverage measurement for Python
License: Apache-2.0
URL: https://github.com/nedbat/coveragepy
Source:
https://files.pythonhosted.org/packages/source/c/coverage/coverage-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM traced_file_absolute.patch gh#nedbat/coveragepy#1161
[email protected]
+# traced file names seem to be absolute now?
+Patch0: traced_file_absolute.patch
+# PATCH-FIX-UPSTREAM 0001-make-data-collection-operations-thread-safe.patch
gh#nedbat/coveragepy#commit-e36b42e2db46 [email protected]
+# Make data collection operations thread safe
+Patch1: 0001-make-data-collection-operations-thread-safe.patch
+# PATCH-FIX-UPSTREAM change__file__report-dir.patch gh#nedbat/coveragepy#1161
[email protected]
+# Fix yet another regression in Python 3.8.10, this time about __file__ value
for directories.
+Patch2: change__file__report-dir.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module flaky}
BuildRequires: %{python_module hypothesis >= 4.57}
@@ -41,7 +50,7 @@
Requires: python-setuptools
Requires: python-toml
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
%python_subpackages
%description
@@ -50,7 +59,8 @@
library to determine which lines are executable, and which have been executed.
%prep
-%setup -q -n coverage-%{version}
+%autosetup -p1 -n coverage-%{version}
+
# do not require xdist
sed -i -e '/addopts/d' setup.cfg
# writes in /usr/
@@ -92,6 +102,7 @@
done
}
export PATH="$(pwd)/build/bin:$PATH"
+%python_exec -mcoverage debug sys
# the tests need the empty leading part for importing local test projects, the
x is a dummy"
export PYTHONPATH=":x"
%pytest_arch -k 'not (test_get_encoded_zip_files or test_egg or test_doctest
or test_unicode or test_version or test_multiprocessing_with_branching or
test_farm or test_dothtml_not_python or test_one_of or test_bytes or
test_encoding or test_multi or test_xdist_sys_path_nuttiness_is_fixed or
test_debug_sys_ctracer)'
++++++ 0001-make-data-collection-operations-thread-safe.patch ++++++
>From e36b42e2db46e892d9347ba0408c99b187ba8cb8 Mon Sep 17 00:00:00 2001
From: Ned Batchelder <[email protected]>
Date: Mon, 3 May 2021 07:56:05 -0400
Subject: [PATCH] fix: make data collection operations thread-safe
---
CHANGES.rst | 3 +++
coverage/sqldata.py | 20 ++++++++++++++++++++
tests/test_data.py | 7 ++++++-
3 files changed, 29 insertions(+), 1 deletion(-)
#diff --git a/CHANGES.rst b/CHANGES.rst
#index 29af7340..3c65e5d8 100644
#--- a/CHANGES.rst
#+++ b/CHANGES.rst
#@@ -26,6 +26,9 @@ Unreleased
#
# - Dropped support for Python 2.7, PyPy 2, and Python 3.5.
#
#+- Data collection is now thread-safe. There may have been rare instances of
#+ exceptions raised in multi-threaded programs.
#+
# - Plugins (like the `Django coverage plugin`_) were generating "Already
# imported a file that will be measured" warnings about Django itself. These
# have been fixed, closing `issue 1150`_.
Index: coverage-5.5/coverage/sqldata.py
===================================================================
--- coverage-5.5.orig/coverage/sqldata.py
+++ coverage-5.5/coverage/sqldata.py
@@ -8,12 +8,14 @@
import collections
import datetime
+import functools
import glob
import itertools
import os
import re
import sqlite3
import sys
+import threading
import zlib
from coverage import env
@@ -179,6 +181,10 @@ class CoverageData(SimpleReprMixin):
Data in a :class:`CoverageData` can be serialized and deserialized with
:meth:`dumps` and :meth:`loads`.
+ The methods used during the coverage.py collection phase
+ (:meth:`add_lines`, :meth:`add_arcs`, :meth:`set_context`, and
+ :meth:`add_file_tracers`) are thread-safe. Other methods may not be.
+
"""
def __init__(self, basename=None, suffix=None, no_disk=False, warn=None,
debug=None):
@@ -207,6 +213,8 @@ class CoverageData(SimpleReprMixin):
# Maps thread ids to SqliteDb objects.
self._dbs = {}
self._pid = os.getpid()
+ # Synchronize the operations used during collection.
+ self._lock = threading.Lock()
# Are we in sync with the data file?
self._have_used = False
@@ -218,6 +226,15 @@ class CoverageData(SimpleReprMixin):
self._current_context_id = None
self._query_context_ids = None
+ def _locked(method): # pylint: disable=no-self-argument
+ """A decorator for methods that should hold self._lock."""
+ @functools.wraps(method)
+ def _wrapped(self, *args, **kwargs):
+ with self._lock:
+ # pylint: disable=not-callable
+ return method(self, *args, **kwargs)
+ return _wrapped
+
def _choose_filename(self):
"""Set self._filename based on inited attributes."""
if self._no_disk:
@@ -381,6 +398,7 @@ class CoverageData(SimpleReprMixin):
else:
return None
+ @_locked
def set_context(self, context):
"""Set the current context for future :meth:`add_lines` etc.
@@ -422,6 +440,7 @@ class CoverageData(SimpleReprMixin):
"""
return self._filename
+ @_locked
def add_lines(self, line_data):
"""Add measured line data.
@@ -454,6 +473,7 @@ class CoverageData(SimpleReprMixin):
(file_id, self._current_context_id, linemap),
)
+ @_locked
def add_arcs(self, arc_data):
"""Add measured arc data.
@@ -498,6 +518,7 @@ class CoverageData(SimpleReprMixin):
('has_arcs', str(int(arcs)))
)
+ @_locked
def add_file_tracers(self, file_tracers):
"""Add per-file plugin information.
Index: coverage-5.5/tests/test_data.py
===================================================================
--- coverage-5.5.orig/tests/test_data.py
+++ coverage-5.5/tests/test_data.py
@@ -488,10 +488,14 @@ class CoverageDataTest(DataTestHelpers,
def test_thread_stress(self):
covdata = CoverageData()
+ exceptions = []
def thread_main():
"""Every thread will try to add the same data."""
- covdata.add_lines(LINES_1)
+ try:
+ covdata.add_lines(LINES_1)
+ except Exception as ex:
+ exceptions.append(ex)
threads = [threading.Thread(target=thread_main) for _ in range(10)]
for t in threads:
@@ -500,6 +504,7 @@ class CoverageDataTest(DataTestHelpers,
t.join()
self.assert_lines1_data(covdata)
+ assert exceptions == []
class CoverageDataTestInTempDir(DataTestHelpers, CoverageTest):
++++++ change__file__report-dir.patch ++++++
>From 01cbb8751f98e5a7de79699444cbc03647691616 Mon Sep 17 00:00:00 2001
From: Ned Batchelder <[email protected]>
Date: Tue, 11 May 2021 19:32:32 -0400
Subject: [PATCH] fix: Python 3.8.10 changed how __file__ is reported when
running directories
---
coverage/execfile.py | 5 +++++
tests/test_process.py | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -176,6 +176,11 @@ class PyRunner(object):
# directory.
for ext in [".py", ".pyc", ".pyo"]:
try_filename = os.path.join(self.arg0, "__main__" + ext)
+ # 3.8.10 changed how files are reported when running a
+ # directory. But I'm not sure how far this change is going to
+ # spread, so I'll just hard-code it here for now.
+ if env.PYVERSION >= (3, 8, 10):
+ try_filename = os.path.abspath(try_filename)
if os.path.exists(try_filename):
self.arg0 = try_filename
break
--- a/tests/test_process.py
+++ b/tests/test_process.py
@@ -852,7 +852,7 @@ class EnvironmentTest(CoverageTest):
expected = re_lines(expected, r'\s+"argv0":', match=False)
actual = re_lines(actual, r'\s+"argv0":', match=False)
- assert expected == actual
+ assert actual == expected
def test_coverage_run_is_like_python(self):
with open(TRY_EXECFILE) as f:
++++++ coverage-5.4.tar.gz -> coverage-5.5.tar.gz ++++++
++++ 9425 lines of diff (skipped)
++++++ traced_file_absolute.patch ++++++
>From 06cb51b39620e2140f915393f0f41b281594e05b Mon Sep 17 00:00:00 2001
From: Ned Batchelder <[email protected]>
Date: Sat, 8 May 2021 21:27:45 -0400
Subject: [PATCH] test: traced file names seem to be absolute now? #1161
This was changed in 3.10.0b1 and 3.9.5. Seems like a strange change to
throw into 3.9.5, but there it is. Fixes #1161.
---
tests/test_debug.py | 6 ++++--
tests/test_oddball.py | 16 +++++++++-------
2 files changed, 13 insertions(+), 9 deletions(-)
--- a/tests/test_debug.py
+++ b/tests/test_debug.py
@@ -124,8 +124,10 @@ class DebugTraceTest(CoverageTest):
def test_debug_trace(self):
out_lines = self.f1_debug_output(["trace"])
- # We should have a line like "Tracing 'f1.py'"
- assert "Tracing 'f1.py'" in out_lines
+ # We should have a line like "Tracing 'f1.py'", perhaps with an
+ # absolute path.
+ f1 = re_lines(out_lines, r"Tracing '.*f1.py'")
+ assert f1
# We should have lines like "Not tracing 'collector.py'..."
coverage_lines = re_lines(
--- a/tests/test_oddball.py
+++ b/tests/test_oddball.py
@@ -451,10 +451,12 @@ class GettraceTest(CoverageTest):
def test_setting_new_trace_function(self):
# https://github.com/nedbat/coveragepy/issues/436
self.check_coverage('''\
+ import os.path
import sys
def tracer(frame, event, arg):
- print("%s: %s @ %d" % (event, frame.f_code.co_filename,
frame.f_lineno))
+ filename = os.path.basename(frame.f_code.co_filename)
+ print("%s: %s @ %d" % (event, filename, frame.f_lineno))
return tracer
def begin():
@@ -474,16 +476,16 @@ class GettraceTest(CoverageTest):
a = 21
b = 22
''',
- lines=[1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21,
22],
- missing="4-5, 11-12",
+ lines=[1, 2, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 20, 21,
22, 23, 24],
+ missing="5-7, 13-14",
)
out = self.stdout().replace(self.last_module_name, "coverage_test")
expected = (
- "call: coverage_test.py @ 10\n"
- "line: coverage_test.py @ 11\n"
- "line: coverage_test.py @ 12\n"
- "return: coverage_test.py @ 12\n"
+ "call: coverage_test.py @ 12\n"
+ "line: coverage_test.py @ 13\n"
+ "line: coverage_test.py @ 14\n"
+ "return: coverage_test.py @ 14\n"
)
assert expected == out