test-versioning.sh 5.2 KB

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