2929@author: Kenneth Hoste (Ghent University)
3030@author: Maxime Boissonneault (Compute Canada)
3131@author: Jan Andre Reuter (Juelich Supercomputing Centre)
32+ @author: Alexander Grund (TU Dresden)
3233"""
3334import copy
3435import fileinput
36+ import itertools
3537import os
3638import re
3739import shutil
@@ -3346,6 +3348,7 @@ def run_checks():
33463348 run_checks ()
33473349
33483350 # full check also catches checksum issues with extensions
3351+ eb .json_checksums = {} # Avoid picking up checksums from JSON file
33493352 res = eb .check_checksums ()
33503353 self .assertEqual (len (res ), 4 )
33513354 run_checks ()
@@ -3482,6 +3485,12 @@ def run_checks():
34823485 ('ext-ok3', version, {
34833486 'nosource': True
34843487 }),
3488+ ('ext-ok1', version, {
3489+ 'checksums': ['44332000aa33b99ad1e00cbd1a7da769220d74647060a10e807b916d73ea27bc']
3490+ }),
3491+ ('ext-ok2', version, {
3492+ 'nosource': True
3493+ }),
34853494 ]
34863495 """ )
34873496 self .writeEC ()
@@ -3492,6 +3501,27 @@ def run_checks():
34923501 for ext , line in zip (extensions , res ):
34933502 self .assertIn (ext_error_tmpl % ext , line )
34943503
3504+ # Gradually add checksums to JSON dict and test that the associated extension checksums are now fine
3505+ sha256_cs = '81a3accc894592152f81814fbf133d39afad52885ab52c25018722c7bda92487' # Valid format only
3506+ eb .json_checksums = {'ext1-0.0.tar.gz' : sha256_cs }
3507+ for ext , line in itertools .zip_longest (extensions [1 :], eb .check_checksums (), fillvalue = '' ):
3508+ self .assertIn (ext_error_tmpl % ext , line )
3509+ eb .json_checksums ['ext2.zip' ] = sha256_cs
3510+ for ext , line in itertools .zip_longest (extensions [1 :], eb .check_checksums (), fillvalue = '' ):
3511+ self .assertIn (ext_error_tmpl % ext , line )
3512+ eb .json_checksums ['ext2.patch' ] = sha256_cs
3513+ for ext , line in itertools .zip_longest (extensions [2 :], eb .check_checksums (), fillvalue = '' ):
3514+ self .assertIn (ext_error_tmpl % ext , line )
3515+ eb .json_checksums ['ext3.zip' ] = sha256_cs
3516+ for ext , line in itertools .zip_longest (extensions [2 :], eb .check_checksums (), fillvalue = '' ):
3517+ self .assertIn (ext_error_tmpl % ext , line )
3518+ eb .json_checksums ['ext3.patch' ] = sha256_cs
3519+ for ext , line in itertools .zip_longest (extensions [3 :], eb .check_checksums (), fillvalue = '' ):
3520+ self .assertIn (ext_error_tmpl % ext , line )
3521+ eb .json_checksums ['ext-uniq_1-3.14.zip' ] = sha256_cs
3522+ eb .json_checksums ['ext-uniq_1.patch' ] = sha256_cs
3523+ self .assertEqual (eb .check_checksums (), [])
3524+
34953525 # more checks for check_checksums_for method, which also takes regular dict as input
34963526 self .assertEqual (eb .check_checksums_for ({}), [])
34973527 expected = f"Checksums missing for one or more sources/patches in { os .path .basename (self .eb_file )} : "
0 commit comments