From 502822208798df451ed26742a24d577fc658350a Mon Sep 17 00:00:00 2001 From: "Shane F. Carr" Date: Thu, 25 Jun 2026 21:09:07 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Fix=20CI=20E2E=20harness=20bugs?= =?UTF-8?q?=20and=20shell=20compatibility=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit fixes several issues in the E2E test harness that were causing CI failures and preventing some tests from running: 1. Fixes the EXIT trap in generateDataAndRun.sh to append '|| true' to the kill command, preventing exit code pollution when the monitor is already dead. 2. Replaces 'source' with '.' in all NVM loading commands in python generators and genData100.sh to ensure compatibility with 'dash' (the default /bin/sh in Ubuntu CI). 3. Fixes a mismatched format string bug in message_fmt2.py and datetime_fmt.py logging calls to prevent TypeErrors during error reporting. 4. Removes dead code in relativedatetime_fmt.py and fixes a redundant assignment typo in list_fmt.py. Co-authored-by: Gemini <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- genData100.sh | 4 ++-- generateDataAndRun.sh | 2 +- testgen/generators/datetime_fmt.py | 4 ++-- testgen/generators/list_fmt.py | 4 ++-- testgen/generators/message_fmt2.py | 2 +- testgen/generators/relativedatetime_fmt.py | 6 +----- testgen/generators/segmenter.py | 2 +- 7 files changed, 10 insertions(+), 14 deletions(-) diff --git a/genData100.sh b/genData100.sh index 6735462b..29186d23 100755 --- a/genData100.sh +++ b/genData100.sh @@ -13,7 +13,7 @@ logrotate -s logrotate.state logrotate.conf ########## export NVM_DIR=$HOME/.nvm; -source $NVM_DIR/nvm.sh; +. $NVM_DIR/nvm.sh; export RUSTUP_TOOLCHAIN=1.83 @@ -105,7 +105,7 @@ echo "Created $TEMP_DIR/testOutput" pushd testdriver # Set to use NVM -source "$HOME/.nvm/nvm.sh" +. "$HOME/.nvm/nvm.sh" echo "RUNNING FROM $source_file" diff --git a/generateDataAndRun.sh b/generateDataAndRun.sh index fa8b717f..a4f2183c 100755 --- a/generateDataAndRun.sh +++ b/generateDataAndRun.sh @@ -21,7 +21,7 @@ logrotate -s logrotate.state logrotate.conf sleep 30 done) & MONITOR_PID=$! -trap 'kill $MONITOR_PID 2>/dev/null' EXIT +trap 'kill $MONITOR_PID 2>/dev/null || true' EXIT ########## # Setup (generate) test data & expected values diff --git a/testgen/generators/datetime_fmt.py b/testgen/generators/datetime_fmt.py index 06ce79f3..f33046c9 100644 --- a/testgen/generators/datetime_fmt.py +++ b/testgen/generators/datetime_fmt.py @@ -135,7 +135,7 @@ def generate_datetime_data_from_cldr(self, dt_json_path, run_limit=-1): self.saveJsonFile(dt_test_path, test_obj, indent=2) self.saveJsonFile(dt_verify_path, verify_obj, indent=2) except BaseException as err: - logging.error('!!! %s: Failure to save file %s', err, ) + logging.error('!!! %s: Failure to save files: %s and %s', err, dt_test_path, dt_verify_path) return None def process_test_data(self): @@ -164,7 +164,7 @@ def process_test_data(self): # Set up Node version and call the generator # Add temporal to the package. nvm_version = icu_nvm_versions[self.icu_version] - generate_command = 'source ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; npm ci; node generators/datetime_gen.js %s %s' % ( + generate_command = '. ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; npm ci; node generators/datetime_gen.js %s %s' % ( nvm_version, nvm_version, '-run_limit', self.run_limit) result = subprocess.run(generate_command, shell=True) diff --git a/testgen/generators/list_fmt.py b/testgen/generators/list_fmt.py index 8b26a3c1..3599563a 100644 --- a/testgen/generators/list_fmt.py +++ b/testgen/generators/list_fmt.py @@ -34,11 +34,11 @@ def process_test_data(self): # Set up Node version and call the generator nvm_version = icu_nvm_versions[self.icu_version] - generate_command = 'source ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ + generate_command = '. ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ (nvm_version, nvm_version, ' '.join(exec_list)) logging.debug('Running this command: %s', generate_command) - result = result = subprocess.run(generate_command, shell=True) + result = subprocess.run(generate_command, shell=True) # Move results to the right directory mv_command = 'mv list_fmt*.json %s' % self.icu_version diff --git a/testgen/generators/message_fmt2.py b/testgen/generators/message_fmt2.py index 68a8508d..4e79c472 100644 --- a/testgen/generators/message_fmt2.py +++ b/testgen/generators/message_fmt2.py @@ -55,7 +55,7 @@ def process_test_data(self): try: validate(src_data, json_schema) except ValidationError as err: - logging.error("Problem validating JSON: %s against schema", + logging.error("Problem validating JSON: %s against schema %s", test_file_path, json_schema_path) logging.error(err) diff --git a/testgen/generators/relativedatetime_fmt.py b/testgen/generators/relativedatetime_fmt.py index e6eeeeeb..f6ecabb3 100644 --- a/testgen/generators/relativedatetime_fmt.py +++ b/testgen/generators/relativedatetime_fmt.py @@ -35,10 +35,6 @@ def process_test_data(self): exec_list.append(str(self.run_limit)) exec_command = ' '.join(exec_list) - nodejs_version = icu_nvm_versions[self.icu_version] - source_command = 'source ~/.nvm/nvm.sh; nvm run %s; %s' % ( - nodejs_version, exec_command) - if self.icu_version not in icu_nvm_versions: logging.warning('Generating relative date/time data not configured for icu version %s', self.icu_version) return False @@ -47,7 +43,7 @@ def process_test_data(self): # Set up Node version and call the generator nvm_version = icu_nvm_versions[self.icu_version] - generate_command = 'source ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ + generate_command = '. ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ (nvm_version, nvm_version, ' '.join(exec_list)) result = subprocess.run(generate_command, shell=True) diff --git a/testgen/generators/segmenter.py b/testgen/generators/segmenter.py index e46692b7..5e940465 100644 --- a/testgen/generators/segmenter.py +++ b/testgen/generators/segmenter.py @@ -35,7 +35,7 @@ def process_test_data(self): # Set up Node version and call the generator nvm_version = icu_nvm_versions[self.icu_version] - generate_command = 'source ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ + generate_command = '. ~/.nvm/nvm.sh; nvm install %s; nvm use %s --silent; %s' %\ (nvm_version, nvm_version, ' '.join(exec_list)) logging.debug('Running this command: %s', generate_command)