python-resolvelib/remove-commentjson-dep.patch
Yaakov Selkowitz b71185e83c Simplify build dependencies
python-commentjson is not packaged in Fedora, and python-json5 has a
long build dependency chain.  Since they are only used as a fallback to
built-in json because some of the test fixtures are commented (which
should in no way reflect the capabilities of resolvelib itself), simply
removing the comments allow the tests to pass without commentjson/json5.
2023-11-09 11:12:55 +01:00

64 lines
2.0 KiB
Diff

From 3e50054d836b655b0868520bae8b85a3c18967ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Wed, 8 Nov 2023 17:12:16 +0100
Subject: [PATCH] Replace the commentjson test dependency with re.sub
While at it, only open the json files once.
Co-authored-by: Maxwell G <maxwell@gtmx.me>
---
setup.cfg | 1 -
.../cocoapods/test_resolvers_cocoapods.py | 19 +++++++++++--------
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/setup.cfg b/setup.cfg
index 5eddf2f..e080991 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -44,7 +44,6 @@ lint =
isort
types-requests
test =
- commentjson
packaging
pytest
release =
diff --git a/tests/functional/cocoapods/test_resolvers_cocoapods.py b/tests/functional/cocoapods/test_resolvers_cocoapods.py
index 12dff46..f54e27d 100644
--- a/tests/functional/cocoapods/test_resolvers_cocoapods.py
+++ b/tests/functional/cocoapods/test_resolvers_cocoapods.py
@@ -5,7 +5,6 @@
import re
import string
-import commentjson # type: ignore
import pytest
from resolvelib import AbstractProvider, ResolutionImpossible, Resolver
@@ -124,14 +123,18 @@ def _version_in_specset(version, specset):
def _safe_json_load(filename):
- # Some fixtures has comments so the stdlib implementation doesn't work.
- # We only use commentjson if we absolutely need to because it's SLOW.
- try:
- with open(filename) as f:
+ # Some fixtures have comments so they are not valid json.
+ # We could use commentjson/json5 to load them,
+ # but it's easier to strip the comments.
+ # We only do it when json.load() fails to avoid unnecessary loading
+ # all the json files to strings.
+ with open(filename) as f:
+ try:
data = json.load(f)
- except ValueError:
- with open(filename) as f:
- data = commentjson.load(f)
+ except ValueError:
+ f.seek(0)
+ strippedjson = re.sub(r"//.*$", "", f.read(), flags=re.MULTILINE)
+ data = json.loads(strippedjson)
return data