mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 08:25:32 +00:00
This change fixes a problem if both `master` and a branch added the same symbol with different version numbers. This causes a merge conflict which previously caused the API checks to output an error. However, if the version number in the .symbols file got updated since the base then it's no error which this change implements.
105 lines
3.1 KiB
Bash
Executable file
105 lines
3.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Unit tests for verify_api.inc.sh
|
|
set -eu
|
|
shopt -s inherit_errexit
|
|
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
|
|
## END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
. "${THIS_SCRIPT%/*}/test.inc.sh"
|
|
. "${KEYMAN_ROOT}/linux/scripts/verify_api.inc.sh"
|
|
|
|
|
|
fixture_setup() {
|
|
SONAME=1
|
|
LIB_NAME=libkeymancore
|
|
PKG_NAME="${LIB_NAME}${SONAME}"
|
|
EXIT_CODE=-1
|
|
}
|
|
|
|
test_compare_versions__less_patch() {
|
|
[[ $(compare_versions "17.0.197" "17.0.198") == -1 ]]
|
|
}
|
|
|
|
test_compare_versions__less_minor() {
|
|
[[ $(compare_versions "17.0.197" "17.1.197") == -1 ]]
|
|
}
|
|
|
|
test_compare_versions__less_major() {
|
|
[[ $(compare_versions "17.0.197" "18.0.0") == -1 ]]
|
|
}
|
|
|
|
test_compare_versions__greater() {
|
|
[[ $(compare_versions "17.0.198" "17.0.197") == 1 ]]
|
|
}
|
|
|
|
test_compare_versions__same() {
|
|
[[ $(compare_versions "17.0.197" "17.0.197") == 0 ]]
|
|
}
|
|
|
|
test_compare_versions__greater0() {
|
|
[[ $(compare_versions "17.0.197" "0") == 1 ]]
|
|
}
|
|
|
|
test_get_highest_version_in_symbols_file() {
|
|
local output
|
|
createBase alpha
|
|
echo ' (c++|optional)"typeinfo name for std::codecvt@Base" 17.0.244' >> linux/debian/libkeymancore1.symbols
|
|
git add linux/debian/libkeymancore1.symbols
|
|
git commit -m "API method added"
|
|
|
|
# Execute
|
|
output=$(get_highest_version_in_symbols_file "$(git rev-parse HEAD)")
|
|
echo "${output[*]}" # for logging
|
|
[[ "${output}" == "17.0.244" ]]
|
|
}
|
|
|
|
test_check_updated_version_number__LineInsertedInBranch_OK() {
|
|
local output
|
|
createBase alpha
|
|
|
|
local base_sha=$(git rev-parse master)
|
|
|
|
# Add a line in chore branch
|
|
sed -i 's/km_core_actions_dispose@Base 17.0.197/km_core_actions_dispose@Base 17.0.201/' linux/debian/libkeymancore1.symbols
|
|
echo " km_core_foo@Base 17.0.200" >> linux/debian/libkeymancore1.symbols
|
|
git add linux/debian/libkeymancore1.symbols
|
|
git commit -m "API method added in chore branch"
|
|
|
|
# Add a line in master branch
|
|
git checkout master
|
|
sed -i 's/km_core_actions_dispose@Base 17.0.197/km_core_actions_dispose@Base 17.0.199/' linux/debian/libkeymancore1.symbols
|
|
git add linux/debian/libkeymancore1.symbols
|
|
git commit -m "API method changed in master branch"
|
|
echo "readme" > README.md
|
|
git add README.md
|
|
git commit -m "Some change on master"
|
|
git checkout chore
|
|
|
|
# merge master into chore
|
|
git merge --strategy-option=ours master
|
|
|
|
echo "## Calling API verification"
|
|
pwd
|
|
GIT_SHA="$(git rev-parse HEAD)"
|
|
GIT_BASE="${base_sha}"
|
|
|
|
output=$(check_updated_version_number)
|
|
echo "${output[*]}" # for logging
|
|
[[ "${output[*]}" == *"OK: libkeymancore1.symbols file got updated with package version number"* ]]
|
|
}
|
|
|
|
|
|
fixture_setup
|
|
echo "(test logs are in /tmp/<testname>.log)"
|
|
run_test test_compare_versions__less_patch
|
|
run_test test_compare_versions__less_minor
|
|
run_test test_compare_versions__less_major
|
|
run_test test_compare_versions__greater
|
|
run_test test_compare_versions__same
|
|
run_test test_compare_versions__greater0
|
|
run_test test_get_highest_version_in_symbols_file
|
|
run_test test_check_updated_version_number__LineInsertedInBranch_OK
|