Skip to content
Commits on Source (2)
python-pyproj (2.3.0+ds-1~exp2) UNRELEASED; urgency=medium
python-pyproj (2.3.0+ds-1~exp2) experimental; urgency=medium
* Ignore test failures on arm64.
* Add upstream patches to fix test failures.
-- Bas Couwenberg <sebastic@debian.org> Mon, 19 Aug 2019 19:56:29 +0200
-- Bas Couwenberg <sebastic@debian.org> Tue, 20 Aug 2019 05:56:37 +0200
python-pyproj (2.3.0+ds-1~exp1) experimental; urgency=medium
......
Description: reduce precision constrants on geodesic tests
Author: "Alan D. Snow" <alansnow21@gmail.com>
Origin: https://github.com/pyproj4/pyproj/commit/2fe0630d399f6647215031b2e07c03448f61947a
Bug: https://github.com/pyproj4/pyproj/pull/405
--- a/pyproj/geod.py
+++ b/pyproj/geod.py
@@ -396,8 +396,8 @@ class Geod(_Geod):
>>> lons = [-74, -102, -102, -131, -163, 163, 172, 140, 113,
... 88, 59, 25, -4, -14, -33, -46, -61]
>>> poly_area, poly_perimeter = geod.polygon_area_perimeter(lons, lats)
- >>> "{:.3f} {:.3f}".format(poly_area, poly_perimeter)
- '13376856682207.406 14710425.407'
+ >>> "{:.1f} {:.1f}".format(poly_area, poly_perimeter)
+ '13376856682207.4 14710425.4'
Parameters
--- a/test/test_geod.py
+++ b/test/test_geod.py
@@ -183,7 +183,7 @@ def test_geometry_length__linestring():
assert_almost_equal(
geod.geometry_length(LineString([Point(1, 2), Point(3, 4)])),
313588.39721259556,
- decimal=3,
+ decimal=2,
)
@@ -201,7 +201,7 @@ def test_geometry_length__linestring__ra
radians=True,
),
313588.39721259556,
- decimal=3,
+ decimal=2,
)
@@ -213,7 +213,7 @@ def test_geometry_length__linearring():
LinearRing(LineString([Point(1, 2), Point(3, 4), Point(5, 2)]))
),
1072185.2103813463,
- decimal=3,
+ decimal=2,
)
@@ -225,7 +225,7 @@ def test_geometry_length__polygon():
Polygon(LineString([Point(1, 2), Point(3, 4), Point(5, 2)]))
),
1072185.2103813463,
- decimal=3,
+ decimal=2,
)
@@ -246,7 +246,7 @@ def test_geometry_length__polygon__radia
radians=True,
),
1072185.2103813463,
- decimal=3,
+ decimal=2,
)
@@ -257,7 +257,7 @@ def test_geometry_length__multipolygon()
assert_almost_equal(
geod.geometry_length(MultiPolygon([polygon, polygon])),
2 * 1072185.2103813463,
- decimal=3,
+ decimal=2,
)
@@ -276,7 +276,7 @@ def test_geometry_length__multipolygon__
assert_almost_equal(
geod.geometry_length(MultiPolygon([polygon, polygon]), radians=True),
2 * 1072185.2103813463,
- decimal=3,
+ decimal=2,
)
@@ -287,7 +287,7 @@ def test_geometry_length__multilinestrin
assert_almost_equal(
geod.geometry_length(MultiLineString([line_string, line_string])),
1254353.5888503822,
- decimal=3,
+ decimal=2,
)
@@ -311,7 +311,7 @@ def test_geometry_area_perimeter__linest
assert_almost_equal(
geod.geometry_area_perimeter(LineString([Point(1, 2), Point(3, 4)])),
(0.0, 627176.7944251911),
- decimal=3,
+ decimal=2,
)
@@ -329,7 +329,7 @@ def test_geometry_area_perimeter__linest
radians=True,
),
(0.0, 627176.7944251911),
- decimal=3,
+ decimal=2,
)
@@ -341,7 +341,7 @@ def test_geometry_area_perimeter__linear
LinearRing(LineString([Point(1, 2), Point(3, 4), Point(5, 2)]))
),
(-49187690467.58623, 1072185.2103813463),
- decimal=3,
+ decimal=2,
)
@@ -353,7 +353,7 @@ def test_geometry_area_perimeter__polygo
Polygon(LineString([Point(1, 2), Point(3, 4), Point(5, 2)]))
),
(-49187690467.58623, 1072185.2103813463),
- decimal=3,
+ decimal=2,
)
@@ -374,7 +374,7 @@ def test_geometry_area_perimeter__polygo
radians=True,
),
(-49187690467.58623, 1072185.2103813463),
- decimal=3,
+ decimal=2,
)
@@ -389,6 +389,7 @@ def test_geometry_area_perimeter__polygo
)
),
(-944373881400.3394, 3979008.0359657984),
+ decimal=2,
)
@@ -399,7 +400,7 @@ def test_geometry_area_perimeter__multip
assert_almost_equal(
geod.geometry_area_perimeter(MultiPolygon([polygon, polygon])),
(-98375380935.17245, 2144370.4207626926),
- decimal=3,
+ decimal=2,
)
@@ -418,7 +419,7 @@ def test_geometry_area_perimeter__multip
assert_almost_equal(
geod.geometry_area_perimeter(MultiPolygon([polygon, polygon]), radians=True),
(-98375380935.17245, 2144370.4207626926),
- decimal=3,
+ decimal=2,
)
@@ -429,7 +430,7 @@ def test_geometry_area_perimeter__multil
assert_almost_equal(
geod.geometry_area_perimeter(MultiLineString([line_string, line_string])),
(-98375380935.17245, 2144370.4207626926),
- decimal=3,
+ decimal=2,
)
Description: use mock for changing os.environ and sys.prefix in data directory tests
Author: "Alan D. Snow" <alansnow21@gmail.com>
Origin: https://github.com/pyproj4/pyproj/commit/288c149f5306e8b62ee2652bfe0ac5efe555f681
Bug: https://github.com/pyproj4/pyproj/pull/404
--- a/test/test_datadir.py
+++ b/test/test_datadir.py
@@ -27,16 +27,9 @@ def proj_env():
"""
Ensure environment variable the same at the end of the test.
"""
- proj_lib = os.environ.get("PROJ_LIB")
try:
yield
finally:
- if proj_lib is not None:
- # add it back if it used to be there
- os.environ["PROJ_LIB"] = proj_lib
- else:
- # remove it if it wasn't there previously
- os.environ.pop("PROJ_LIB", None)
# make sure the data dir is cleared
set_data_dir(None)
@@ -53,72 +46,101 @@ def temporary_directory():
shutil.rmtree(temp_dir)
-@unittest.skipIf(os.name == "nt", reason="Cannot modify Windows environment variables.")
+_INVALID_PATH = "/invalid/path/to/nowhere"
+
+
+def setup_os_mock(os_mock, abspath_return=_INVALID_PATH, proj_dir=None):
+ os_mock.path.abspath.return_value = abspath_return
+ os_mock.path.join = os.path.join
+ os_mock.path.dirname = os.path.dirname
+ os_mock.path.exists = os.path.exists
+ os_mock.pathsep = os.pathsep
+ if proj_dir is None:
+ os_mock.environ = {}
+ else:
+ os_mock.environ = {"PROJ_LIB": proj_dir}
+
+
def test_get_data_dir__missing():
with proj_env(), pytest.raises(DataDirError), patch(
- "pyproj.datadir.os.path.abspath", return_value="INVALID"
- ), patch("pyproj.datadir.find_executable", return_value=None):
+ "pyproj.datadir.find_executable", return_value=None
+ ), patch("pyproj.datadir.os") as os_mock, patch("pyproj.datadir.sys") as sys_mock:
+ sys_mock.prefix = _INVALID_PATH
+ setup_os_mock(os_mock)
unset_data_dir()
- os.environ.pop("PROJ_LIB", None)
assert get_data_dir() is None
def test_get_data_dir__from_user():
- with proj_env(), temporary_directory() as tmpdir, temporary_directory() as tmpdir_env: # noqa: E501
+ with proj_env(), temporary_directory() as tmpdir, patch(
+ "pyproj.datadir.os"
+ ) as os_mock, patch(
+ "pyproj.datadir.sys"
+ ) as sys_mock, temporary_directory() as tmpdir_env: # noqa: E501
+ setup_os_mock(
+ os_mock,
+ abspath_return=os.path.join(tmpdir, "randomfilename.py"),
+ proj_dir=tmpdir_env,
+ )
+ sys_mock.prefix = tmpdir_env
create_projdb(tmpdir)
- os.environ["PROJ_LIB"] = tmpdir_env
create_projdb(tmpdir_env)
set_data_dir(tmpdir)
internal_proj_dir = os.path.join(tmpdir, "proj_dir", "share", "proj")
os.makedirs(internal_proj_dir)
create_projdb(internal_proj_dir)
- with patch("pyproj.datadir.os.path.abspath") as abspath_mock:
- abspath_mock.return_value = os.path.join(tmpdir, "randomfilename.py")
- assert get_data_dir() == tmpdir
+ assert get_data_dir() == tmpdir
def test_get_data_dir__internal():
- with proj_env(), temporary_directory() as tmpdir:
+ with proj_env(), temporary_directory() as tmpdir, patch(
+ "pyproj.datadir.os"
+ ) as os_mock, temporary_directory() as tmpdir_fake, patch(
+ "pyproj.datadir.sys"
+ ) as sys_mock:
+ setup_os_mock(
+ os_mock,
+ abspath_return=os.path.join(tmpdir, "randomfilename.py"),
+ proj_dir=tmpdir_fake,
+ )
+ sys_mock.prefix = tmpdir_fake
unset_data_dir()
- os.environ["PROJ_LIB"] = tmpdir
create_projdb(tmpdir)
+ create_projdb(tmpdir_fake)
internal_proj_dir = os.path.join(tmpdir, "proj_dir", "share", "proj")
os.makedirs(internal_proj_dir)
create_projdb(internal_proj_dir)
- with patch("pyproj.datadir.os.path.abspath") as abspath_mock:
- abspath_mock.return_value = os.path.join(tmpdir, "randomfilename.py")
- assert get_data_dir() == internal_proj_dir
+ assert get_data_dir() == internal_proj_dir
-@unittest.skipIf(os.name == "nt", reason="Cannot modify Windows environment variables.")
def test_get_data_dir__from_env_var():
with proj_env(), temporary_directory() as tmpdir, patch(
- "pyproj.datadir.os.path.abspath", return_value="INVALID"
- ):
+ "pyproj.datadir.os"
+ ) as os_mock, patch("pyproj.datadir.sys") as sys_mock:
+ setup_os_mock(os_mock, proj_dir=tmpdir)
+ sys_mock.prefix = _INVALID_PATH
unset_data_dir()
- os.environ["PROJ_LIB"] = tmpdir
create_projdb(tmpdir)
assert get_data_dir() == tmpdir
-@unittest.skipIf(os.name == "nt", reason="Cannot modify Windows environment variables.")
def test_get_data_dir__from_env_var__multiple():
with proj_env(), temporary_directory() as tmpdir, patch(
- "pyproj.datadir.os.path.abspath", return_value="INVALID"
- ):
+ "pyproj.datadir.os"
+ ) as os_mock, patch("pyproj.datadir.sys") as sys_mock:
+ setup_os_mock(os_mock, proj_dir=os.pathsep.join([tmpdir, tmpdir, tmpdir]))
+ sys_mock.prefix = _INVALID_PATH
unset_data_dir()
- os.environ["PROJ_LIB"] = os.pathsep.join([tmpdir, tmpdir, tmpdir])
create_projdb(tmpdir)
assert get_data_dir() == os.pathsep.join([tmpdir, tmpdir, tmpdir])
-@unittest.skipIf(os.name == "nt", reason="Cannot modify Windows environment variables.")
def test_get_data_dir__from_prefix():
with proj_env(), temporary_directory() as tmpdir, patch(
- "pyproj.datadir.os.path.abspath", return_value="INVALID"
- ), patch("pyproj.datadir.sys") as sys_mock:
+ "pyproj.datadir.os"
+ ) as os_mock, patch("pyproj.datadir.sys") as sys_mock:
+ setup_os_mock(os_mock)
unset_data_dir()
- os.environ.pop("PROJ_LIB", None)
sys_mock.prefix = tmpdir
proj_dir = os.path.join(tmpdir, "share", "proj")
os.makedirs(proj_dir)
@@ -126,13 +148,15 @@ def test_get_data_dir__from_prefix():
assert get_data_dir() == proj_dir
-@unittest.skipIf(os.name == "nt", reason="Cannot modify Windows environment variables.")
def test_get_data_dir__from_path():
with proj_env(), temporary_directory() as tmpdir, patch(
- "pyproj.datadir.os.path.abspath", return_value="INVALID"
- ), patch("pyproj.datadir.find_executable") as find_exe:
+ "pyproj.datadir.os"
+ ) as os_mock, patch("pyproj.datadir.sys") as sys_mock, patch(
+ "pyproj.datadir.find_executable"
+ ) as find_exe:
+ setup_os_mock(os_mock)
+ sys_mock.prefix = _INVALID_PATH
unset_data_dir()
- os.environ.pop("PROJ_LIB", None)
find_exe.return_value = os.path.join(tmpdir, "bin", "proj")
proj_dir = os.path.join(tmpdir, "share", "proj")
os.makedirs(proj_dir)
@@ -141,18 +165,18 @@ def test_get_data_dir__from_path():
def test_append_data_dir__internal():
- with proj_env(), temporary_directory() as tmpdir:
+ with proj_env(), temporary_directory() as tmpdir, patch(
+ "pyproj.datadir.os"
+ ) as os_mock:
+ setup_os_mock(os_mock, os.path.join(tmpdir, "randomfilename.py"))
unset_data_dir()
- os.environ["PROJ_LIB"] = tmpdir
create_projdb(tmpdir)
internal_proj_dir = os.path.join(tmpdir, "proj_dir", "share", "proj")
os.makedirs(internal_proj_dir)
create_projdb(internal_proj_dir)
extra_datadir = str(os.path.join(tmpdir, "extra_datumgrids"))
- with patch("pyproj.datadir.os.path.abspath") as abspath_mock:
- abspath_mock.return_value = os.path.join(tmpdir, "randomfilename.py")
- append_data_dir(extra_datadir)
- assert get_data_dir() == os.pathsep.join([internal_proj_dir, extra_datadir])
+ append_data_dir(extra_datadir)
+ assert get_data_dir() == os.pathsep.join([internal_proj_dir, extra_datadir])
def test_creating_multiple_crs_without_file_limit():
0001-use-mock-for-changing-os.environ-and-sys.prefix-in-d.patch
0001-reduce-precision-constrants-on-geodesic-tests-405.patch
......@@ -9,7 +9,7 @@ export DEB_BUILD_MAINT_OPTIONS=hardening=+all
export PYBUILD_NAME=pyproj
export PYBUILD_TEST_PYTEST=1
export PYBUILD_TEST_ARGS=-v --ignore=test/test_datadir.py
export PYBUILD_TEST_ARGS=-v
# Path to system installed PROJ data.
export PROJ_DIR=/usr
......@@ -25,7 +25,7 @@ include /usr/share/dpkg/architecture.mk
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
ifneq (,$(filter $(DEB_BUILD_ARCH),arm64 armhf i386 hppa hurd-i386 kfreebsd-i386 powerpc))
ifneq (,$(filter $(DEB_BUILD_ARCH),i386 hppa hurd-i386 kfreebsd-i386 powerpc))
dh_auto_test || echo "Ignoring test failures"
else
dh_auto_test
......