From f13f889956260b516348117ce0199c5f8cb1f74e 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 Backport-PR-URL: https://github.com/nodejs/node/pull/45521 Reviewed-By: Antoine du Hamel Fixes: https://github.com/nodejs/node/issues/45276 --- test/fixtures/tz-version.txt | 1 + test/parallel/test-tz-version.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 test/fixtures/tz-version.txt create mode 100644 test/parallel/test-tz-version.js 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..855ffd22890095 --- /dev/null +++ b/test/parallel/test-tz-version.js @@ -0,0 +1,30 @@ +'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);