Describe the Bug
The test harness currently overwrites test outputs when multiple versions of the same executor (e.g., rust for ICU4X) are configured to run on the same ICU version.
Details
In run_config.json, it is possible to configure multiple versions of the same executor to run on the same ICU version. For example:
rust2.1 (ICU4X 2.1) targeting icu78
rust2.2 (ICU4X 2.2) targeting icu78
Both of these entries use "exec": "rust" and "icu_version": "icu78".
During the execution of generateDataAndRun.sh (or genData100.sh), the harness runs these sequentially:
rust2.1 runs and writes its output to TEMP_DATA/testOutput/rust/icu78/.
rust2.2 runs immediately after and writes its output to the exact same directory TEMP_DATA/testOutput/rust/icu78/, completely overwriting the outputs of rust2.1.
When the verifier runs, it only finds the outputs of rust2.2. The results for rust2.1 are completely lost and do not appear on the dashboard.
This also affected rust2.0 and rust2.0-beta2 on icu77.
Root Cause
In testdriver/testplan.py, the outputFilePath is determined without incorporating the platformVersion (which is commented out):
self.outputFilePath = os.path.join(self.options.file_base,
self.options.output_path,
self.test_lang,
self.options.icu_version,
# self.platformVersion,
self.testData.testDataFilename)
Uncommenting self.platformVersion would resolve the overwrite, but it requires refactoring verifier/verifier.py to recursively scan for version directories instead of assuming they map directly to ICU versions.
Temporary Workaround
We have temporarily removed the older conflicting versions (rust2.1 and rust2.0-beta2) from run_config.json to avoid redundant runs and data loss.
Describe the Bug
The test harness currently overwrites test outputs when multiple versions of the same executor (e.g.,
rustfor ICU4X) are configured to run on the same ICU version.Details
In
run_config.json, it is possible to configure multiple versions of the same executor to run on the same ICU version. For example:rust2.1(ICU4X 2.1) targetingicu78rust2.2(ICU4X 2.2) targetingicu78Both of these entries use
"exec": "rust"and"icu_version": "icu78".During the execution of
generateDataAndRun.sh(orgenData100.sh), the harness runs these sequentially:rust2.1runs and writes its output toTEMP_DATA/testOutput/rust/icu78/.rust2.2runs immediately after and writes its output to the exact same directoryTEMP_DATA/testOutput/rust/icu78/, completely overwriting the outputs ofrust2.1.When the verifier runs, it only finds the outputs of
rust2.2. The results forrust2.1are completely lost and do not appear on the dashboard.This also affected
rust2.0andrust2.0-beta2onicu77.Root Cause
In
testdriver/testplan.py, theoutputFilePathis determined without incorporating theplatformVersion(which is commented out):Uncommenting
self.platformVersionwould resolve the overwrite, but it requires refactoringverifier/verifier.pyto recursively scan for version directories instead of assuming they map directly to ICU versions.Temporary Workaround
We have temporarily removed the older conflicting versions (
rust2.1andrust2.0-beta2) fromrun_config.jsonto avoid redundant runs and data loss.