test-versioning.sh 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #!/bin/sh
  2. # Copyright 2022 Collabora Ltd.
  3. # SPDX-License-Identifier: Zlib
  4. set -eu
  5. cd `dirname $0`/..
  6. ref_major=$(sed -ne 's/^#define SDL_MAJOR_VERSION *//p' include/SDL3/SDL_version.h)
  7. ref_minor=$(sed -ne 's/^#define SDL_MINOR_VERSION *//p' include/SDL3/SDL_version.h)
  8. ref_micro=$(sed -ne 's/^#define SDL_PATCHLEVEL *//p' include/SDL3/SDL_version.h)
  9. ref_version="${ref_major}.${ref_minor}.${ref_micro}"
  10. tests=0
  11. failed=0
  12. ok () {
  13. tests=$(( tests + 1 ))
  14. echo "ok - $*"
  15. }
  16. not_ok () {
  17. tests=$(( tests + 1 ))
  18. echo "not ok - $*"
  19. failed=1
  20. }
  21. major=$(sed -ne 's/^set(SDL_MAJOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  22. minor=$(sed -ne 's/^set(SDL_MINOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  23. micro=$(sed -ne 's/^set(SDL_MICRO_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  24. version="${major}.${minor}.${micro}"
  25. if [ "$ref_version" = "$version" ]; then
  26. ok "CMakeLists.txt $version"
  27. else
  28. not_ok "CMakeLists.txt $version disagrees with SDL_version.h $ref_version"
  29. fi
  30. major=$(sed -ne 's/.*SDL_MAJOR_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  31. minor=$(sed -ne 's/.*SDL_MINOR_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  32. micro=$(sed -ne 's/.*SDL_MICRO_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  33. version="${major}.${minor}.${micro}"
  34. if [ "$ref_version" = "$version" ]; then
  35. ok "SDLActivity.java $version"
  36. else
  37. not_ok "android-project/app/src/main/java/org/libsdl/app/SDLActivity.java $version disagrees with SDL_version.h $ref_version"
  38. fi
  39. tuple=$(sed -ne 's/^ *FILEVERSION *//p' src/main/windows/version.rc | tr -d '\r')
  40. ref_tuple="${ref_major},${ref_minor},${ref_micro},0"
  41. if [ "$ref_tuple" = "$tuple" ]; then
  42. ok "version.rc FILEVERSION $tuple"
  43. else
  44. not_ok "version.rc FILEVERSION $tuple disagrees with SDL_version.h $ref_tuple"
  45. fi
  46. tuple=$(sed -ne 's/^ *PRODUCTVERSION *//p' src/main/windows/version.rc | tr -d '\r')
  47. if [ "$ref_tuple" = "$tuple" ]; then
  48. ok "version.rc PRODUCTVERSION $tuple"
  49. else
  50. not_ok "version.rc PRODUCTVERSION $tuple disagrees with SDL_version.h $ref_tuple"
  51. fi
  52. tuple=$(sed -Ene 's/^ *VALUE "FileVersion", "([0-9, ]*)\\0"\r?$/\1/p' src/main/windows/version.rc | tr -d '\r')
  53. ref_tuple="${ref_major}, ${ref_minor}, ${ref_micro}, 0"
  54. if [ "$ref_tuple" = "$tuple" ]; then
  55. ok "version.rc FileVersion $tuple"
  56. else
  57. not_ok "version.rc FileVersion $tuple disagrees with SDL_version.h $ref_tuple"
  58. fi
  59. tuple=$(sed -Ene 's/^ *VALUE "ProductVersion", "([0-9, ]*)\\0"\r?$/\1/p' src/main/windows/version.rc | tr -d '\r')
  60. if [ "$ref_tuple" = "$tuple" ]; then
  61. ok "version.rc ProductVersion $tuple"
  62. else
  63. not_ok "version.rc ProductVersion $tuple disagrees with SDL_version.h $ref_tuple"
  64. fi
  65. version=$(sed -Ene '/CFBundleShortVersionString/,+1 s/.*<string>(.*)<\/string>.*/\1/p' Xcode/SDL/Info-Framework.plist)
  66. if [ "$ref_version" = "$version" ]; then
  67. ok "Info-Framework.plist CFBundleShortVersionString $version"
  68. else
  69. not_ok "Info-Framework.plist CFBundleShortVersionString $version disagrees with SDL_version.h $ref_version"
  70. fi
  71. version=$(sed -Ene '/CFBundleVersion/,+1 s/.*<string>(.*)<\/string>.*/\1/p' Xcode/SDL/Info-Framework.plist)
  72. if [ "$ref_version" = "$version" ]; then
  73. ok "Info-Framework.plist CFBundleVersion $version"
  74. else
  75. not_ok "Info-Framework.plist CFBundleVersion $version disagrees with SDL_version.h $ref_version"
  76. fi
  77. version=$(sed -Ene 's/Title SDL (.*)/\1/p' Xcode/SDL/pkg-support/SDL.info)
  78. if [ "$ref_version" = "$version" ]; then
  79. ok "SDL.info Title $version"
  80. else
  81. not_ok "SDL.info Title $version disagrees with SDL_version.h $ref_version"
  82. fi
  83. marketing=$(sed -Ene 's/.*MARKETING_VERSION = (.*);/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  84. ref="$ref_version
  85. $ref_version"
  86. if [ "$ref" = "$marketing" ]; then
  87. ok "project.pbxproj MARKETING_VERSION is consistent"
  88. else
  89. not_ok "project.pbxproj MARKETING_VERSION is inconsistent, expected $ref, got $marketing"
  90. fi
  91. # For simplicity this assumes we'll never break ABI before SDL 3.
  92. dylib_compat=$(sed -Ene 's/.*DYLIB_COMPATIBILITY_VERSION = (.*);$/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  93. case "$ref_minor" in
  94. (*[02468])
  95. major="$(( ref_minor * 100 + 1 ))"
  96. minor="0"
  97. ;;
  98. (*)
  99. major="$(( ref_minor * 100 + ref_micro + 1 ))"
  100. minor="0"
  101. ;;
  102. esac
  103. ref="${major}.${minor}.0
  104. ${major}.${minor}.0
  105. ${major}.${minor}.0
  106. ${major}.${minor}.0"
  107. if [ "$ref" = "$dylib_compat" ]; then
  108. ok "project.pbxproj DYLIB_COMPATIBILITY_VERSION is consistent"
  109. else
  110. not_ok "project.pbxproj DYLIB_COMPATIBILITY_VERSION is inconsistent, expected $ref, got $dylib_compat"
  111. fi
  112. dylib_cur=$(sed -Ene 's/.*DYLIB_CURRENT_VERSION = (.*);$/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  113. case "$ref_minor" in
  114. (*[02468])
  115. major="$(( ref_minor * 100 + 1 ))"
  116. minor="$ref_micro"
  117. ;;
  118. (*)
  119. major="$(( ref_minor * 100 + ref_micro + 1 ))"
  120. minor="0"
  121. ;;
  122. esac
  123. ref="${major}.${minor}.0
  124. ${major}.${minor}.0
  125. ${major}.${minor}.0
  126. ${major}.${minor}.0"
  127. if [ "$ref" = "$dylib_cur" ]; then
  128. ok "project.pbxproj DYLIB_CURRENT_VERSION is consistent"
  129. else
  130. not_ok "project.pbxproj DYLIB_CURRENT_VERSION is inconsistent, expected $ref, got $dylib_cur"
  131. fi
  132. echo "1..$tests"
  133. exit "$failed"