aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-01-08 22:32:54 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-01-08 22:32:54 +0100
commit9263e1d36eec53ee3c4e4d04da93a032c0596eec (patch)
tree12afe91a09b60a9ae2a1b2fbff8fa81b24ceee41 /test
parentda93fe3bea35ae8d2383e6006b7775bb96af6885 (diff)
downloadPROJ-9263e1d36eec53ee3c4e4d04da93a032c0596eec.tar.gz
PROJ-9263e1d36eec53ee3c4e4d04da93a032c0596eec.zip
Add capability to read resource files from the user writable directory
Diffstat (limited to 'test')
-rw-r--r--test/cli/Makefile.am12
-rw-r--r--test/gie/Makefile.am20
-rw-r--r--test/gigs/Makefile.am34
-rw-r--r--test/unit/CMakeLists.txt18
-rw-r--r--test/unit/Makefile.am10
-rw-r--r--test/unit/gie_self_tests.cpp4
-rw-r--r--test/unit/proj_context_test.cpp62
7 files changed, 99 insertions, 61 deletions
diff --git a/test/cli/Makefile.am b/test/cli/Makefile.am
index 758352c6..253b85d8 100644
--- a/test/cli/Makefile.am
+++ b/test/cli/Makefile.am
@@ -27,7 +27,7 @@ EXTRA_DIST = pj_out27.dist pj_out83.dist td_out.dist \
CMakeLists.txt
testprojinfo-check:
- PROJ_LIB=$(PROJ_LIB) $(TESTPROJINFO) $(PROJINFOEXE)
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTPROJINFO) $(PROJINFOEXE)
test27-check:
$(TEST27) $(PROJEXE)
@@ -36,24 +36,24 @@ test83-check:
$(TEST83) $(PROJEXE)
testvarious-check:
- PROJ_LIB=$(PROJ_LIB) $(TESTVARIOUS) $(CS2CSEXE)
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTVARIOUS) $(CS2CSEXE)
testdatumfile-check:
@if [ -f $(PROJ_LIB)/conus -a -f $(PROJ_LIB)/ntv1_can.dat -a -f $(PROJ_LIB)/MD -a -f $(PROJ_LIB)/ntf_r93.gsb -a -f $(PROJ_LIB)/egm96_15.gtx ]; then \
- PROJ_LIB=$(PROJ_LIB) $(TESTDATUMFILE) $(CS2CSEXE) ; \
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTDATUMFILE) $(CS2CSEXE) ; \
fi
testign-check:
@if [ -f $(PROJ_LIB)/ntf_r93.gsb ] ; then \
- PROJ_LIB=$(PROJ_LIB) $(TESTIGN) $(CS2CSEXE) ; \
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTIGN) $(CS2CSEXE) ; \
fi
testntv2-check:
@if [ -f $(PROJ_LIB)/ntv2_0.gsb -a -f $(PROJ_LIB)/conus -a -f $(PROJ_LIB)/ntv1_can.dat ] ; then \
- PROJ_LIB=$(PROJ_LIB) $(TESTNTV2) $(CS2CSEXE) ; \
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTNTV2) $(CS2CSEXE) ; \
fi
testcct-check:
- PROJ_LIB=$(PROJ_LIB) $(TESTCCT) $(CCTEXE)
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(TESTCCT) $(CCTEXE)
check-local: testprojinfo-check test27-check test83-check testvarious-check testdatumfile-check testign-check testntv2-check testcct-check
diff --git a/test/gie/Makefile.am b/test/gie/Makefile.am
index ff333a14..1539cb2e 100644
--- a/test/gie/Makefile.am
+++ b/test/gie/Makefile.am
@@ -15,33 +15,33 @@ EXTRA_DIST = 4D-API_cs2cs-style.gie \
PROJ_LIB ?= ../../data
4D-API-cs2cs-style: 4D-API_cs2cs-style.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
GDA: GDA.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
axisswap: axisswap.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
builtins: builtins.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
deformation: deformation.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
ellipsoid: ellipsoid.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
more_builtins: more_builtins.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
unitconvert: unitconvert.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
DHDN_ETRS89: DHDN_ETRS89.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
geotiff_grids: geotiff_grids.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
check-local: 4D-API-cs2cs-style GDA axisswap builtins deformation ellipsoid more_builtins unitconvert DHDN_ETRS89 geotiff_grids
diff --git a/test/gigs/Makefile.am b/test/gigs/Makefile.am
index bea3be59..56493550 100644
--- a/test/gigs/Makefile.am
+++ b/test/gigs/Makefile.am
@@ -23,54 +23,54 @@ EXTRA_DIST = \
PROJ_LIB ?= ../../data
5101.1: 5101.1-jhs.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5101.2: 5101.2-jhs.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5101.3: 5101.3-jhs.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5101.4: 5101.4-jhs-etmerc.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5102.1: 5102.1.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5103.1: 5103.1.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5103.2: 5103.2.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5103.3: 5103.3.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5105.2: 5105.2.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5106: 5106.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5107: 5107.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5109: 5109.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5111.1: 5111.1.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5112: 5112.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5113: 5113.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5201: 5201.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
5208: 5208.gie
- PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $<
check-local: 5101.1 5101.2 5101.3 5101.4 5102.1 5103.1 5103.2 5103.3 5105.2 5106 5107 5109 5111.1 5112 5113 5201 5208
diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index 35a6e4c1..e1eefcf0 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -71,7 +71,7 @@ target_link_libraries(proj_pj_transform_test
${PROJ_LIBRARIES})
add_test(NAME proj_pj_transform_test COMMAND proj_pj_transform_test)
set_property(TEST proj_pj_transform_test
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
add_executable(proj_errno_string_test
@@ -82,7 +82,7 @@ target_link_libraries(proj_errno_string_test
${PROJ_LIBRARIES})
add_test(NAME proj_errno_string_test COMMAND proj_errno_string_test)
set_property(TEST proj_errno_string_test
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
add_executable(proj_angular_io_test
main.cpp
@@ -92,7 +92,7 @@ target_link_libraries(proj_angular_io_test
${PROJ_LIBRARIES})
add_test(NAME proj_angular_io_test COMMAND proj_angular_io_test)
set_property(TEST proj_angular_io_test
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
add_executable(proj_context_test
main.cpp
@@ -102,7 +102,7 @@ target_link_libraries(proj_context_test
${PROJ_LIBRARIES})
add_test(NAME proj_context_test COMMAND proj_context_test)
set_property(TEST proj_context_test
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
if(MSVC AND BUILD_LIBPROJ_SHARED)
# ph_phi2_test not compatible of a .dll build
@@ -115,7 +115,7 @@ else()
${PROJ_LIBRARIES})
add_test(NAME pj_phi2_test COMMAND pj_phi2_test)
set_property(TEST pj_phi2_test
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
endif()
add_executable(proj_test_cpp_api
@@ -135,7 +135,7 @@ target_link_libraries(proj_test_cpp_api
${SQLITE3_LIBRARY})
add_test(NAME proj_test_cpp_api COMMAND proj_test_cpp_api)
set_property(TEST proj_test_cpp_api
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
add_executable(gie_self_tests
@@ -146,7 +146,7 @@ target_link_libraries(gie_self_tests
${PROJ_LIBRARIES})
add_test(NAME gie_self_tests COMMAND gie_self_tests)
set_property(TEST gie_self_tests
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data")
add_executable(test_network
@@ -163,8 +163,8 @@ target_link_libraries(test_network
add_test(NAME test_network COMMAND test_network)
if(MSVC)
set_property(TEST test_network
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data\\;${PROJECT_SOURCE_DIR}/data;PROJ_SOURCE_DATA=${PROJECT_SOURCE_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data\\;${PROJECT_SOURCE_DIR}/data;PROJ_SOURCE_DATA=${PROJECT_SOURCE_DIR}/data")
else()
set_property(TEST test_network
- PROPERTY ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data:${PROJECT_SOURCE_DIR}/data;PROJ_SOURCE_DATA=${PROJECT_SOURCE_DIR}/data")
+ PROPERTY ENVIRONMENT "PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES;PROJ_LIB=${PROJECT_BINARY_DIR}/data:${PROJECT_SOURCE_DIR}/data;PROJ_SOURCE_DATA=${PROJECT_SOURCE_DIR}/data")
endif()
diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am
index 422fe687..7ffb06ae 100644
--- a/test/unit/Makefile.am
+++ b/test/unit/Makefile.am
@@ -23,7 +23,7 @@ pj_transform_test_SOURCES = pj_transform_test.cpp main.cpp
pj_transform_test_LDADD = ../../src/libproj.la @GTEST_LIBS@
pj_transform_test-check: pj_transform_test
- PROJ_LIB=$(PROJ_LIB) ./pj_transform_test
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) ./pj_transform_test
pj_phi2_test_SOURCES = pj_phi2_test.cpp main.cpp
pj_phi2_test_LDADD = ../../src/libproj.la @GTEST_LIBS@
@@ -47,19 +47,19 @@ proj_context_test_SOURCES = proj_context_test.cpp main.cpp
proj_context_test_LDADD = ../../src/libproj.la @GTEST_LIBS@
proj_context_test-check: proj_context_test
- ./proj_context_test
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES ./proj_context_test
test_cpp_api_SOURCES = test_util.cpp test_common.cpp test_crs.cpp test_metadata.cpp test_io.cpp test_operation.cpp test_datum.cpp test_factory.cpp test_c_api.cpp main.cpp
test_cpp_api_LDADD = ../../src/libproj.la @GTEST_LIBS@ @SQLITE3_LIBS@
test_cpp_api-check: test_cpp_api
- PROJ_LIB=$(PROJ_LIB) ./test_cpp_api
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) ./test_cpp_api
gie_self_tests_SOURCES = gie_self_tests.cpp main.cpp
gie_self_tests_LDADD = ../../src/libproj.la @GTEST_LIBS@ @SQLITE3_LIBS@
gie_self_tests-check: gie_self_tests
- PROJ_LIB=$(PROJ_LIB) ./gie_self_tests
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) ./gie_self_tests
include_proj_h_from_c_SOURCES = include_proj_h_from_c.c
@@ -68,6 +68,6 @@ test_network_CXXFLAGS = @CURL_CFLAGS@ @CURL_ENABLED_FLAGS@
test_network_LDADD = ../../src/libproj.la @GTEST_LIBS@ @SQLITE3_LIBS@ @CURL_LIBS@
test_network-check: test_network
- PROJ_LIB=$(PROJ_LIB) PROJ_SOURCE_DATA=$(PROJ_LIB) ./test_network
+ PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES PROJ_LIB=$(PROJ_LIB) PROJ_SOURCE_DATA=$(PROJ_LIB) ./test_network
check-local: pj_transform_test-check pj_phi2_test-check proj_errno_string_test-check proj_angular_io_test-check proj_context_test-check test_cpp_api-check gie_self_tests-check test_network-check
diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp
index a738db75..a3b41fb0 100644
--- a/test/unit/gie_self_tests.cpp
+++ b/test/unit/gie_self_tests.cpp
@@ -348,7 +348,9 @@ TEST(gie, info_functions) {
/* proj_info() */
/* this one is difficult to test, since the output changes with the setup */
+ putenv(const_cast<char *>("PROJ_IGNORE_USER_WRITABLE_DIRECTORY="));
info = proj_info();
+ putenv(const_cast<char *>("PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES"));
if (info.version[0] != '\0') {
char tmpstr[64];
@@ -360,6 +362,8 @@ TEST(gie, info_functions) {
ASSERT_NE(std::string(info.searchpath), std::string());
}
+ ASSERT_TRUE(std::string(info.searchpath).find("/proj") != std::string::npos);
+
/* proj_pj_info() */
{
P = proj_create(PJ_DEFAULT_CTX,
diff --git a/test/unit/proj_context_test.cpp b/test/unit/proj_context_test.cpp
index 23c46f29..ec59590d 100644
--- a/test/unit/proj_context_test.cpp
+++ b/test/unit/proj_context_test.cpp
@@ -40,7 +40,20 @@
namespace {
-static std::string createTempDict(std::string &dirname) {
+static bool createTmpFile(const std::string &filename) {
+ FILE *f = fopen(filename.c_str(), "wt");
+ if (!f)
+ return false;
+ fprintf(
+ f,
+ "<MY_PIPELINE> +proj=pipeline +step +proj=utm +zone=31 +ellps=GRS80\n");
+ fclose(f);
+ return true;
+}
+
+// ---------------------------------------------------------------------------
+
+static std::string createTempDict(std::string &dirname, const char *filename) {
const char *temp_dir = getenv("TEMP");
if (!temp_dir) {
temp_dir = getenv("TMP");
@@ -58,16 +71,9 @@ static std::string createTempDict(std::string &dirname) {
std::string tmpFilename;
tmpFilename = temp_dir;
tmpFilename += DIR_CHAR;
- tmpFilename += "temp_proj_dic";
+ tmpFilename += filename;
- FILE *f = fopen(tmpFilename.c_str(), "wt");
- if (!f)
- return std::string();
- fprintf(
- f,
- "<MY_PIPELINE> +proj=pipeline +step +proj=utm +zone=31 +ellps=GRS80\n");
- fclose(f);
- return tmpFilename;
+ return createTmpFile(tmpFilename) ? tmpFilename : std::string();
}
// ---------------------------------------------------------------------------
@@ -85,7 +91,7 @@ static int MyUnlink(const std::string &filename) {
TEST(proj_context, proj_context_set_file_finder) {
std::string dirname;
- auto filename = createTempDict(dirname);
+ auto filename = createTempDict(dirname, "temp_proj_dic1");
if (filename.empty())
return;
@@ -111,7 +117,7 @@ TEST(proj_context, proj_context_set_file_finder) {
finderData.dirname = dirname;
proj_context_set_file_finder(ctx, finder, &finderData);
- auto P = proj_create(ctx, "+init=temp_proj_dic:MY_PIPELINE");
+ auto P = proj_create(ctx, "+init=temp_proj_dic1:MY_PIPELINE");
EXPECT_NE(P, nullptr);
proj_destroy(P);
@@ -125,7 +131,7 @@ TEST(proj_context, proj_context_set_file_finder) {
TEST(proj_context, proj_context_set_search_paths) {
std::string dirname;
- auto filename = createTempDict(dirname);
+ auto filename = createTempDict(dirname, "temp_proj_dic2");
if (filename.empty())
return;
@@ -134,7 +140,7 @@ TEST(proj_context, proj_context_set_search_paths) {
const char *path = dirname.c_str();
proj_context_set_search_paths(ctx, 1, &path);
- auto P = proj_create(ctx, "+init=temp_proj_dic:MY_PIPELINE");
+ auto P = proj_create(ctx, "+init=temp_proj_dic2:MY_PIPELINE");
EXPECT_NE(P, nullptr);
proj_destroy(P);
@@ -143,4 +149,32 @@ TEST(proj_context, proj_context_set_search_paths) {
MyUnlink(filename);
}
+// ---------------------------------------------------------------------------
+
+TEST(proj_context, read_grid_from_user_writable_directory) {
+
+ auto ctx = proj_context_create();
+ auto path = pj_context_get_user_writable_directory(ctx, true);
+ EXPECT_TRUE(!path.empty());
+ auto filename = path + DIR_CHAR + "temp_proj_dic3";
+ EXPECT_TRUE(createTmpFile(filename));
+ {
+ // Check that with PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES (set by
+ // calling script), we cannot find the file
+ auto P = proj_create(ctx, "+init=temp_proj_dic3:MY_PIPELINE");
+ EXPECT_EQ(P, nullptr);
+ proj_destroy(P);
+ }
+ {
+ // Cancel the effect of PROJ_IGNORE_USER_WRITABLE_DIRECTORY
+ putenv(const_cast<char *>("PROJ_IGNORE_USER_WRITABLE_DIRECTORY="));
+ auto P = proj_create(ctx, "+init=temp_proj_dic3:MY_PIPELINE");
+ EXPECT_NE(P, nullptr);
+ putenv(const_cast<char *>("PROJ_IGNORE_USER_WRITABLE_DIRECTORY=YES"));
+ proj_destroy(P);
+ }
+ proj_context_destroy(ctx);
+ MyUnlink(filename);
+}
+
} // namespace