#5 Fedora 33: Update to 2.4.0
Merged 3 years ago by mikelo2. Opened 3 years ago by churchyard.
f34  into  f33

file modified
+2
@@ -7,3 +7,5 @@ 

  /httpie-0.9.3.tar.gz

  /httpie-0.9.4.tar.gz

  /httpie-1.0.3.tar.gz

+ /httpie-2.3.0.tar.gz

+ /httpie-2.4.0.tar.gz

file added
+22
@@ -0,0 +1,22 @@ 

+ From 5f9b44711447a1ec0bc1593f67a31fe03956fd8f Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>

+ 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',

file added
+123
@@ -0,0 +1,123 @@ 

+ From d374aeb1f9a3b3a11d73d2ef1eaee1c91c2f297f Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Micka=C3=ABl=20Schoentgen?= <mschoentgen@nuxeo.com>

+ 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

file added
+28
@@ -0,0 +1,28 @@ 

+ From c7c8c3d06f43ed508ae19e2820c3f3ffd4e0b387 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>

+ 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]

+  # <https://docs.pytest.org/en/latest/customize.html>

+ -norecursedirs = tests/fixtures

+ +norecursedirs = tests/fixtures .*

+  addopts = --tb=native --doctest-modules

+  

+  

file added
+182
@@ -0,0 +1,182 @@ 

+ From 218062ce064f51ec5aa52ce7b178bc9b3446ae98 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>

+ 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:

+ +# <https://github.com/kevin1024/pytest-httpbin/issues/33>

+ +# <https://github.com/kevin1024/pytest-httpbin/issues/28>

+ +@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:

+ -# <https://github.com/kevin1024/pytest-httpbin/issues/33>

+ -# <https://github.com/kevin1024/pytest-httpbin/issues/28>

+ -HTTPBIN_WITH_CHUNKED_SUPPORT = 'http://pie.dev'

+ -

+ -

+  TESTS_ROOT = Path(__file__).parent.parent

+  CRLF = '\r\n'

+  COLOR = '\x1b['

file modified
+82 -67
@@ -1,42 +1,39 @@ 

- %if 0%{?fedora}

- %global with_python3 1

- %endif

- 

  Name:           httpie

- Version:        1.0.3

- Release:        4%{?dist}

+ Version:        2.4.0

+ Release:        2%{?dist}

  Summary:        A Curl-like tool for humans

  

  License:        BSD

  URL:            https://httpie.org/

- Source0:        https://pypi.python.org/packages/source/h/httpie/httpie-%{version}.tar.gz

- BuildArch:      noarch

+ 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

  

- %if 0%{?with_python3}

- BuildRequires:  python3-devel

+ # Replace usage of mock with unittest.mock

+ # Merged upstream

+ Patch2:         https://github.com/httpie/httpie/pull/1054.patch

  

- # Needed so we can build the manpage with help2man without fataling.

- BuildRequires:  python3-pygments

- BuildRequires:  python3-requests

- Requires:       python3-pygments

- Requires:       python3-requests

+ # pytest: Add hidden files to norecursedirs

+ # Merged upstream

+ Patch3:         https://github.com/httpie/httpie/pull/1071.patch

  

- %else

+ # Skip http://pie.dev tests when offline

+ # Rebased slightly https://github.com/httpie/httpie/pull/1072

+ Patch4:         1072.patch

  

- BuildRequires:  python2-devel

+ BuildArch:      noarch

  

- # Needed so we can build the manpage with help2man without fataling.

- BuildRequires:  python-pygments

- BuildRequires:  python-requests

- Requires:       python-pygments

- Requires:       python-requests

- %endif

+ BuildRequires:  python3-devel

+ BuildRequires:  pyproject-rpm-macros

  

+ BuildRequires:  sed

  BuildRequires:  help2man

  

- Obsoletes:      python2-httpie <= 0.9.4-3

- Obsoletes:      python3-httpie <= 0.9.4-3

+ # 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
@@ -47,66 +44,84 @@ 

  HTTP requests using a simple and natural syntax and displaying colorized

  responses.

  

+ 

  %prep

- %setup -q

- sed -i '/#!\/usr\/bin\/env/d' %{name}/__main__.py

+ %autosetup -p1

+ sed -i '/#!\/usr\/bin\/env/d' httpie/__main__.py

  

- # RHEL7 ships version 1.4, which works fine here.

- sed -i 's/Pygments>=2.3.1/Pygments>=1.4/' setup.py

  

- # RHEL7 ships version 2.6.0 which works fine here.

- sed -i 's/requests>=2.21.0/requests>=2.6.0/' setup.py

+ %generate_buildrequires

+ %pyproject_buildrequires -r

  

