aboutsummaryrefslogtreecommitdiff
path: root/scripts/test_ports
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2021-09-27 13:27:44 -0700
committerGitHub <noreply@github.com>2021-09-27 13:27:44 -0700
commitf0281bf749f6b7c39418b57a60ae91c5f5d65b0f (patch)
treea29ac8106181d0e4fce93a268a4e100742ff9273 /scripts/test_ports
parent46700e2a0c6a4e7d93d40da00965d01925b48ef5 (diff)
downloadvcpkg-f0281bf749f6b7c39418b57a60ae91c5f5d65b0f.tar.gz
vcpkg-f0281bf749f6b7c39418b57a60ae91c5f5d65b0f.zip
[scripts-audit] vcpkg_fixup_pkgconfig (#19658)
* [scripts-audit] vcpkg_fixup_pkgconfig * Neumann-A CR, fix docs * vcpkg_fixup_pkgconfig bugs * fix group * moar fixing * be more clever around pkg_config_path * add `vcpkg_host_path_list` so that we can unit test * move stuff around a bit * fix bug in vcpkg_host_path_list.cmake * ras0219 CRs
Diffstat (limited to 'scripts/test_ports')
-rw-r--r--scripts/test_ports/unit-test-cmake/portfile.cmake72
-rw-r--r--scripts/test_ports/unit-test-cmake/test-vcpkg_host_path_list.cmake263
-rw-r--r--scripts/test_ports/unit-test-cmake/vcpkg.json3
3 files changed, 336 insertions, 2 deletions
diff --git a/scripts/test_ports/unit-test-cmake/portfile.cmake b/scripts/test_ports/unit-test-cmake/portfile.cmake
index a567c11de..497cb18a3 100644
--- a/scripts/test_ports/unit-test-cmake/portfile.cmake
+++ b/scripts/test_ports/unit-test-cmake/portfile.cmake
@@ -23,6 +23,56 @@ endmacro()
set(Z_VCPKG_UNIT_TEST_HAS_ERROR OFF CACHE BOOL "" FORCE)
unset_fatal_error()
+# in order to allow namespacing
+function(unit_test_match namespace value regex)
+ if("${value}" MATCHES "${regex}")
+ set("${namespace}_MATCHED" ON PARENT_SCOPE)
+ if("${CMAKE_MATCH_COUNT}" EQUAL "0")
+ return()
+ endif()
+
+ foreach(match RANGE 1 "${CMAKE_MATCH_COUNT}")
+ set("${namespace}_CMAKE_MATCH_${match}" "${CMAKE_MATCH_${match}}" PARENT_SCOPE)
+ endforeach()
+ else()
+ set("${namespace}_MATCHED" OFF PARENT_SCOPE)
+ endif()
+endfunction()
+
+function(unit_test_check_variable_unset utcvu_test utcvu_variable)
+ cmake_language(EVAL CODE "${utcvu_test}")
+ if(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
+ unset_fatal_error()
+ set_has_error()
+ message(STATUS "${utcvu_test} had an unexpected FATAL_ERROR;
+ expected: \"${utcvu_value}\"")
+ message(STATUS "FATAL_ERROR: ${Z_VCPKG_UNIT_TEST_FATAL_ERROR}")
+ return()
+ endif()
+
+ unit_test_match(utcvu "${utcvu_variable}" [[^(ENV|CACHE)\{(.*)\}$]])
+ if(utcvu_MATCHED)
+ message(STATUS "utcvu_variable: ${utcvu_CMAKE_MATCH_2}")
+ if("${utcvu_CMAKE_MATCH_1}" STREQUAL "ENV")
+ set(utcvu_actual_value "$ENV{${utcvu_CMAKE_MATCH_2}}")
+ elseif("${utcvu_CMAKE_MATCH_1}" STREQUAL "CACHE")
+ set(utcvu_actual_value "$CACHE{${utcvu_CMAKE_MATCH_2}}")
+ else()
+ _message(FATAL_ERROR "unexpected value for CMAKE_MATCH_1: ${utcvu_CMAKE_MATCH_1}")
+ endif()
+ else()
+ set(utcvu_actual_value "${${utcvu_variable}}")
+ endif()
+
+ if(DEFINED "${utcvu_variable}")
+ message(STATUS "${utcvu_test} set ${utcvu_variable};
+ expected: \"${utcvu_variable}\" unset
+ actual : \"${utcvu_actual_value}\"")
+ set_has_error()
+ return()
+ endif()
+endfunction()
+
function(unit_test_check_variable_equal utcve_test utcve_variable utcve_value)
cmake_language(EVAL CODE "${utcve_test}")
if(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
@@ -40,10 +90,25 @@ function(unit_test_check_variable_equal utcve_test utcve_variable utcve_value)
set_has_error()
return()
endif()
- if(NOT "${${utcve_variable}}" STREQUAL "${utcve_value}")
+
+ unit_test_match(utcve "${utcve_variable}" [[^(ENV|CACHE)\{(.*)\}$]])
+ if(utcve_MATCHED)
+ message(STATUS "utcve_variable: ${utcve_CMAKE_MATCH_2}")
+ if("${utcve_CMAKE_MATCH_1}" STREQUAL "ENV")
+ set(utcve_actual_value "$ENV{${utcve_CMAKE_MATCH_2}}")
+ elseif("${utcve_CMAKE_MATCH_1}" STREQUAL "CACHE")
+ set(utcve_actual_value "$CACHE{${utcve_CMAKE_MATCH_2}}")
+ else()
+ _message(FATAL_ERROR "unexpected value for CMAKE_MATCH_1: ${utcve_CMAKE_MATCH_1}")
+ endif()
+ else()
+ set(utcve_actual_value "${${utcve_variable}}")
+ endif()
+
+ if(NOT "${utcve_actual_value}" STREQUAL "${utcve_value}")
message(STATUS "${utcve_test} resulted in the wrong value for ${utcve_variable};
expected: \"${utcve_value}\"
- actual : \"${${utcve_variable}}\"")
+ actual : \"${utcve_actual_value}\"")
set_has_error()
return()
endif()
@@ -74,6 +139,9 @@ endif()
if("list" IN_LIST FEATURES)
include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_list.cmake")
endif()
+if("add-to-path" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_host_path_list.cmake")
+endif()
if("function-arguments" IN_LIST FEATURES)
include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_function_arguments.cmake")
endif()
diff --git a/scripts/test_ports/unit-test-cmake/test-vcpkg_host_path_list.cmake b/scripts/test_ports/unit-test-cmake/test-vcpkg_host_path_list.cmake
new file mode 100644
index 000000000..a6322d375
--- /dev/null
+++ b/scripts/test_ports/unit-test-cmake/test-vcpkg_host_path_list.cmake
@@ -0,0 +1,263 @@
+# CACHE{var} is a fatal error
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND CACHE{var})]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND CACHE{var})]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND CACHE{var} c d)]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND CACHE{var} c d)]])
+
+# regular variable, HOST_PATH_SEPARATOR = ';'
+set(VCPKG_HOST_PATH_SEPARATOR ";")
+
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND var "a;b")]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND var "a;b")]])
+
+set(var "a;b")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var d e)]]
+ var "a;b;d;e"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var)]]
+ var "a;b"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var d e)]]
+ var "d;e;a;b"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var)]]
+ var "a;b"
+)
+
+set(var "")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var d e)]]
+ var "d;e"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var)]]
+ var ""
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var d e)]]
+ var "d;e"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var)]]
+ var ""
+)
+
+unset(var)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var d e)]]
+ var "d;e"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND var)]]
+ var ""
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var d e)]]
+ var "d;e"
+)
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND var)]]
+ var ""
+)
+
+# regular variable, HOST_PATH_SEPARATOR = ':'
+set(VCPKG_HOST_PATH_SEPARATOR ":")
+
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND var "a:b")]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND var "a:b")]])
+
+set(ENV{var} "a:b")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "a:b:d:e"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} "a:b"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e:a:b"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} "a:b"
+)
+
+set(ENV{var} "")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} ""
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} ""
+)
+
+unset(ENV{var})
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} ""
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} ""
+)
+
+# environment ENV{var}iable, HOST_PATH_SEPARATOR = ';'
+set(VCPKG_HOST_PATH_SEPARATOR ";")
+
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND ENV{ENV{var}} "a;b")]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND ENV{ENV{var}} "a;b")]])
+
+set(ENV{ENV{var}} "a;b")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "a;b;d;e"
+)
+set(ENV{ENV{var}} "a;b")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}})]]
+ ENV{ENV{var}} "a;b"
+)
+set(ENV{ENV{var}} "a;b")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "d;e;a;b"
+)
+set(ENV{ENV{var}} "a;b")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{ENV{var}})]]
+ ENV{ENV{var}} "a;b"
+)
+
+set(ENV{ENV{var}} "")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "d;e"
+)
+set(ENV{ENV{var}} "")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}})]]
+ ENV{ENV{var}} ""
+)
+set(ENV{ENV{var}} "")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "d;e"
+)
+set(ENV{ENV{var}} "")
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{ENV{var}} ""
+)
+
+unset(ENV{ENV{var}})
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "d;e"
+)
+unset(ENV{ENV{var}})
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{ENV{var}})]]
+ ENV{ENV{var}} ""
+)
+unset(ENV{ENV{var}})
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{ENV{var}} d e)]]
+ ENV{ENV{var}} "d;e"
+)
+unset(ENV{ENV{var}})
+unit_test_check_ENV{var}iable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{ENV{var}})]]
+ ENV{ENV{var}} ""
+)
+
+# regular ENV{var}iable, HOST_PATH_SEPARATOR = ':'
+set(VCPKG_HOST_PATH_SEPARATOR ":")
+
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(APPEND ENV{var} "a:b")]])
+unit_test_ensure_fatal_error([[vcpkg_host_path_list(PREPEND ENV{var} "a:b")]])
+
+set(ENV{var} "a:b")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "a:b:d:e"
+)
+set(ENV{var} "a:b")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} "a:b"
+)
+set(ENV{var} "a:b")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e:a:b"
+)
+set(ENV{var} "a:b")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} "a:b"
+)
+
+set(ENV{var} "")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+set(ENV{var} "")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} ""
+)
+set(ENV{var} "")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+set(ENV{var} "")
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} ""
+)
+
+unset(ENV{var})
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unset(ENV{var})
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(APPEND ENV{var})]]
+ ENV{var} ""
+)
+unset(ENV{var})
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var} d e)]]
+ ENV{var} "d:e"
+)
+unset(ENV{var})
+unit_test_check_variable_equal(
+ [[vcpkg_host_path_list(PREPEND ENV{var})]]
+ ENV{var} ""
+)
diff --git a/scripts/test_ports/unit-test-cmake/vcpkg.json b/scripts/test_ports/unit-test-cmake/vcpkg.json
index c20cf2c6c..366d1d7a9 100644
--- a/scripts/test_ports/unit-test-cmake/vcpkg.json
+++ b/scripts/test_ports/unit-test-cmake/vcpkg.json
@@ -9,6 +9,9 @@
"minimum-required"
],
"features": {
+ "host-path-list": {
+ "description": "Test the vcpkg_host_path_list function"
+ },
"function-arguments": {
"description": "Test the z_vcpkg_function_arguments function"
},