From d55a7c34359d33057a7e4f3d75294e656bf2ff1c Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Thu, 10 Nov 2022 18:38:30 +0530 Subject: [PATCH] test: add a test to ensure the correctness of timezone upgrades Currently, there's no way to know if a timezone upgrade PR is correct without building and testing the change locally. This change provides a solution for that. Tested in https://github.com/RaisinTen/node/pull/4. Signed-off-by: Darshan Sen PR-URL: https://github.com/nodejs/node/pull/45299 Reviewed-By: Antoine du Hamel --- .github/workflows/timezone-update.yml | 3 +++ test/fixtures/tz-version.txt | 1 + test/parallel/test-tz-version.js | 28 +++++++++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 test/fixtures/tz-version.txt create mode 100644 test/parallel/test-tz-version.js diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml index cebf43223e1046..27cbfd2946a1d2 100644 --- a/.github/workflows/timezone-update.yml +++ b/.github/workflows/timezone-update.yml @@ -36,6 +36,9 @@ jobs: - run: ./tools/update-timezone.mjs + - name: Update the expected timezone version in test + run: echo "${{ env.new_version }}" > test/fixtures/tz-version.txt + - name: Open Pull Request uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee # Create a PR or update the Action's existing PR env: diff --git a/test/fixtures/tz-version.txt b/test/fixtures/tz-version.txt new file mode 100644 index 00000000000000..13ad873c89cf2e --- /dev/null +++ b/test/fixtures/tz-version.txt @@ -0,0 +1 @@ +2022e diff --git a/test/parallel/test-tz-version.js b/test/parallel/test-tz-version.js new file mode 100644 index 00000000000000..6e4b14e1ac1880 --- /dev/null +++ b/test/parallel/test-tz-version.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasIntl) { + common.skip('missing Intl'); +} + +// Refs: https://github.com/nodejs/node/blob/1af63a90ca3a59ca05b3a12ad7dbea04008db7d9/configure.py#L1694-L1711 +if (process.config.variables.icu_path !== 'deps/icu-small') { + // If Node.js is configured to use its built-in ICU, it uses a strict subset + // of ICU formed using `tools/icu/shrink-icu-src.py`, which is present in + // `deps/icu-small`. It is not the same as configuring the build with + // `./configure --with-intl=small-icu`. The latter only uses a subset of the + // locales, i.e., it uses the English locale, `root,en`, by default and other + // locales can also be specified using the `--with-icu-locales` option. + common.skip('not using the icu data file present in deps/icu-small/source/data/in/icudt##l.dat.bz2'); +} + +const fixtures = require('../common/fixtures'); + +// This test ensures the correctness of the automated timezone upgrade PRs. + +const { strictEqual } = require('assert'); +const { readFileSync } = require('fs'); + +const expectedVersion = readFileSync(fixtures.path('tz-version.txt'), 'utf8').trim(); +strictEqual(process.versions.tz, expectedVersion);