- %if 0%{?with_python3}

- rm -rf %{py3dir}

- cp -a . %{py3dir}

- %endif

  

  %build

- %if 0%{?with_python3}

- pushd %{py3dir}

- %{__python3} setup.py build

- popd

- %else

- %{__python2} setup.py build

- %endif

+ %pyproject_wheel

+ 

  

  %install

- %if 0%{?with_python3}

- pushd %{py3dir}

- %{__python3} setup.py install --skip-build --root %{buildroot}

- popd

- %else

- %{__python2} setup.py install --root %{buildroot}

- %endif

- 

- %if 0%{?with_python3}

- export PYTHONPATH=%{buildroot}%{python3_sitelib}

- %else

- export PYTHONPATH=%{buildroot}%{python2_sitelib}

- %endif

+ %pyproject_install

+ %pyproject_save_files httpie

+ 

+ # Bash completion

+ mkdir -p %{buildroot}%{_datadir}/bash-completion/completions

+ cp -a extras/httpie-completion.bash %{buildroot}%{_datadir}/bash-completion/completions/http

+ ln -s ./http %{buildroot}%{_datadir}/bash-completion/completions/https

+ 

+ # Fish completion

+ mkdir -p %{buildroot}%{_datadir}/fish/vendor_completions.d/

+ cp -a extras/httpie-completion.fish %{buildroot}%{_datadir}/fish/vendor_completions.d/http.fish

+ ln -s ./http.fish %{buildroot}%{_datadir}/fish/vendor_completions.d/https.fish

+ 

  

  # Generate man pages for everything

- mkdir -p %{buildroot}/%{_mandir}/man1

- help2man --no-discard-stderr %{buildroot}/%{_bindir}/http > %{buildroot}/%{_mandir}/man1/http.1

+ export PYTHONPATH=%{buildroot}%{python3_sitelib}

+ mkdir -p %{buildroot}%{_mandir}/man1

+ help2man %{buildroot}%{_bindir}/http > %{buildroot}%{_mandir}/man1/http.1

+ help2man %{buildroot}%{_bindir}/https > %{buildroot}%{_mandir}/man1/https.1

+ 

+ 

+ %check

+ %pytest -v

  

  

- %files

+ %files -f %{pyproject_files}

  %doc README.rst

  %license LICENSE

- %{_mandir}/man1/http.1*

  %{_bindir}/http

- 

- %if 0%{?with_python3}

- %{python3_sitelib}/%{name}/

- %{python3_sitelib}/%{name}-%{version}*

- %else

- %{python2_sitelib}/%{name}/

- %{python2_sitelib}/%{name}-%{version}*

- %endif

+ %{_bindir}/https

+ %{_mandir}/man1/http.1*

+ %{_mandir}/man1/https.1*

+ # we co-own the entire directory structures for bash/fish completion to avoid a dependency

+ %{_datadir}/bash-completion/

+ %{_datadir}/fish/

  

  

  %changelog

+ * Thu May 27 2021 Miro Hrončok <mhroncok@redhat.com> - 2.4.0-2

+ - Add Bash and Fish completion

+ - Fixes rhbz#1834441

+ - Run tests on build time

+ 

+ * Wed Mar 24 2021 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2.4.0-1

+ - Update to 2.4.0

+ - Use pypi_source macro

+ 

+ * Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.0-3

+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

+ 

+ * Thu Jan 21 2021 Nils Philippsen <nils@tiptoe.de> - 2.3.0-2

+ - use macros for Python dependencies

+ - add missing Python dependencies needed for running help2man

+ - remove manual Python dependencies

+ - discard stderr when running help2man

+ 

+ * Thu Dec 24 2020 Nils Philippsen <nils@tiptoe.de> - 2.3.0-1

+ - version 2.3.0

+ - Python 2 is no more

+ - use %%autosetup and Python build macros

+ - remove EL7-isms

+ - explicitly require sed for building

+ 

  * Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-4

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

  

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (httpie-1.0.3.tar.gz) = b51779e0ec8f24108ee3f4bf690dc9dfddafff42509d1aa3d13ac12d65a93e02aad9644dc10134ebdbebf949b250cb288650a4dad3d382143e9ad3b9b0ac8c16

+ SHA512 (httpie-2.4.0.tar.gz) = 44cc7ff4fe0f3d8c53a7dd750465f6b56c36f5bbac06d22b760579bd60949039e82313845699669a659ec91adc69dbeac22c06ddd63af64e6f2e0edecf3e732a

The version change seems large, but the release is pretty backwards compatible, the most incompatible stuff is dropped Python 2 support, which we don't use anyway.

Pull-Request has been merged by mikelo2

3 years ago