From: "Arthur Zamarin" <arthurzam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/pkgcore/pkgcheck:master commit in: testdata/data/repos/network/MetadataUrlCheck/RedirectedUrl/, ...
Date: Mon, 17 Oct 2022 07:48:29 +0000 (UTC) [thread overview]
Message-ID: <1665992733.8ef7ab63c0fbd294b37e851bce709336a1bd6e5a.arthurzam@gentoo> (raw)
commit: 8ef7ab63c0fbd294b37e851bce709336a1bd6e5a
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 17 07:23:21 2022 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon Oct 17 07:45:33 2022 +0000
URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=8ef7ab63
network: fix results misattributed with same URL
When a URL is collected from multiple different attributes, the results
weren't updating the selected attribute, which resulted in wrong report.
Resolves: https://github.com/pkgcore/pkgcheck/issues/403
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcheck/checks/network.py | 12 ++++++----
.../MetadataUrlCheck/RedirectedUrl/expected.json | 2 ++
.../MetadataUrlCheck/RedirectedUrl/metadata.xml | 2 ++
.../MetadataUrlCheck/RedirectedUrl/responses.py | 28 ++++++++++++++++------
4 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/src/pkgcheck/checks/network.py b/src/pkgcheck/checks/network.py
index cfe76687..cad8e536 100644
--- a/src/pkgcheck/checks/network.py
+++ b/src/pkgcheck/checks/network.py
@@ -167,7 +167,7 @@ class _UrlCheck(NetworkCheck):
result = DeadUrl(attr, url, str(e), pkg=pkg)
return result
- def task_done(self, pkg, future):
+ def task_done(self, pkg, attr, future):
"""Determine the result of a given URL verification task."""
exc = future.exception()
if exc is not None:
@@ -180,8 +180,10 @@ class _UrlCheck(NetworkCheck):
result = future.result()
if result is not None:
if pkg is not None:
- # recreate result object with different pkg target
- result = result._create(**result._attrs, pkg=pkg)
+ # recreate result object with different pkg target and attr
+ attrs = result._attrs.copy()
+ attrs['attr'] = attr
+ result = result._create(**attrs, pkg=pkg)
self.results_q.put([result])
def _get_urls(self, pkg):
@@ -198,10 +200,10 @@ class _UrlCheck(NetworkCheck):
future = futures.get(url)
if future is None:
future = executor.submit(func, attr, url, **kwargs)
- future.add_done_callback(partial(self.task_done, None))
+ future.add_done_callback(partial(self.task_done, None, None))
futures[url] = future
else:
- future.add_done_callback(partial(self.task_done, kwargs['pkg']))
+ future.add_done_callback(partial(self.task_done, kwargs['pkg'], attr))
def schedule(self, pkg, executor, futures):
"""Schedule verification methods to run in separate threads for all flagged URLs."""
diff --git a/testdata/data/repos/network/MetadataUrlCheck/RedirectedUrl/expected.json b/testdata/data/repos/network/MetadataUrlCheck/RedirectedUrl/expected.json
index 789b87d2..ef65eafc 100644
--- a/testdata/data/repos/network/MetadataUrlCheck/RedirectedUrl/expected.json
+++ b/testdata/data/repos/network/MetadataUrlCheck/RedirectedUrl/expected.json
@@ -1 +1,3 @@
{"__class__": "RedirectedUrl", "category": "MetadataUrlCheck", "package": "RedirectedUrl", "version": "0", "attr": "metadata.xml: changelog", "url": "https://github.com/pkgcore/pkgcheck/changelog", "new_url": "https://github.com/pkgcore/pkgcheck/news"}
+{"__class__": "RedirectedUrl", "category": "MetadataUrlCheck", "package": "RedirectedUrl", "version": "0", "attr": "metadata.xml: remote-id", "url": "https://github.com/pkgcore/pkgcheck", "new_url": "https://github.com/pkgcore/pkgcheck/"}
+{"__class__": "RedirectedUrl", "category": "MetadataUrlCheck", "package": "RedirectedUrl", "version": "0", "attr": "metadata.xml: doc", "url": "https://github.com/pkgcore/pkgcheck", "new_url": "https://github.com/pkgcore/pkgcheck/"}
diff --git a/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/metadata.xml b/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/metadata.xml
index 429b3b6b..97b42470 100644
--- a/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/metadata.xml
+++ b/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/metadata.xml
@@ -2,6 +2,8 @@
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<upstream>
+ <remote-id type="github">pkgcore/pkgcheck</remote-id>
+ <doc>https://github.com/pkgcore/pkgcheck</doc>
<changelog>https://github.com/pkgcore/pkgcheck/changelog</changelog>
</upstream>
</pkgmetadata>
diff --git a/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/responses.py b/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/responses.py
index 560443ee..0c4e3565 100644
--- a/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/responses.py
+++ b/testdata/repos/network/MetadataUrlCheck/RedirectedUrl/responses.py
@@ -9,11 +9,25 @@ r_hist.url = 'https://github.com/pkgcore/pkgcheck/changelog'
r_hist.headers = {'location': 'https://github.com/pkgcore/pkgcheck/news'}
r_hist.raw = io.StringIO()
-r = Response()
-r.status_code = 200
-r.reason = 'OK'
-r.url = 'https://github.com/pkgcore/pkgcheck/changelog'
-r.raw = io.StringIO()
-r.history = [r_hist]
+r1 = Response()
+r1.status_code = 200
+r1.reason = 'OK'
+r1.url = 'https://github.com/pkgcore/pkgcheck/changelog'
+r1.raw = io.StringIO()
+r1.history = [r_hist]
-responses = [r]
+r_hist = Response()
+r_hist.status_code = 301
+r_hist.reason = 'Moved Permanently'
+r_hist.url = 'https://github.com/pkgcore/pkgcheck'
+r_hist.headers = {'location': 'https://github.com/pkgcore/pkgcheck/'}
+r_hist.raw = io.StringIO()
+
+r2 = Response()
+r2.status_code = 301
+r2.reason = 'OK'
+r2.url = 'https://github.com/pkgcore/pkgcheck'
+r2.raw = io.StringIO()
+r2.history = [r_hist]
+
+responses = [r1, r2]
reply other threads:[~2022-10-17 7:48 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1665992733.8ef7ab63c0fbd294b37e851bce709336a1bd6e5a.arthurzam@gentoo \
--to=arthurzam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox