From 4ab58b18ace458bbb3afdf8d98ed05700f894e1c Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Sun, 23 Apr 2023 01:45:55 +0200 Subject: [PATCH] tests: Fix some command generation problems MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Can't figure out how to generate this correctly. 🤷 --- tests/CMakeLists.txt | 140 +++++++++++++++++++++++++++++-------------- tests/helpers.cmake | 89 +-------------------------- 2 files changed, 97 insertions(+), 132 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e69e76d..6a49049 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,25 +8,49 @@ include("helpers.cmake") # Generation message(STATUS "\n\n===== Generation =====") # - Valid Cases -test_generate("0.0") -test_generate("1.0" MAJOR 1) -test_generate("0.2" MINOR 2) -test_generate("0.0.3" PATCH 3) -test_generate("0.0.0.4" TWEAK 4) -test_generate("0.0-5" COMPRESS PRERELEASE 5) -test_generate("0.0a5" COMPRESS PRERELEASE a5) -test_generate("0.0a5.5" COMPRESS PRERELEASE "a5;5") -test_generate("0.0+6" BUILD 6) -test_generate("0.0+6.8" BUILD "6;8") +version(GENERATE _TEST) +compare_test("0.0") +version(GENERATE _TEST MAJOR 1) +compare_test("1.0") +version(GENERATE _TEST MINOR 2) +compare_test("0.2") +version(GENERATE _TEST PATCH 3) +compare_test("0.0.3") +version(GENERATE _TEST TWEAK 4) +compare_test("0.0.0.4") +version(GENERATE _TEST COMPRESS PRERELEASE 5) +compare_test("0.0-5") +version(GENERATE _TEST COMPRESS PRERELEASE a5) +compare_test("0.0a5") +version(GENERATE _TEST COMPRESS PRERELEASE "a5;5") +compare_test("0.0a5.5") +version(GENERATE _TEST BUILD 6) +compare_test("0.0+6") +version(GENERATE _TEST BUILD "6;8") +compare_test("0.0+6.8") +version(GENERATE _TEST MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 BUILD "gABCDEF01") +compare_test("1.2.3.4+gABCDEF01") # Discovered in StreamFX +version(GENERATE _TEST REQUIRE "PATCH;") +compare_test("0.0.0") # Discovered in TonPlugIns, StreamFX +version(GENERATE _TEST REQUIRE "TWEAK;PATCH") +compare_test("0.0.0.0") # Discovered in TonPlugIns, StreamFX # - Invalid Cases -test_generate("-1.0.0" FAIL MAJOR "-1") -test_generate("0.-1.0" FAIL MINOR "-1") -test_generate("0.0.-1" FAIL PATCH "-1") -test_generate("0.0.0.-1" FAIL TWEAK "-1") -test_generate("0.0.0-#" FAIL PRERELEASE "#") -test_generate("0.0.0-0 0" FAIL PRERELEASE "0 0") -test_generate("0.0.0+#" FAIL BUILD "#") -test_generate("0.0.0+0 0" FAIL BUILD "0 0") +version(GENERATE _TEST MAJOR "-1") +compare_test("-1.0.0" FAIL) +version(GENERATE _TEST MINOR "-1") +compare_test("0.-1.0" FAIL) +version(GENERATE _TEST PATCH "-1") +compare_test("0.0.-1" FAIL) +version(GENERATE _TEST TWEAK "-1") +compare_test("0.0.0.-1" FAIL) +version(GENERATE _TEST PRERELEASE "#") +compare_test("0.0.0-#" FAIL) +version(GENERATE _TEST PRERELEASE "0 0") +compare_test("0.0.0-0 0" FAIL) +version(GENERATE _TEST BUILD "#") +compare_test("0.0.0+#" FAIL) +version(GENERATE _TEST BUILD "0 0") +compare_test("0.0.0+0 0" FAIL) # Parsing message(STATUS "\n\n===== Parsing =====") @@ -63,30 +87,59 @@ test_parse("0.0.0+.0" FAIL) # Modifying message(STATUS "\n\n===== Modifying =====") # - Valid Cases -test_modify("1.2" "0.2" MAJOR 1) -test_modify("1.2" "0.2" MAJOR "+1") -test_modify("1.2" "2.2" MAJOR "-1") -test_modify("1.2" "1.0" MINOR 2) -test_modify("1.2" "1.0" MINOR "+2") -test_modify("1.2" "1.3" MINOR "-1") -test_modify("1.2.3" "1.2" PATCH 3) -test_modify("1.2.3" "1.2.2" PATCH "+1") -test_modify("1.2.3" "1.2.4" PATCH "-1") -test_modify("1.2.0.4" "1.2" TWEAK 4) -test_modify("1.2.3.4" "1.2.3.3" TWEAK "+1") -test_modify("1.2.3.4" "1.2.3.5" TWEAK "-1") -test_modify("1.2-5" "1.2" COMPRESS PRERELEASE 5) -test_modify("1.2a5" "1.2" COMPRESS PRERELEASE a5) -test_modify("1.2+6" "1.2" COMPRESS BUILD 6) -test_modify("1.2-5+6" "1.2" COMPRESS PRERELEASE 5 BUILD 6) -test_modify("1.2a5+6" "1.2" COMPRESS PRERELEASE a5 BUILD 6) +version(MODIFY _TEST "0.2" MAJOR 1) +compare_test("1.2") +version(MODIFY _TEST "0.2" MAJOR "+1") +compare_test("1.2") +version(MODIFY _TEST "2.2" MAJOR "-1") +compare_test("1.2") +version(MODIFY _TEST "1.0" MINOR 2) +compare_test("1.2") +version(MODIFY _TEST "1.0" MINOR "+2") +compare_test("1.2") +version(MODIFY _TEST "1.3" MINOR "-1") +compare_test("1.2") +version(MODIFY _TEST "1.2" PATCH 3) +compare_test("1.2.3") +version(MODIFY _TEST "1.2.2" PATCH "+1") +compare_test("1.2.3") +version(MODIFY _TEST "1.2.4" PATCH "-1") +compare_test("1.2.3") +version(MODIFY _TEST "1.2" TWEAK 4) +compare_test("1.2.0.4") +version(MODIFY _TEST "1.2.3.3" TWEAK "+1") +compare_test("1.2.3.4") +version(MODIFY _TEST "1.2.3.5" TWEAK "-1") +compare_test("1.2.3.4") +version(MODIFY _TEST "1.2" COMPRESS PRERELEASE 5) +compare_test("1.2-5") +version(MODIFY _TEST "1.2" COMPRESS PRERELEASE a5) +compare_test("1.2a5") +version(MODIFY _TEST "1.2" COMPRESS BUILD 6) +compare_test("1.2+6") +version(MODIFY _TEST "1.2" COMPRESS PRERELEASE 5 BUILD 6) +compare_test("1.2-5+6") +version(MODIFY _TEST "1.2" COMPRESS PRERELEASE a5 BUILD 6) +compare_test("1.2a5+6") +version(MODIFY _TEST "0.2.0" TWEAK "4" BUILD "gABCDEF01") +compare_test("0.2.0.4+gABCDEF01") # Discovered in StreamFX +version(MODIFY _TEST "1.2" COMPRESS REQUIRE "PATCH;") +compare_test("1.2.0") # Discovered in TonPlugIns, StreamFX +version(MODIFY _TEST "1.2" COMPRESS REQUIRE "TWEAK;") +compare_test("1.2.0.0") # Discovered in TonPlugIns, StreamFX # - Invalid Cases -test_modify("0.0" "0.0" FAIL MAJOR -1) -test_modify("0.0" "0.0" FAIL MINOR -1) -test_modify("0.0" "0.0" FAIL PATCH -1) -test_modify("0.0" "0.0" FAIL TWEAK -1) -test_modify("0.0" "0.0" FAIL COMPRESS PRERELEASE "#") -test_modify("0.0" "0.0" FAIL COMPRESS BUILD "#") +version(MODIFY _TEST "0.0" MAJOR -1) +compare_test("0.0" FAIL) +version(MODIFY _TEST "0.0" MINOR -1) +compare_test("0.0" FAIL) +version(MODIFY _TEST "0.0" PATCH -1) +compare_test("0.0" FAIL) +version(MODIFY _TEST "0.0" TWEAK -1) +compare_test("0.0" FAIL) +version(MODIFY _TEST "0.0" COMPRESS PRERELEASE "#") +compare_test("0.0" FAIL) +version(MODIFY _TEST "0.0" COMPRESS BUILD "#") +compare_test("0.0" FAIL) # Comparing message(STATUS "\n\n===== Comparing =====") @@ -111,8 +164,3 @@ test_compare("0.0-5" "+PRERELEASE" "0.0") test_compare("0.0" "-PRERELEASE" "0.0-5") test_compare("0.0+6" "+BUILD" "0.0") test_compare("0.0" "-BUILD" "0.0+6") - -# Discovered failure cases -message(STATUS "\n\n===== User-generated Cases =====") -test_generate("1.2.3.4+gABCDEF01" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 BUILD "gABCDEF01") -test_modify("0.2.0.4+gABCDEF01" "0.2.0" TWEAK "4" BUILD "gABCDEF01") diff --git a/tests/helpers.cmake b/tests/helpers.cmake index 2cddf1d..082f567 100644 --- a/tests/helpers.cmake +++ b/tests/helpers.cmake @@ -1,38 +1,13 @@ include("../version.cmake") -function(test_generate) +function(compare_test) cmake_parse_arguments( PARSE_ARGV 1 _6edc8bbd - "COMPRESS;FAIL" - "MAJOR;MINOR;PATCH;TWEAK;PRERELEASE;BUILD" + "FAIL" + "" "" ) - - set(ARGS "") - if(_6edc8bbd_MAJOR) - set(ARGS "${ARGS} MAJOR \"${_6edc8bbd_MAJOR}\"") - endif() - if(_6edc8bbd_MINOR) - set(ARGS "${ARGS} MINOR \"${_6edc8bbd_MINOR}\"") - endif() - if(_6edc8bbd_PATCH) - set(ARGS "${ARGS} PATCH \"${_6edc8bbd_PATCH}\"") - endif() - if(_6edc8bbd_TWEAK) - set(ARGS "${ARGS} TWEAK \"${_6edc8bbd_TWEAK}\"") - endif() - if(_6edc8bbd_PRERELEASE) - set(ARGS "${ARGS} PRERELEASE \"${_6edc8bbd_PRERELEASE}\"") - endif() - if(_6edc8bbd_BUILD) - set(ARGS "${ARGS} BUILD \"${_6edc8bbd_BUILD}\"") - endif() - if(_6edc8bbd_COMPRESS) - set(ARGS "${ARGS} COMPRESS") - endif() - cmake_language(EVAL CODE "version(GENERATE _TEST ${ARGS})") - if(_TEST_ERROR) if(_6edc8bbd_FAIL) message(STATUS "PASSED: '${ARGV0}'.\n\t${_TEST_ERROR}") @@ -139,64 +114,6 @@ function(test_parse) endif() endfunction() -function(test_modify) - cmake_parse_arguments( - PARSE_ARGV 2 - _6edc8bbd - "FAIL;COMPRESS" - "MAJOR;MINOR;PATCH;TWEAK;PRERELEASE;BUILD" - "" - ) - - set(ARGS "") - if(_6edc8bbd_MAJOR) - set(ARGS "${ARGS} MAJOR \"${_6edc8bbd_MAJOR}\"") - endif() - if(_6edc8bbd_MINOR) - set(ARGS "${ARGS} MINOR \"${_6edc8bbd_MINOR}\"") - endif() - if(_6edc8bbd_PATCH) - set(ARGS "${ARGS} PATCH \"${_6edc8bbd_PATCH}\"") - endif() - if(_6edc8bbd_TWEAK) - set(ARGS "${ARGS} TWEAK \"${_6edc8bbd_TWEAK}\"") - endif() - if(_6edc8bbd_PRERELEASE) - set(ARGS "${ARGS} PRERELEASE \"${_6edc8bbd_PRERELEASE}\"") - endif() - if(_6edc8bbd_BUILD) - set(ARGS "${ARGS} BUILD \"${_6edc8bbd_BUILD}\"") - endif() - if(_6edc8bbd_COMPRESS) - set(ARGS "${ARGS} COMPRESS") - endif() - cmake_language(EVAL CODE "version(MODIFY _TEST \"${ARGV1}\" ${ARGS})") - - set(FAILED OFF) - if(_TEST_ERROR) - set(MESSAGE "${_TEST_ERROR}") - set(FAILED ON) - else() - if(NOT (_TEST STREQUAL ARGV0)) - set(FAILED ON) - endif() - endif() - - if(FAILED) - if(_6edc8bbd_FAIL) - message(STATUS "PASSED: '${ARGV0}' != '${_TEST}'.\n\t${MESSAGE}") - else() - message(SEND_ERROR "FAILED: '${ARGV0}' != '${_TEST}'.\n\t${MESSAGE}") - endif() - else() - if(_6edc8bbd_FAIL) - message(SEND_ERROR "FAILED: '${ARGV0}' == '${_TEST}'.\n\t${MESSAGE}") - else() - message(STATUS "PASSED: '${ARGV0}' == '${_TEST}'.") - endif() - endif() -endfunction() - function(test_compare) cmake_parse_arguments( PARSE_ARGV 3