chore(common): test minimum-versions is up to date

Rewrite of publish-minimum-versions.sh to add some baseline tests for
up-to-date status of minimum-versions.md, and adds first test against
source data, where we have it, with language-subtag-registry.
This commit is contained in:
Marc Durdin 2025-03-26 10:07:22 +07:00
parent 7caaeb268f
commit d4713dbae3
4 changed files with 60 additions and 16 deletions

View file

@ -15,5 +15,6 @@ builder_parse "$@"
if builder_start_action test; then
./build/test/test.sh
./build/publish-minimum-versions.sh test
builder_finish_action success test
fi

View file

@ -43,8 +43,8 @@ KEYMAN_MIN_VERSION_ANDROID_SDK=21
KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER=noble # Ubuntu 24.04 Noble
# Data versions -- see resources/standards-data/readme.md
KEYMAN_VERSION_CLDR=45 # LDML Keyboards version
KEYMAN_VERSION_ISO639_3=2024-05-22 # Date of last import
KEYMAN_VERSION_LANGTAGS=2025-02-18 # Date of last import
KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY=2024-05-16 # Date of last import
KEYMAN_VERSION_UNICODE=16.0.0 # UCD + related data
KEYMAN_VERSION_CLDR=45 # LDML Keyboards version
KEYMAN_VERSION_ISO639_3=2024-05-22 # Date of last import
KEYMAN_VERSION_LANGTAGS=2025-02-18 # Date of last import
KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY=2025-03-10 # Date from first line of language-subtag-registry
KEYMAN_VERSION_UNICODE=16.0.0 # UCD + related data

View file

@ -1,10 +1,5 @@
#!/usr/bin/env bash
set -e
set -u
#
# Usage: publish-minimum-versions.sh
# Usage: ./publish-minimum-versions.sh build test
#
# Parses minimum-versions.inc.sh to update template file /docs/minimum-versions.md.in.
# If /docs/minimum-versions.md is changed, commit and push changes
@ -13,12 +8,17 @@ set -u
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/build-utils.sh"
. "${THIS_SCRIPT%/*}/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
. "${KEYMAN_ROOT}/resources/build/minimum-versions.inc.sh"
function generate_table {
builder_describe "Build and test minimum-versions" \
clean build test
builder_parse "$@"
generate_table() {
echo ""
echo "## minimum-versions.inc.sh Variables"
echo ""
@ -37,5 +37,30 @@ function generate_table {
echo "> ### This file is auto-generated by publish-minimum-versions.sh. Do not modify"
}
cp "$KEYMAN_ROOT/docs/minimum-versions.md.in" "$KEYMAN_ROOT/docs/minimum-versions.md"
generate_table >> "$KEYMAN_ROOT/docs/minimum-versions.md"
do_build() {
cp "$KEYMAN_ROOT/docs/minimum-versions.md.in" "$KEYMAN_ROOT/docs/minimum-versions.md"
generate_table >> "$KEYMAN_ROOT/docs/minimum-versions.md"
}
do_test() {
# Verify that minimum-versions.md matches the generated data
local new_table="$(mktemp)"
cp "$KEYMAN_ROOT/docs/minimum-versions.md.in" "$new_table"
generate_table >> "$new_table"
diff --suppress-common-lines -yw "$KEYMAN_ROOT/docs/minimum-versions.md" "$new_table" || \
builder_die "minimum-versions.md is not up to date. Please run 'publish-minimum-versions.sh build'"
# TODO: this should have a test for each of the known machine-extractable versions.
# language-subtag-registry
local NEW_KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY="$(head ../standards-data/language-subtag-registry/language-subtag-registry -n 1 | cut -d" " -f 2 -)"
echo "$NEW_KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY"
if [[ "$NEW_KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY" != "$KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY" ]]; then
builder_die "language-subtag-registry is version '$NEW_KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY' but minimum-version.inc.sh has version '$KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY'"
fi
}
builder_run_action clean rm -f "$KEYMAN_ROOT/docs/minimum-versions.md"
builder_run_action build do_build
builder_run_action test do_test

View file

@ -1,4 +1,4 @@
File-Date: 2025-02-06
File-Date: 2025-03-10
%%
Type: language
Subtag: aa
@ -47979,6 +47979,12 @@ Comments: Written standard developed by Romanilha in 1853 and used by
dóu Po, Escolo Gaston Febus, and others
%%
Type: variant
Subtag: hanoi
Description: The Hà Nội variant of Vietnamese
Added: 2025-03-10
Prefix: vi
%%
Type: variant
Subtag: hepburn
Description: Hepburn romanization
Added: 2009-10-01
@ -48009,6 +48015,12 @@ Added: 2017-03-14
Prefix: eo
%%
Type: variant
Subtag: huett
Description: The Huế (province Thừa Thiên) variant of Vietnamese
Added: 2025-03-10
Prefix: vi
%%
Type: variant
Subtag: ijekavsk
Description: Serbian with Ijekavian pronunciation
Prefix: sr
@ -48335,6 +48347,12 @@ Prefix: rm
Comments: Supraregional Romansh written standard
%%
Type: variant
Subtag: saigon
Description: The Sài Gòn variant of Vietnamese
Added: 2025-03-10
Prefix: vi
%%
Type: variant
Subtag: scotland
Description: Scottish Standard English
Added: 2007-08-31