From 0e1dc121856eef84bf1852134e548bf9898dabac Mon Sep 17 00:00:00 2001 From: nicole mazzuca <83086508+strega-nil-ms@users.noreply.github.com> Date: Tue, 20 Jul 2021 12:24:58 -0500 Subject: [rollup] Rollup PR 2021-07-16 (#19001) * [rollup:2021-07-16 1/7] PR #18201 (@JackBoosY) [vcpkg-cmake] Add check for unused cmake variables * [rollup:2021-07-16 2/7] PR #18397 (@strega-nil) [vcpkg_list] add new function * [rollup:2021-07-16 3/7] PR #18782 (@strega-nil) [scripts-audit] vcpkg_build_ninja * [rollup:2021-07-16 4/7] PR #18784 (@strega-nil) [scripts-audit] vcpkg_minimum_required * [rollup:2021-07-16 5/7] PR #18785 (@strega-nil) [scripts-audit] vcpkg_replace_string * [rollup:2021-07-16 6/7] PR #18786 (@strega-nil) [scripts-audit] windows scripts * [rollup:2021-07-16 7/7] PR #18945 (@strega-nil) [many ports] remove deprecated vcpkg_check_features call [1/5] Co-authored-by: nicole mazzuca Co-authored-by: PhoebeHui <20694052+PhoebeHui@users.noreply.github.com> --- scripts/test_ports/unit-test-cmake/portfile.cmake | 73 ++ .../unit-test-cmake/test-vcpkg_list.cmake | 813 +++++++++++++++++++++ .../test-z_vcpkg_function_arguments.cmake | 63 ++ scripts/test_ports/unit-test-cmake/vcpkg.json | 18 + 4 files changed, 967 insertions(+) create mode 100644 scripts/test_ports/unit-test-cmake/portfile.cmake create mode 100644 scripts/test_ports/unit-test-cmake/test-vcpkg_list.cmake create mode 100644 scripts/test_ports/unit-test-cmake/test-z_vcpkg_function_arguments.cmake create mode 100644 scripts/test_ports/unit-test-cmake/vcpkg.json (limited to 'scripts/test_ports') diff --git a/scripts/test_ports/unit-test-cmake/portfile.cmake b/scripts/test_ports/unit-test-cmake/portfile.cmake new file mode 100644 index 000000000..638b15974 --- /dev/null +++ b/scripts/test_ports/unit-test-cmake/portfile.cmake @@ -0,0 +1,73 @@ +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() +endfunction() +function(set_has_error) + set(Z_VCPKG_UNIT_TEST_HAS_ERROR ON CACHE BOOL "" FORCE) +endfunction() + +macro(message level msg) + if("${level}" STREQUAL "FATAL_ERROR") + set_fatal_error("${msg}") + return() + else() + _message("${level}" "${msg}") # note: this results in incorrect printing, but that's fine + # message(STATUS "\${asdf}") will result in + # message(STATUS "${asdf}"), since that's how macro arguments work. + endif() +endmacro() + +set(Z_VCPKG_UNIT_TEST_HAS_ERROR OFF CACHE BOOL "" FORCE) +set_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() + set_has_error() + message(STATUS "${utcve_test} had an unexpected FATAL_ERROR; + expected: \"${utcve_value}\"") + message(STATUS "FATAL_ERROR: ${Z_VCPKG_UNIT_TEST_FATAL_ERROR}") + return() + endif() + + if(NOT DEFINED "${utcve_variable}") + message(STATUS "${utcve_test} failed to set ${utcve_variable}; + expected: \"${utcve_value}\"") + set_has_error() + return() + endif() + if(NOT "${${utcve_variable}}" STREQUAL "${utcve_value}") + message(STATUS "${utcve_test} resulted in the wrong value for ${utcve_variable}; + expected: \"${utcve_value}\" + actual : \"${${utcve_variable}}\"") + set_has_error() + return() + endif() +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() +endfunction() + +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +if("list" IN_LIST FEATURES) + include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_list.cmake") +endif() +if("function-arguments" IN_LIST FEATURES) + include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_function_arguments.cmake") +endif() + +if(Z_VCPKG_UNIT_TEST_HAS_ERROR) + _message(FATAL_ERROR "At least one test failed") +endif() diff --git a/scripts/test_ports/unit-test-cmake/test-vcpkg_list.cmake b/scripts/test_ports/unit-test-cmake/test-vcpkg_list.cmake new file mode 100644 index 000000000..c0f3ac8c0 --- /dev/null +++ b/scripts/test_ports/unit-test-cmake/test-vcpkg_list.cmake @@ -0,0 +1,813 @@ +# vcpkg_list(SET ...) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst "")]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst "" "")]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst a)]] + lst "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst a b)]] + lst "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(SET lst "a;b")]] + lst [[a\;b]] +) +unit_test_check_variable_equal( + [=[vcpkg_list(SET lst "a;b" "c" [[d\;e]])]=] + lst [[a\;b;c;d\\;e]] +) + +# vcpkg_list(LENGTH ) +set(lst [[]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 0 +) +set(lst [[;]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 2 +) +set(lst [[a]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 1 +) +set(lst [[a;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 2 +) +set(lst [[a\\;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 1 +) +set(lst [[a\;b;c\\;d]]) +unit_test_check_variable_equal( + [[vcpkg_list(LENGTH lst out)]] + out 2 +) + +# vcpkg_list(GET ) +set(lst "") +unit_test_ensure_fatal_error([[vcpkg_list(GET lst 0 out)]]) + +set(lst "a") +unit_test_check_variable_equal( + [[vcpkg_list(GET lst 0 out)]] + out "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst -1 out)]] + out "a" +) +unit_test_ensure_fatal_error([[vcpkg_list(GET lst 2 out)]]) +unit_test_ensure_fatal_error([[vcpkg_list(GET lst -2 out)]]) + +set(lst ";b") +unit_test_check_variable_equal( + [[vcpkg_list(GET lst 0 out)]] + out "" +) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst -1 out)]] + out "b" +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(GET lst 0 out)]] + out "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst -1 out)]] + out "b" +) + +set(lst [[a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst 0 out)]] + out "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst -1 out)]] + out "c" +) + +set(lst [[a;b\;c;d\\;e]]) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst 1 out)]] + out "b;c" +) +unit_test_check_variable_equal( + [[vcpkg_list(GET lst -1 out)]] + out [[d\;e]] +) + +# vcpkg_list(JOIN ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "-" out)]] + out "" +) + +set(lst "a") +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "-" out)]] + out "a" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "-" out)]] + out "-" +) + +set(lst [[a;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "-" out)]] + out [[a-b]] +) +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "+" out)]] + out [[a+b]] +) + +set(lst [[a;b\;c\\;d]]) +unit_test_check_variable_equal( + [[vcpkg_list(JOIN lst "-" out)]] + out [[a-b;c\;d]] +) + +# vcpkg_list(SUBLIST ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 0 out)]] + out "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 1 out)]] + out "" +) +unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 1 0 out)]]) + +set(lst "a") +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 0 out)]] + out "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 1 out)]] + out "a" +) +unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 2 0 out)]]) +unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 2 1 out)]]) + +set(lst ";;") +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 0 out)]] + out "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 1 out)]] + out "" +) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 2 out)]] + out ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 0 3 out)]] + out ";;" +) + +set(lst "a;b;c;d") +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 1 2 out)]] + out "b;c" +) + +set(lst [[a\;b;c\;d;e]]) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 1 2 out)]] + out [[c\;d;e]] +) + +set(lst [[a\;b;c\\;d;e;f;g;h]]) +unit_test_check_variable_equal( + [[vcpkg_list(SUBLIST lst 1 -1 out)]] + out [[c\\;d;e;f;g;h]] +) + +# vcpkg_list(FIND ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst "a" out)]] + out -1 +) + +set(lst "b") +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst "a" out)]] + out -1 +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst "a" out)]] + out 0 +) +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst b out)]] + out 1 +) + +set(lst ";b") +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst "" out)]] + out 0 +) +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst b out)]] + out 1 +) + +set(lst [[a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst "a;b" out)]] + out 0 +) +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst c out)]] + out 1 +) +unit_test_check_variable_equal( + [[vcpkg_list(FIND lst a out)]] + out -1 +) + +set(lst [[a\\;b;c]]) +unit_test_check_variable_equal( + [=[vcpkg_list(FIND lst [[a\;b]] out)]=] + out 0 +) + +# vcpkg_list(APPEND [...]) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst)]] + lst [[]] +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "")]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "" "")]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst a)]] + lst "a" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst)]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "")]] + lst ";;" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst b)]] + lst ";;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "b;c" d)]] + lst [[;;b\;c;d]] +) + +set(lst "a") +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst)]] + lst "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "")]] + lst "a;" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst b)]] + lst "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "b;c" d)]] + lst [[a;b\;c;d]] +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst)]] + lst "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "")]] + lst "a;b;" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst c)]] + lst "a;b;c" +) +unit_test_check_variable_equal( + [[vcpkg_list(APPEND lst "c;d" e)]] + lst [[a;b;c\;d;e]] +) +unit_test_check_variable_equal( + [=[vcpkg_list(APPEND lst [[c\;d]])]=] + lst [[a;b;c\\;d]] +) + +# vcpkg_list(PREPEND [...]) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "")]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "" "")]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst a)]] + lst "a" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst)]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "")]] + lst ";;" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst b)]] + lst "b;;" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "b;c" d)]] + lst [[b\;c;d;;]] +) + +set(lst "a") +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst)]] + lst "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "")]] + lst ";a" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst b)]] + lst "b;a" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "b;c" d)]] + lst [[b\;c;d;a]] +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst)]] + lst "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "")]] + lst ";a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst c)]] + lst "c;a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(PREPEND lst "c;d" e)]] + lst [[c\;d;e;a;b]] +) +unit_test_check_variable_equal( + [=[vcpkg_list(PREPEND lst [[c\;d]])]=] + lst [[c\\;d;a;b]] +) + +# list(INSERT [...]) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0 "")]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0 "" "")]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0 "a")]] + lst "a" +) +unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst 1 "")]]) +unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst -1 "")]]) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0)]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 1)]] + lst ";" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 1 "")]] + lst ";;" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 0 b)]] + lst "b;;" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 1 b)]] + lst ";b;" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 2 b)]] + lst ";;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst -1 "b;c" d)]] + lst [[;b\;c;d;]] +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst -2 "b;c" d)]] + lst [[b\;c;d;;]] +) +unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst 3 "")]]) +unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst -3 "")]]) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst -1 c)]] + lst "a;c;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 1 c)]] + lst "a;c;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 2 c)]] + lst "a;b;c" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst -2 c)]] + lst "c;a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(INSERT lst 1 "c;d")]] + lst [[a;c\;d;b]] +) +unit_test_check_variable_equal( + [=[vcpkg_list(INSERT lst 1 [[c\;d]] e)]=] + lst [[a;c\\;d;e;b]] +) + +# vcpkg_list(POP_BACK ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "" +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "a" +) + +set(lst "a;;b") +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "a;" +) + +set(lst [[a\;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "" +) + +set(lst [[c;a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst [[c;a\;b]] +) + +# vcpkg_list(POP_FRONT ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(POP_BACK lst)]] + lst "" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(POP_FRONT lst)]] + lst "" +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(POP_FRONT lst)]] + lst "b" +) + +set(lst "a;;b") +unit_test_check_variable_equal( + [[vcpkg_list(POP_FRONT lst)]] + lst ";b" +) + +set(lst [[a\;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(POP_FRONT lst)]] + lst "" +) + +set(lst [[c;a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(POP_FRONT lst)]] + lst [[a\;b;c]] +) + +# vcpkg_list(REMOVE_DUPLICATES ) +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "" +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "a;b" +) + +set(lst "a;a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "a;b" +) + +set(lst "a;b;a") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "a;b" +) + +set(lst "c;a;b;a;c") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "c;a;b" +) + +set(lst "a;;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst "a;;b" +) + +set(lst [[a\;b;a\;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst [[a\;b]] +) + +set(lst [[c;a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_DUPLICATES lst)]] + lst [[c;a\;b]] +) + +# vcpkg_list(REVERSE ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst "" +) +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst ";" +) +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst "b;a" +) +set(lst "a;b;c;d;e;f;g") +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst "g;f;e;d;c;b;a" +) + +set(lst [[a\;b;a\;b\\;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst [[a\;b\\;c;a\;b]] +) +set(lst [[c;a\;b]]) +unit_test_check_variable_equal( + [[vcpkg_list(REVERSE lst)]] + lst [[a\;b;c]] +) + +# vcpkg_list(REMOVE_ITEM ) +set(lst "") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "a")]] + lst "" +) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "")]] + lst "" +) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst a)]] + lst "b" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst b)]] + lst "a" +) + +set(lst "a;a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst a)]] + lst "b" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst b)]] + lst "a;a" +) + +set(lst "a;b;c;a;d") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst b)]] + lst "a;c;a;d" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst a)]] + lst "b;c;d" +) + +set(lst "a;;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "")]] + lst "a;b" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst a)]] + lst ";b" +) + +set(lst [[e;a\;b;c\;d]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "a;b")]] + lst [[e;c\;d]] +) + +set(lst [[c;a\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "c")]] + lst [[a\;b]] +) + +set(lst [[c;a\\;b;c]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_ITEM lst "a\\;b")]] + lst [[c;c]] +) + +# vcpkg_list(REMOVE_AT ) +set(lst "") +unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst 0)]]) + +set(lst ";") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 0)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 1)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst -1)]] + lst "" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst -2)]] + lst "" +) +unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst 2)]]) +unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst -3)]]) + +set(lst "a;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 0)]] + lst "b" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 1)]] + lst "a" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst -1)]] + lst "a" +) + +set(lst "a;;b") +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 0)]] + lst ";b" +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 1)]] + lst "a;b" +) + +set(lst [[e;a\;b;c\;d]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 0)]] + lst [[a\;b;c\;d]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 1)]] + lst [[e;c\;d]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst -1)]] + lst [[e;a\;b]] +) + +set(lst [[c;a\\;b;c\;d;e]]) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 0)]] + lst [[a\\;b;c\;d;e]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 1)]] + lst [[c;c\;d;e]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 2)]] + lst [[c;a\\;b;e]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst 3)]] + lst [[c;a\\;b;c\;d]] +) +unit_test_check_variable_equal( + [[vcpkg_list(REMOVE_AT lst -1)]] + lst [[c;a\\;b;c\;d]] +) diff --git a/scripts/test_ports/unit-test-cmake/test-z_vcpkg_function_arguments.cmake b/scripts/test_ports/unit-test-cmake/test-z_vcpkg_function_arguments.cmake new file mode 100644 index 000000000..e88eb683f --- /dev/null +++ b/scripts/test_ports/unit-test-cmake/test-z_vcpkg_function_arguments.cmake @@ -0,0 +1,63 @@ +# these both set `args` in the top level +function(check_function_args start) + z_vcpkg_function_arguments(out "${start}") + set(args "${out}" PARENT_SCOPE) +endfunction() +function(check_all_function_args) + z_vcpkg_function_arguments(out) + set(args "${out}" PARENT_SCOPE) +endfunction() + +unit_test_ensure_fatal_error([[check_function_args(-1)]]) +unit_test_ensure_fatal_error([[check_function_args(3)]]) +unit_test_ensure_fatal_error([[check_function_args(notanumber)]]) +unit_test_check_variable_equal( + [[check_all_function_args()]] + args "" +) +unit_test_check_variable_equal( + [[check_all_function_args("")]] + args "" +) +unit_test_check_variable_equal( + [[check_all_function_args("" "")]] + args ";" +) +unit_test_check_variable_equal( + [[check_all_function_args("" "" "" "")]] + args ";;;" +) + +unit_test_check_variable_equal( + [[check_all_function_args(a b c)]] + args "a;b;c" +) +unit_test_check_variable_equal( + [[check_function_args(2 a b c)]] + args "b;c" +) +unit_test_check_variable_equal( + [[check_function_args(3 a b c)]] + args "c" +) + +unit_test_check_variable_equal( + [=[check_all_function_args("a;b" [[c\;d]] e)]=] + args [[a\;b;c\\;d;e]] +) +unit_test_check_variable_equal( + [=[check_all_function_args("a;b" [[c\;d]] [[e\\;f]])]=] + args [[a\;b;c\\;d;e\\\;f]] +) +unit_test_check_variable_equal( + [=[check_function_args(2 "a;b" [[c\;d]] e)]=] + args [[c\\;d;e]] +) +unit_test_check_variable_equal( + [=[check_function_args(3 "a;b" [[c\;d]] e)]=] + args "e" +) +unit_test_check_variable_equal( + [=[check_function_args(4 "a;b" [[c\;d]] e)]=] + args "" +) diff --git a/scripts/test_ports/unit-test-cmake/vcpkg.json b/scripts/test_ports/unit-test-cmake/vcpkg.json new file mode 100644 index 000000000..5079f9e73 --- /dev/null +++ b/scripts/test_ports/unit-test-cmake/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "unit-test-cmake", + "version-string": "0", + "description": "Ensures that the CMake scripts are unit tested.", + "supports": "x64", + "default-features": [ + "function-arguments", + "list" + ], + "features": { + "function-arguments": { + "description": "Test the z_vcpkg_function_arguments function" + }, + "list": { + "description": "Test the vcpkg_list function" + } + } +} -- cgit v1.2.3