Skip to content

Commit

Permalink
test: add a test to ensure the correctness of timezone upgrades
Browse files Browse the repository at this point in the history
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 RaisinTen/node#4.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
PR-URL: nodejs/node#45299
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
RaisinTen authored and guangwong committed Jan 3, 2023
1 parent be8aa9f commit b697486
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/timezone-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/tz-version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2022e
28 changes: 28 additions & 0 deletions test/parallel/test-tz-version.js
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit b697486

Please sign in to comment.