Backport: Update tests to be endian safe, fix FTBFS on s390x
Also, use %autopatch to apply the patches.
This commit is contained in:
parent
159feb818e
commit
21fe0a233c
75
b30dd1e04e.patch
Normal file
75
b30dd1e04e.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From b30dd1e04e1f37901733f1be0a5a1e02c466ad0c Mon Sep 17 00:00:00 2001
|
||||||
|
From: gutsytechster <prashantsharma161198@gmail.com>
|
||||||
|
Date: Wed, 15 Apr 2020 19:54:48 +0530
|
||||||
|
Subject: [PATCH] fix(tests/unit): Update tests to be endian safe
|
||||||
|
|
||||||
|
This updates `test_path_to_display` and `test_str_to_display__encoding`
|
||||||
|
to use the endian safe expected result instead of the hardcoded one.
|
||||||
|
|
||||||
|
This fixes https://github.com/pypa/pip/issues/7921
|
||||||
|
---
|
||||||
|
tests/unit/test_compat.py | 8 +++++++-
|
||||||
|
tests/unit/test_utils.py | 16 +++++++++++++---
|
||||||
|
2 files changed, 20 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/unit/test_compat.py b/tests/unit/test_compat.py
|
||||||
|
index 1f31bc5ce8..b13087a1dd 100644
|
||||||
|
--- a/tests/unit/test_compat.py
|
||||||
|
+++ b/tests/unit/test_compat.py
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
import locale
|
||||||
|
import os
|
||||||
|
+import sys
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@@ -91,8 +92,13 @@ def test_str_to_display__decode_error(monkeypatch, caplog):
|
||||||
|
# Encode with an incompatible encoding.
|
||||||
|
data = u'ab'.encode('utf-16')
|
||||||
|
actual = str_to_display(data)
|
||||||
|
+ # Keep the expected value endian safe
|
||||||
|
+ if sys.byteorder == "little":
|
||||||
|
+ expected = "\\xff\\xfea\x00b\x00"
|
||||||
|
+ elif sys.byteorder == "big":
|
||||||
|
+ expected = "\\xfe\\xff\x00a\x00b"
|
||||||
|
|
||||||
|
- assert actual == u'\\xff\\xfea\x00b\x00', (
|
||||||
|
+ assert actual == expected, (
|
||||||
|
# Show the encoding for easier troubleshooting.
|
||||||
|
'encoding: {!r}'.format(locale.getpreferredencoding())
|
||||||
|
)
|
||||||
|
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
|
||||||
|
index 7d74a66498..ebabd29e26 100644
|
||||||
|
--- a/tests/unit/test_utils.py
|
||||||
|
+++ b/tests/unit/test_utils.py
|
||||||
|
@@ -375,6 +375,18 @@ def test_rmtree_retries_for_3sec(tmpdir, monkeypatch):
|
||||||
|
rmtree('foo')
|
||||||
|
|
||||||
|
|
||||||
|
+if sys.byteorder == "little":
|
||||||
|
+ expected_byte_string = (
|
||||||
|
+ u"b'\\xff\\xfe/\\x00p\\x00a\\x00t\\x00h\\x00/"
|
||||||
|
+ "\\x00d\\x00\\xe9\\x00f\\x00'"
|
||||||
|
+ )
|
||||||
|
+elif sys.byteorder == "big":
|
||||||
|
+ expected_byte_string = (
|
||||||
|
+ u"b'\\xfe\\xff\\x00/\\x00p\\x00a\\x00t\\x00h\\"
|
||||||
|
+ "x00/\\x00d\\x00\\xe9\\x00f'"
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
+
|
||||||
|
@pytest.mark.parametrize('path, fs_encoding, expected', [
|
||||||
|
(None, None, None),
|
||||||
|
# Test passing a text (unicode) string.
|
||||||
|
@@ -383,9 +395,7 @@ def test_rmtree_retries_for_3sec(tmpdir, monkeypatch):
|
||||||
|
(u'/path/déf'.encode('utf-8'), 'utf-8', u'/path/déf'),
|
||||||
|
# Test a bytes object with a character that can't be decoded.
|
||||||
|
(u'/path/déf'.encode('utf-8'), 'ascii', u"b'/path/d\\xc3\\xa9f'"),
|
||||||
|
- (u'/path/déf'.encode('utf-16'), 'utf-8',
|
||||||
|
- u"b'\\xff\\xfe/\\x00p\\x00a\\x00t\\x00h\\x00/"
|
||||||
|
- "\\x00d\\x00\\xe9\\x00f\\x00'"),
|
||||||
|
+ (u'/path/déf'.encode('utf-16'), 'utf-8', expected_byte_string),
|
||||||
|
])
|
||||||
|
def test_path_to_display(monkeypatch, path, fs_encoding, expected):
|
||||||
|
monkeypatch.setattr(sys, 'getfilesystemencoding', lambda: fs_encoding)
|
@ -90,6 +90,12 @@ Patch4: dummy-certifi.patch
|
|||||||
# this warning is juts moot. Also, the warning breaks CPython test suite.
|
# this warning is juts moot. Also, the warning breaks CPython test suite.
|
||||||
Patch5: nowarn-pip._internal.main.patch
|
Patch5: nowarn-pip._internal.main.patch
|
||||||
|
|
||||||
|
# Backport: Update tests to be endian safe
|
||||||
|
# This updates `test_path_to_display` and `test_str_to_display__encoding`
|
||||||
|
# to use the endian safe expected result instead of the hardcoded one.
|
||||||
|
# This fixes https://github.com/pypa/pip/issues/7921
|
||||||
|
Patch6: https://github.com/pypa/pip/commit/b30dd1e04e.patch
|
||||||
|
|
||||||
# Downstream only patch
|
# Downstream only patch
|
||||||
# Users might have local installations of pip from using
|
# Users might have local installations of pip from using
|
||||||
# `pip install --user --upgrade pip` on older/newer versions.
|
# `pip install --user --upgrade pip` on older/newer versions.
|
||||||
@ -253,11 +259,7 @@ mv python-docs-theme-2018.2 python-docs-theme
|
|||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch1 -p1
|
%autopatch -p1
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
|
|
||||||
# this goes together with patch4
|
# this goes together with patch4
|
||||||
rm src/pip/_vendor/certifi/*.pem
|
rm src/pip/_vendor/certifi/*.pem
|
||||||
|
Loading…
Reference in New Issue
Block a user