aboutsummaryrefslogtreecommitdiff
path: root/scripts/test_ports
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2021-07-30 12:57:07 -0700
committerGitHub <noreply@github.com>2021-07-30 12:57:07 -0700
commita5a70c7c3eadcc8a48b5f513b0ec361e40a5aeca (patch)
treec566f37f8dba7c0fa032bb1da97ed0d51a11a91b /scripts/test_ports
parentfa1bbe097b26678e3fd992173b62279c071c422b (diff)
downloadvcpkg-a5a70c7c3eadcc8a48b5f513b0ec361e40a5aeca.tar.gz
vcpkg-a5a70c7c3eadcc8a48b5f513b0ec361e40a5aeca.zip
[vcpkg_minimum_required] fix, add unit tests (#19257)
* fix vcpkg_minimum_required drive-by scripts audit * initial unit tests * finish unit tests
Diffstat (limited to 'scripts/test_ports')
-rw-r--r--scripts/test_ports/unit-test-cmake/portfile.cmake30
-rw-r--r--scripts/test_ports/unit-test-cmake/test-vcpkg_minimum_required.cmake49
-rw-r--r--scripts/test_ports/unit-test-cmake/vcpkg.json6
3 files changed, 74 insertions, 11 deletions
diff --git a/scripts/test_ports/unit-test-cmake/portfile.cmake b/scripts/test_ports/unit-test-cmake/portfile.cmake
index 638b15974..a567c11de 100644
--- a/scripts/test_ports/unit-test-cmake/portfile.cmake
+++ b/scripts/test_ports/unit-test-cmake/portfile.cmake
@@ -1,10 +1,9 @@
-function(set_fatal_error)
- if(ARGC EQUAL 0)
- set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "OFF" CACHE BOOL "" FORCE)
- else()
- set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "ON" CACHE BOOL "" FORCE)
- set(Z_VCPKG_UNIT_TEST_FATAL_ERROR "${ARGV0}" CACHE STRING "" FORCE)
- endif()
+function(set_fatal_error err)
+ set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "ON" CACHE BOOL "" FORCE)
+ set(Z_VCPKG_UNIT_TEST_FATAL_ERROR "${err}" CACHE STRING "" FORCE)
+endfunction()
+function(unset_fatal_error)
+ set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "OFF" CACHE BOOL "" FORCE)
endfunction()
function(set_has_error)
set(Z_VCPKG_UNIT_TEST_HAS_ERROR ON CACHE BOOL "" FORCE)
@@ -22,12 +21,12 @@ macro(message level msg)
endmacro()
set(Z_VCPKG_UNIT_TEST_HAS_ERROR OFF CACHE BOOL "" FORCE)
-set_fatal_error()
+unset_fatal_error()
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)
- set_fatal_error()
+ unset_fatal_error()
set_has_error()
message(STATUS "${utcve_test} had an unexpected FATAL_ERROR;
expected: \"${utcve_value}\"")
@@ -50,17 +49,28 @@ function(unit_test_check_variable_equal utcve_test utcve_variable utcve_value)
endif()
endfunction()
+function(unit_test_ensure_success utcve_test)
+ cmake_language(EVAL CODE "${utcve_test}")
+ if(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
+ set_has_error()
+ message(STATUS "${utcve_test} was expected to be successful.")
+ endif()
+ unset_fatal_error()
+endfunction()
function(unit_test_ensure_fatal_error utcve_test)
cmake_language(EVAL CODE "${utcve_test}")
if(NOT Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
set_has_error()
message(STATUS "${utcve_test} was expected to be a FATAL_ERROR.")
endif()
- set_fatal_error()
+ unset_fatal_error()
endfunction()
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
+if("minimum-required" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_minimum_required.cmake")
+endif()
if("list" IN_LIST FEATURES)
include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_list.cmake")
endif()
diff --git a/scripts/test_ports/unit-test-cmake/test-vcpkg_minimum_required.cmake b/scripts/test_ports/unit-test-cmake/test-vcpkg_minimum_required.cmake
new file mode 100644
index 000000000..93bfbcfaa
--- /dev/null
+++ b/scripts/test_ports/unit-test-cmake/test-vcpkg_minimum_required.cmake
@@ -0,0 +1,49 @@
+# -- error cases --
+# VCPKG_BASE_VERSION not set - vcpkg version is too old
+set(VCPKG_BASE_VERSION_backup "${VCPKG_BASE_VERSION}")
+unset(VCPKG_BASE_VERSION)
+unset(VCPKG_BASE_VERSION CACHE)
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021-01-01)]])
+unit_test_ensure_fatal_error([[vcpkg_minimum_required()]])
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION "")]])
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION "2021.01.01")]])
+
+set(VCPKG_BASE_VERSION 2021-02-02)
+
+# VERSION not passed
+unit_test_ensure_fatal_error([[vcpkg_minimum_required()]])
+# VERSION weird - empty
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION "")]])
+# VERSION weird - dotted
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021.01.01)]])
+# VERSION weird - not a valid year
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 3000-01-01)]])
+# VERSION weird - list
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION "2021-01-01;2021-01-02")]])
+# VERSION weird - small year
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 21-01-01)]])
+# VERSION weird - small month
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021-1-01)]])
+# VERSION weird - small day
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021-01-1)]])
+# VERSION too-new - later year, earlier month, earlier day
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2022-01-01)]])
+# VERSION too-new - same year, later month, earlier day
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021-03-01)]])
+# VERSION too-new - same year, same month, later day
+unit_test_ensure_fatal_error([[vcpkg_minimum_required(VERSION 2021-02-03)]])
+
+# -- successes --
+# same date
+unit_test_ensure_success([[vcpkg_minimum_required(VERSION 2021-02-02)]])
+
+# VERSION old - earlier year, later month, later day
+unit_test_ensure_success([[vcpkg_minimum_required(VERSION 2020-03-03)]])
+# VERSION old - same year, earlier month, later day
+unit_test_ensure_success([[vcpkg_minimum_required(VERSION 2021-01-03)]])
+# VERSION old - same year, same month, earlier day
+unit_test_ensure_success([[vcpkg_minimum_required(VERSION 2021-02-01)]])
+
+# reset to backup
+unset(VCPKG_BASE_VERSION)
+set(VCPKG_BASE_VERSION "${VCPKG_BASE_VERSION_backup}" CACHE STRING "")
diff --git a/scripts/test_ports/unit-test-cmake/vcpkg.json b/scripts/test_ports/unit-test-cmake/vcpkg.json
index 5079f9e73..c20cf2c6c 100644
--- a/scripts/test_ports/unit-test-cmake/vcpkg.json
+++ b/scripts/test_ports/unit-test-cmake/vcpkg.json
@@ -5,7 +5,8 @@
"supports": "x64",
"default-features": [
"function-arguments",
- "list"
+ "list",
+ "minimum-required"
],
"features": {
"function-arguments": {
@@ -13,6 +14,9 @@
},
"list": {
"description": "Test the vcpkg_list function"
+ },
+ "minimum-required": {
+ "description": "Test the vcpkg_minimum_required function"
}
}
}