From d4713dbae3068c4a2f046329fc15c724f673be38 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 26 Mar 2025 10:07:22 +0700 Subject: [PATCH] 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. --- resources/build.sh | 1 + resources/build/minimum-versions.inc.sh | 10 ++--- resources/build/publish-minimum-versions.sh | 45 ++++++++++++++----- .../language-subtag-registry | 20 ++++++++- 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/resources/build.sh b/resources/build.sh index 578d4c79df..a3cf8b0dd5 100755 --- a/resources/build.sh +++ b/resources/build.sh @@ -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 diff --git a/resources/build/minimum-versions.inc.sh b/resources/build/minimum-versions.inc.sh index 09f217b0eb..8750f2f31f 100644 --- a/resources/build/minimum-versions.inc.sh +++ b/resources/build/minimum-versions.inc.sh @@ -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 diff --git a/resources/build/publish-minimum-versions.sh b/resources/build/publish-minimum-versions.sh index cf3f255767..2e9fb1a4a8 100755 --- a/resources/build/publish-minimum-versions.sh +++ b/resources/build/publish-minimum-versions.sh @@ -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 \ No newline at end of file diff --git a/resources/standards-data/language-subtag-registry/language-subtag-registry b/resources/standards-data/language-subtag-registry/language-subtag-registry index 9edd4c10b0..3f0de144e5 100644 --- a/resources/standards-data/language-subtag-registry/language-subtag-registry +++ b/resources/standards-data/language-subtag-registry/language-subtag-registry @@ -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