Files
Michael Fabian 'Xaymar' Dirks 4ab58b18ac tests: Fix some command generation problems
Can't figure out how to generate this correctly. 🤷
2023-04-23 01:45:55 +02:00

167 lines
5.9 KiB
CMake

cmake_minimum_required(VERSION 3.23)
project(cmake-version)
include("helpers.cmake")
# ToDo: Add even more test cases, as we don't want a burning bar because someone asked where the toilet is.
# Generation
message(STATUS "\n\n===== Generation =====")
# - Valid Cases
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
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 =====")
# - Valid Cases
test_parse("1.2" MAJOR 1 MINOR 2)
test_parse("1.2.3" MAJOR 1 MINOR 2 PATCH 3)
test_parse("1.2.3.4" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4)
test_parse("1.2-5" MAJOR 1 MINOR 2 PRERELEASE 5)
test_parse("1.2.3-5" MAJOR 1 MINOR 2 PATCH 3 PRERELEASE 5)
test_parse("1.2.3.4-5" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 PRERELEASE 5)
test_parse("1.2a5" MAJOR 1 MINOR 2 PRERELEASE a5)
test_parse("1.2.3a5" MAJOR 1 MINOR 2 PATCH 3 PRERELEASE a5)
test_parse("1.2.3.4a5" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 PRERELEASE a5)
test_parse("1.2+6" MAJOR 1 MINOR 2 BUILD 6)
test_parse("1.2.3+6" MAJOR 1 MINOR 2 PATCH 3 BUILD 6)
test_parse("1.2.3.4+6" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 BUILD 6)
test_parse("1.2-5+6" MAJOR 1 MINOR 2 PRERELEASE 5 BUILD 6)
test_parse("1.2.3-5+6" MAJOR 1 MINOR 2 PATCH 3 PRERELEASE 5 BUILD 6)
test_parse("1.2.3.4-5+6" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 PRERELEASE 5 BUILD 6)
test_parse("1.2a5+6" MAJOR 1 MINOR 2 PRERELEASE a5 BUILD 6)
test_parse("1.2.3a5+6" MAJOR 1 MINOR 2 PATCH 3 PRERELEASE a5 BUILD 6)
test_parse("1.2.3.4a5+6" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 PRERELEASE a5 BUILD 6)
test_parse("1.2a5.b5+6.66" MAJOR 1 MINOR 2 PRERELEASE "a5;b5" BUILD "6;66")
test_parse("1.2.3a5.b5+6.66" MAJOR 1 MINOR 2 PATCH 3 PRERELEASE "a5;b5" BUILD "6;66")
test_parse("1.2.3.4a5.b5+6.66" MAJOR 1 MINOR 2 PATCH 3 TWEAK 4 PRERELEASE "a5;b5" BUILD "6;66")
# - Invalid Cases
test_parse("" FAIL)
test_parse("cmake" FAIL)
test_parse("0" FAIL)
test_parse("-1.0.0" FAIL)
test_parse("11.bad.0" FAIL)
test_parse("0.0.0+.0" FAIL)
# Modifying
message(STATUS "\n\n===== Modifying =====")
# - Valid Cases
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
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 =====")
# - Base Components Comparison
test_compare("0.0" "" "0.0")
test_compare("1.0" ">MAJOR" "0.0")
test_compare("0.0" "<MAJOR" "1.0")
test_compare("0.2" ">MINOR" "0.0")
test_compare("0.0" "<MINOR" "0.2")
test_compare("0.0.3" ">PATCH" "0.0.0")
test_compare("0.0.0" "<PATCH" "0.0.3")
test_compare("0.0.0.4" ">TWEAK" "0.0.0.0")
test_compare("0.0.0.0" "<TWEAK" "0.0.0.4")
test_compare("0.0-5" "PRERELEASE" "0.0-6")
test_compare("0.0+6" "BUILD" "0.0+7")
# - Missing Components Tests
test_compare("0.0.3" "+PATCH" "0.0")
test_compare("0.0" "-PATCH" "0.0.3")
test_compare("0.0.0.4" "+TWEAK" "0.0.0")
test_compare("0.0.0" "-TWEAK" "0.0.0.4")
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")