diff --git a/.gitignore b/.gitignore index bf0ac92..8df8cb9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /httpie-1.0.3.tar.gz /httpie-2.3.0.tar.gz /httpie-2.4.0.tar.gz +/httpie-2.5.0.tar.gz diff --git a/1049.patch b/1049.patch deleted file mode 100644 index 09bf76a..0000000 --- a/1049.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 5f9b44711447a1ec0bc1593f67a31fe03956fd8f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Tue, 30 Mar 2021 22:39:29 +0200 -Subject: [PATCH] Explicitly require setuptools, httpie/plugins/manager.py - imports pkg_resources - ---- - setup.py | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/setup.py b/setup.py -index 5204cadf9..1777858da 100644 ---- a/setup.py -+++ b/setup.py -@@ -42,6 +42,7 @@ def run_tests(self): - 'requests[socks]>=2.22.0', - 'Pygments>=2.5.2', - 'requests-toolbelt>=0.9.1', -+ 'setuptools', - ] - install_requires_win_only = [ - 'colorama>=0.2.4', diff --git a/1054.patch b/1054.patch deleted file mode 100644 index 8ab32f9..0000000 --- a/1054.patch +++ /dev/null @@ -1,123 +0,0 @@ -From d374aeb1f9a3b3a11d73d2ef1eaee1c91c2f297f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micka=C3=ABl=20Schoentgen?= -Date: Fri, 30 Apr 2021 13:56:26 +0200 -Subject: [PATCH] Replace usage of mock with unittest.mock - -Since Python 3, the mock dependency is no more required as -it is already part of the unittest module. ---- - requirements-dev.txt | 1 - - setup.py | 1 - - tests/test_auth.py | 2 +- - tests/test_auth_plugins.py | 2 +- - tests/test_downloads.py | 2 +- - tests/test_errors.py | 2 +- - tests/test_exit_status.py | 2 +- - tests/test_output.py | 2 +- - tests/test_sessions.py | 2 +- - 9 files changed, 7 insertions(+), 9 deletions(-) - -diff --git a/requirements-dev.txt b/requirements-dev.txt -index 8e755e73c..cf5f228a3 100644 ---- a/requirements-dev.txt -+++ b/requirements-dev.txt -@@ -1,4 +1,3 @@ --mock - pytest - pytest-cov - pytest-httpbin>=0.0.6 -diff --git a/setup.py b/setup.py -index 1777858da..e3ee9e775 100644 ---- a/setup.py -+++ b/setup.py -@@ -34,7 +34,6 @@ def run_tests(self): - tests_require = [ - 'pytest-httpbin', - 'pytest', -- 'mock', - ] - - -diff --git a/tests/test_auth.py b/tests/test_auth.py -index e187bcead..ad63696dc 100644 ---- a/tests/test_auth.py -+++ b/tests/test_auth.py -@@ -1,5 +1,5 @@ - """HTTP authentication-related tests.""" --import mock -+from unittest import mock - import pytest - - from httpie.plugins.builtin import HTTPBasicAuth -diff --git a/tests/test_auth_plugins.py b/tests/test_auth_plugins.py -index b21d813ed..cf4919737 100644 ---- a/tests/test_auth_plugins.py -+++ b/tests/test_auth_plugins.py -@@ -1,4 +1,4 @@ --from mock import mock -+from unittest import mock - - from httpie.cli.constants import SEPARATOR_CREDENTIALS - from httpie.plugins import AuthPlugin -diff --git a/tests/test_downloads.py b/tests/test_downloads.py -index 969021d9d..4b1d88053 100644 ---- a/tests/test_downloads.py -+++ b/tests/test_downloads.py -@@ -1,10 +1,10 @@ - import os - import tempfile - import time -+from unittest import mock - from urllib.request import urlopen - - import pytest --import mock - from requests.structures import CaseInsensitiveDict - - from httpie.downloads import ( -diff --git a/tests/test_errors.py b/tests/test_errors.py -index ec6ca5a4e..342506092 100644 ---- a/tests/test_errors.py -+++ b/tests/test_errors.py -@@ -1,4 +1,4 @@ --import mock -+from unittest import mock - from pytest import raises - from requests import Request - from requests.exceptions import ConnectionError -diff --git a/tests/test_exit_status.py b/tests/test_exit_status.py -index abc935187..57e146338 100644 ---- a/tests/test_exit_status.py -+++ b/tests/test_exit_status.py -@@ -1,4 +1,4 @@ --import mock -+from unittest import mock - - from httpie.status import ExitStatus - from utils import MockEnvironment, http, HTTP_OK -diff --git a/tests/test_output.py b/tests/test_output.py -index d5b15e469..ef340c2a2 100644 ---- a/tests/test_output.py -+++ b/tests/test_output.py -@@ -1,7 +1,7 @@ - import argparse - from pathlib import Path -+from unittest import mock - --import mock - import json - import os - import tempfile -diff --git a/tests/test_sessions.py b/tests/test_sessions.py -index f52c477c2..829a9818b 100644 ---- a/tests/test_sessions.py -+++ b/tests/test_sessions.py -@@ -3,7 +3,7 @@ - import os - import shutil - from datetime import datetime --from mock import mock -+from unittest import mock - from tempfile import gettempdir - - import pytest diff --git a/1071.patch b/1071.patch deleted file mode 100644 index 9ee5cf8..0000000 --- a/1071.patch +++ /dev/null @@ -1,28 +0,0 @@ -From c7c8c3d06f43ed508ae19e2820c3f3ffd4e0b387 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Thu, 27 May 2021 16:55:57 +0200 -Subject: [PATCH] pytest: Add hidden files to norecursedirs - -The default value already contains this, -but when setting a custom one, it was overridden. - -In Fedora, we build the package in `.pyproject-builddir` and not ignoring it confuses pytest: - - _pytest.pathlib.ImportPathMismatchError: ('httpie.__main__', '/builddir/build/BUILD/httpie-2.4.0/.pyproject-builddir/pip-req-build-aedma65c/build/lib/httpie/__main__.py', PosixPath('/builddir/build/BUILD/httpie-2.4.0/.pyproject-builddir/pip-req-build-aedma65c/httpie/__main__.py')) ---- - setup.cfg | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/setup.cfg b/setup.cfg -index eda7a527..5640d04f 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -7,7 +7,7 @@ - - [tool:pytest] - # --norecursedirs = tests/fixtures -+norecursedirs = tests/fixtures .* - addopts = --tb=native --doctest-modules - - diff --git a/1072.patch b/1072.patch deleted file mode 100644 index b27150c..0000000 --- a/1072.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 218062ce064f51ec5aa52ce7b178bc9b3446ae98 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Thu, 27 May 2021 17:26:01 +0200 -Subject: [PATCH] Skip http://pie.dev tests when offline - ---- - tests/conftest.py | 19 +++++++++++++++++++ - tests/test_tokens.py | 6 +++--- - tests/test_uploads.py | 26 +++++++++++++------------- - tests/utils/__init__.py | 6 ------ - 4 files changed, 35 insertions(+), 22 deletions(-) - -diff --git a/tests/conftest.py b/tests/conftest.py -index ea08746..f489328 100644 ---- a/tests/conftest.py -+++ b/tests/conftest.py -@@ -1,3 +1,4 @@ -+import socket - import pytest - from pytest_httpbin import certs - -@@ -22,3 +23,22 @@ def httpbin_secure_untrusted(monkeypatch, httpbin_secure): - """ - monkeypatch.delenv('REQUESTS_CA_BUNDLE') - return httpbin_secure -+ -+ -+# pytest-httpbin currently does not support chunked requests: -+# -+# -+@pytest.fixture(scope='session') -+def _httpbin_with_chunked_support_available(): -+ try: -+ socket.gethostbyname('pie.dev') -+ return True -+ except OSError: -+ return False -+ -+ -+@pytest.fixture(scope='function') -+def httpbin_with_chunked_support(_httpbin_with_chunked_support_available): -+ if _httpbin_with_chunked_support_available: -+ return 'http://pie.dev' -+ pytest.skip('pie.dev not resolvable') -diff --git a/tests/test_tokens.py b/tests/test_tokens.py -index 65e7248..874653a 100644 ---- a/tests/test_tokens.py -+++ b/tests/test_tokens.py -@@ -10,7 +10,7 @@ TODO: cover more scenarios - - """ - from tests.utils.matching import assert_output_matches, Expect --from utils import http, HTTP_OK, MockEnvironment, HTTPBIN_WITH_CHUNKED_SUPPORT -+from utils import http, HTTP_OK, MockEnvironment - - - RAW_REQUEST = [ -@@ -129,8 +129,8 @@ def test_redirected_headers_multipart_no_separator(): - assert_output_matches(r, RAW_REQUEST) - - --def test_verbose_chunked(): -- r = http('--verbose', '--chunked', HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', 'hello=world') -+def test_verbose_chunked(httpbin_with_chunked_support): -+ r = http('--verbose', '--chunked', httpbin_with_chunked_support + '/post', 'hello=world') - assert HTTP_OK in r - assert 'Transfer-Encoding: chunked' in r - assert_output_matches(r, TERMINAL_EXCHANGE) -diff --git a/tests/test_uploads.py b/tests/test_uploads.py -index 05fb200..24a8459 100644 ---- a/tests/test_uploads.py -+++ b/tests/test_uploads.py -@@ -6,17 +6,17 @@ from httpie.cli.exceptions import ParseError - from httpie.client import FORM_CONTENT_TYPE - from httpie.status import ExitStatus - from utils import ( -- HTTPBIN_WITH_CHUNKED_SUPPORT, MockEnvironment, StdinBytesIO, http, -+ MockEnvironment, StdinBytesIO, http, - HTTP_OK, - ) - from fixtures import FILE_PATH_ARG, FILE_PATH, FILE_CONTENT - - --def test_chunked_json(): -+def test_chunked_json(httpbin_with_chunked_support): - r = http( - '--verbose', - '--chunked', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - 'hello=world', - ) - assert HTTP_OK in r -@@ -24,12 +24,12 @@ def test_chunked_json(): - assert r.count('hello') == 3 - - --def test_chunked_form(): -+def test_chunked_form(httpbin_with_chunked_support): - r = http( - '--verbose', - '--chunked', - '--form', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - 'hello=world', - ) - assert HTTP_OK in r -@@ -37,11 +37,11 @@ def test_chunked_form(): - assert r.count('hello') == 2 - - --def test_chunked_stdin(): -+def test_chunked_stdin(httpbin_with_chunked_support): - r = http( - '--verbose', - '--chunked', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - env=MockEnvironment( - stdin=StdinBytesIO(FILE_PATH.read_bytes()), - stdin_isatty=False, -@@ -52,12 +52,12 @@ def test_chunked_stdin(): - assert r.count(FILE_CONTENT) == 2 - - --def test_chunked_stdin_multiple_chunks(): -+def test_chunked_stdin_multiple_chunks(httpbin_with_chunked_support): - stdin_bytes = FILE_PATH.read_bytes() + b'\n' + FILE_PATH.read_bytes() - r = http( - '--verbose', - '--chunked', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - env=MockEnvironment( - stdin=StdinBytesIO(stdin_bytes), - stdin_isatty=False, -@@ -182,12 +182,12 @@ class TestMultipartFormDataFileUpload: - assert f'multipart/magic; boundary={boundary_in_header}' in r - assert r.count(boundary_in_body) == 3 - -- def test_multipart_chunked(self, httpbin): -+ def test_multipart_chunked(self, httpbin_with_chunked_support): - r = http( - '--verbose', - '--multipart', - '--chunked', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - 'AAA=AAA', - ) - assert 'Transfer-Encoding: chunked' in r -@@ -231,10 +231,10 @@ class TestRequestBodyFromFilePath: - assert r.count(FILE_CONTENT) == 2 - assert '"Content-Type": "text/plain"' in r - -- def test_request_body_from_file_by_path_chunked(self, httpbin): -+ def test_request_body_from_file_by_path_chunked(self, httpbin_with_chunked_support): - r = http( - '--verbose', '--chunked', -- HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', -+ httpbin_with_chunked_support + '/post', - '@' + FILE_PATH_ARG, - ) - assert HTTP_OK in r -diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py -index 575f1e2..a30c3ca 100644 ---- a/tests/utils/__init__.py -+++ b/tests/utils/__init__.py -@@ -16,12 +16,6 @@ from httpie.context import Environment - from httpie.core import main - - --# pytest-httpbin currently does not support chunked requests: --# --# --HTTPBIN_WITH_CHUNKED_SUPPORT = 'http://pie.dev' -- -- - TESTS_ROOT = Path(__file__).parent.parent - CRLF = '\r\n' - COLOR = '\x1b[' diff --git a/1075.patch b/1075.patch deleted file mode 100644 index f5b87f2..0000000 --- a/1075.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 7a8d07bdc4ecdb624e6dd880b70ca8c0130bc3fe Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Thu, 27 May 2021 19:48:13 +0200 -Subject: [PATCH] Adapt doctest of tests.utils.http to work on Python 3.10 as - well - -https://docs.python.org/3.10/whatsnew/3.10.html#enum - -Python 3.10 changed the repr of enum members, and the doctest of tests.utils.http failed. -Exact reprs are unfortunately not considered stable API between Python releases: - - =================================== FAILURES =================================== - __________________________ [doctest] tests.utils.http __________________________ - 209 - 210 Example: - 211 - 212 $ http --auth=user:password GET pie.dev/basic-auth/user/password - 213 - 214 >>> httpbin = getfixture('httpbin') - 215 >>> r = http('-a', 'user:pw', httpbin.url + '/basic-auth/user/pw') - 216 >>> type(r) == StrCLIResponse - 217 True - 218 >>> r.exit_status - Expected: - - Got: - ExitStatus.SUCCESS - -A simple replacement of the expected output however breaks the doctest on Python 3.9. - -This is the best solution I could think of -that keeps the docstring readable and doctest working in Pythons both old and new. ---- - tests/utils/__init__.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py -index 2cf0ce75..6e89d274 100644 ---- a/tests/utils/__init__.py -+++ b/tests/utils/__init__.py -@@ -215,8 +215,8 @@ def http( - >>> r = http('-a', 'user:pw', httpbin.url + '/basic-auth/user/pw') - >>> type(r) == StrCLIResponse - True -- >>> r.exit_status -- -+ >>> r.exit_status is ExitStatus.SUCCESS -+ True - >>> r.stderr - '' - >>> 'HTTP/1.1 200 OK' in r diff --git a/httpie.spec b/httpie.spec index f84a206..bfa6016 100644 --- a/httpie.spec +++ b/httpie.spec @@ -1,45 +1,19 @@ Name: httpie -Version: 2.4.0 -Release: 4%{?dist} +Version: 2.5.0 +Release: 1%{?dist} Summary: A Curl-like tool for humans License: BSD URL: https://httpie.org/ Source0: https://github.com/httpie/httpie/archive/%{version}/%{name}-%{version}.tar.gz -# Explicitly require setuptools, httpie/plugins/manager.py imports pkg_resources -# Merged upstream -Patch1: https://github.com/httpie/httpie/pull/1049.patch - -# Replace usage of mock with unittest.mock -# Merged upstream -Patch2: https://github.com/httpie/httpie/pull/1054.patch - -# pytest: Add hidden files to norecursedirs -# Merged upstream -Patch3: https://github.com/httpie/httpie/pull/1071.patch - -# Skip http://pie.dev tests when offline -# Rebased slightly https://github.com/httpie/httpie/pull/1072 -# Merged upstream -Patch4: 1072.patch - -# Adapt doctest of tests.utils.http to work on Python 3.10 as well -# Merged upstream -Patch5: https://github.com/httpie/httpie/pull/1075.patch - BuildArch: noarch BuildRequires: python3-devel BuildRequires: pyproject-rpm-macros -BuildRequires: sed BuildRequires: help2man -# For tests, specified in setup.py tests_require -BuildRequires: python3-pytest -BuildRequires: python3-pytest-httpbin - %description HTTPie is a CLI HTTP utility built out of frustration with existing tools. The goal is to make CLI interaction with HTTP-based services as human-friendly as @@ -52,11 +26,10 @@ responses. %prep %autosetup -p1 -sed -i '/#!\/usr\/bin\/env/d' httpie/__main__.py %generate_buildrequires -%pyproject_buildrequires -r +%pyproject_buildrequires -rx test %build @@ -90,7 +63,7 @@ help2man %{buildroot}%{_bindir}/https > %{buildroot}%{_mandir}/man1/https.1 %files -f %{pyproject_files} -%doc README.rst +%doc README.md %license LICENSE %{_bindir}/http %{_bindir}/https @@ -102,6 +75,10 @@ help2man %{buildroot}%{_bindir}/https > %{buildroot}%{_mandir}/man1/https.1 %changelog +* Tue Sep 07 2021 Miro HronĨok - 2.5.0-1 +- Update to 2.5.0 +- Fixes: rhbz#2001693 + * Thu Jul 22 2021 Fedora Release Engineering - 2.4.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild diff --git a/sources b/sources index f444cff..873aceb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (httpie-2.4.0.tar.gz) = 44cc7ff4fe0f3d8c53a7dd750465f6b56c36f5bbac06d22b760579bd60949039e82313845699669a659ec91adc69dbeac22c06ddd63af64e6f2e0edecf3e732a +SHA512 (httpie-2.5.0.tar.gz) = f14aa23fea7578181b9bd6ededea04de9ddf0b2f697b23f76d2d96e2c17b95617318c711750bad6af550400dbc03732ab17fdf84e59d577f33f073e600a55330