tests: Fix some command generation problems

Can't figure out how to generate this correctly. 🤷
This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2023-04-23 01:45:55 +02:00
parent 6f4488a833
commit 4ab58b18ac
2 changed files with 97 additions and 132 deletions
+94 -46
View File
@@ -8,25 +8,49 @@ include("helpers.cmake")
# Generation # Generation
message(STATUS "\n\n===== Generation =====") message(STATUS "\n\n===== Generation =====")
# - Valid Cases # - Valid Cases
test_generate("0.0") version(GENERATE _TEST)
test_generate("1.0" MAJOR 1) compare_test("0.0")
test_generate("0.2" MINOR 2) version(GENERATE _TEST MAJOR 1)
test_generate("0.0.3" PATCH 3) compare_test("1.0")
test_generate("0.0.0.4" TWEAK 4) version(GENERATE _TEST MINOR 2)
test_generate("0.0-5" COMPRESS PRERELEASE 5) compare_test("0.2")
test_generate("0.0a5" COMPRESS PRERELEASE a5) version(GENERATE _TEST PATCH 3)
test_generate("0.0a5.5" COMPRESS PRERELEASE "a5;5") compare_test("0.0.3")
test_generate("0.0+6" BUILD 6) version(GENERATE _TEST TWEAK 4)
test_generate("0.0+6.8" BUILD "6;8") 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 # - Invalid Cases
test_generate("-1.0.0" FAIL MAJOR "-1") version(GENERATE _TEST MAJOR "-1")
test_generate("0.-1.0" FAIL MINOR "-1") compare_test("-1.0.0" FAIL)
test_generate("0.0.-1" FAIL PATCH "-1") version(GENERATE _TEST MINOR "-1")
test_generate("0.0.0.-1" FAIL TWEAK "-1") compare_test("0.-1.0" FAIL)
test_generate("0.0.0-#" FAIL PRERELEASE "#") version(GENERATE _TEST PATCH "-1")
test_generate("0.0.0-0 0" FAIL PRERELEASE "0 0") compare_test("0.0.-1" FAIL)
test_generate("0.0.0+#" FAIL BUILD "#") version(GENERATE _TEST TWEAK "-1")
test_generate("0.0.0+0 0" FAIL BUILD "0 0") 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 # Parsing
message(STATUS "\n\n===== Parsing =====") message(STATUS "\n\n===== Parsing =====")
@@ -63,30 +87,59 @@ test_parse("0.0.0+.0" FAIL)
# Modifying # Modifying
message(STATUS "\n\n===== Modifying =====") message(STATUS "\n\n===== Modifying =====")
# - Valid Cases # - Valid Cases
test_modify("1.2" "0.2" MAJOR 1) version(MODIFY _TEST "0.2" MAJOR 1)
test_modify("1.2" "0.2" MAJOR "+1") compare_test("1.2")
test_modify("1.2" "2.2" MAJOR "-1") version(MODIFY _TEST "0.2" MAJOR "+1")
test_modify("1.2" "1.0" MINOR 2) compare_test("1.2")
test_modify("1.2" "1.0" MINOR "+2") version(MODIFY _TEST "2.2" MAJOR "-1")
test_modify("1.2" "1.3" MINOR "-1") compare_test("1.2")
test_modify("1.2.3" "1.2" PATCH 3) version(MODIFY _TEST "1.0" MINOR 2)
test_modify("1.2.3" "1.2.2" PATCH "+1") compare_test("1.2")
test_modify("1.2.3" "1.2.4" PATCH "-1") version(MODIFY _TEST "1.0" MINOR "+2")
test_modify("1.2.0.4" "1.2" TWEAK 4) compare_test("1.2")
test_modify("1.2.3.4" "1.2.3.3" TWEAK "+1") version(MODIFY _TEST "1.3" MINOR "-1")
test_modify("1.2.3.4" "1.2.3.5" TWEAK "-1") compare_test("1.2")
test_modify("1.2-5" "1.2" COMPRESS PRERELEASE 5) version(MODIFY _TEST "1.2" PATCH 3)
test_modify("1.2a5" "1.2" COMPRESS PRERELEASE a5) compare_test("1.2.3")
test_modify("1.2+6" "1.2" COMPRESS BUILD 6) version(MODIFY _TEST "1.2.2" PATCH "+1")
test_modify("1.2-5+6" "1.2" COMPRESS PRERELEASE 5 BUILD 6) compare_test("1.2.3")
test_modify("1.2a5+6" "1.2" COMPRESS PRERELEASE a5 BUILD 6) 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 # - Invalid Cases
test_modify("0.0" "0.0" FAIL MAJOR -1) version(MODIFY _TEST "0.0" MAJOR -1)
test_modify("0.0" "0.0" FAIL MINOR -1) compare_test("0.0" FAIL)
test_modify("0.0" "0.0" FAIL PATCH -1) version(MODIFY _TEST "0.0" MINOR -1)
test_modify("0.0" "0.0" FAIL TWEAK -1) compare_test("0.0" FAIL)
test_modify("0.0" "0.0" FAIL COMPRESS PRERELEASE "#") version(MODIFY _TEST "0.0" PATCH -1)
test_modify("0.0" "0.0" FAIL COMPRESS BUILD "#") 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 # Comparing
message(STATUS "\n\n===== 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" "-PRERELEASE" "0.0-5")
test_compare("0.0+6" "+BUILD" "0.0") test_compare("0.0+6" "+BUILD" "0.0")
test_compare("0.0" "-BUILD" "0.0+6") 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")
+3 -86
View File
@@ -1,38 +1,13 @@
include("../version.cmake") include("../version.cmake")
function(test_generate) function(compare_test)
cmake_parse_arguments( cmake_parse_arguments(
PARSE_ARGV 1 PARSE_ARGV 1
_6edc8bbd _6edc8bbd
"COMPRESS;FAIL" "FAIL"
"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(GENERATE _TEST ${ARGS})")
if(_TEST_ERROR) if(_TEST_ERROR)
if(_6edc8bbd_FAIL) if(_6edc8bbd_FAIL)
message(STATUS "PASSED: '${ARGV0}'.\n\t${_TEST_ERROR}") message(STATUS "PASSED: '${ARGV0}'.\n\t${_TEST_ERROR}")
@@ -139,64 +114,6 @@ function(test_parse)
endif() endif()
endfunction() 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) function(test_compare)
cmake_parse_arguments( cmake_parse_arguments(
PARSE_ARGV 3 PARSE_ARGV 3