Skip to content

Commit a71d810

Browse files
committed
Enhance test for finding related ECs
1 parent f4e855b commit a71d810

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/framework/easyconfig.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3390,6 +3390,45 @@ def test_find_related_easyconfigs(self):
33903390
res = [os.path.basename(x) for x in find_related_easyconfigs(test_easyconfigs, ec)]
33913391
self.assertEqual(res, ['toy-0.0-deps.eb'])
33923392

3393+
# Expected order:
3394+
# 1. Same toolchain & version
3395+
# 2. Same toolchain, different version
3396+
# 3. Any toolchain
3397+
# For each:
3398+
# exact version, major/minor version, major version, any version
3399+
ec['version'] = '1.2.3'
3400+
ec['toolchain'] = {'name': 'GCC', 'version': '12'}
3401+
3402+
# Use an empty folder to have full control over existing files
3403+
tmp_ec_dir = tempfile.mkdtemp()
3404+
files = []
3405+
# Create list of files in desired order,
3406+
# so we can remove them one by one to check that the search still finds the correct one
3407+
# 1. Same toolchain incl. version
3408+
# 2. Same toolchain, different version
3409+
# 3. Different toolchain
3410+
for toolchain in ('GCC-12', 'GCC-11', 'Clang-12'):
3411+
# Secondary criteria:
3412+
# a. Same version
3413+
# b. Same major.minor version
3414+
# c. Same major version
3415+
# d. Different version
3416+
for version in ('1.2.3', '1.2', '1', '4'):
3417+
filepath = os.path.join(tmp_ec_dir, '-'.join((ec['name'], version, toolchain)) + '.eb')
3418+
write_file(filepath, f"name = '{ec['name']}'")
3419+
files.append(filepath)
3420+
3421+
ec_name = f'{ec.name}-{ec.version}-{ec["toolchain"]["name"]}-{ec["toolchain"]["version"]}'
3422+
while files:
3423+
result = find_related_easyconfigs(tmp_ec_dir, ec)
3424+
# Only show basenames in error
3425+
result, expected, files_b = [[os.path.basename(f) for f in cur_files]
3426+
for cur_files in (result, [files[0]], files)]
3427+
self.assertEqual(result, expected,
3428+
msg='Found %s but expected %s when searching for "%s" in %s'
3429+
% (result, expected, ec_name, files_b))
3430+
remove_file(files.pop(0))
3431+
33933432
# no matches for unknown software name
33943433
ec['name'] = 'nosuchsoftware'
33953434
self.assertEqual(find_related_easyconfigs(test_easyconfigs, ec), [])

0 commit comments

Comments
 (0)