Ordering processing for volume ID substitutions
Related: https://pagure.io/pungi/issue/840 Signed-off-by: Ondrej Nosek <onosek@redhat.com>
This commit is contained in:
		
							parent
							
								
									7ee920a085
								
							
						
					
					
						commit
						caed78e11a
					
				| @ -322,7 +322,10 @@ def get_variant_data(conf, var_name, variant, keys=None): | ||||
| 
 | ||||
| 
 | ||||
| def _apply_substitutions(compose, volid): | ||||
|     for k, v in compose.conf['volume_id_substitutions'].items(): | ||||
|     substitutions = compose.conf['volume_id_substitutions'].items() | ||||
|     # processing should start with the longest pattern, otherwise, we could | ||||
|     # unexpectedly replace a substring of that longest pattern | ||||
|     for k, v in sorted(substitutions, reverse=True): | ||||
|         volid = volid.replace(k, v) | ||||
|     return volid | ||||
| 
 | ||||
|  | ||||
| @ -222,6 +222,27 @@ class TestVolumeIdGenerator(unittest.TestCase): | ||||
|         self.assertIn('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', str(ctx.exception)) | ||||
|         self.assertIn('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', str(ctx.exception)) | ||||
| 
 | ||||
|     @mock.patch('pungi.compose.ComposeInfo') | ||||
|     def test_apply_substitutions(self, ci): | ||||
|         all_keys = [ | ||||
|             ('Fedora-WorkstationOstree-ostree-x86_64-rawhide', 'Fedora-WS-ostree-x86_64-rawhide'), | ||||
|             ('Fedora-WorkstationOstree-ostree-x86_64-Rawhide', 'Fedora-WS-ostree-x86_64-rawh'), | ||||
|             ('x86_64-compose_id-20160107', 'x86_64-compose_id-20160107'), | ||||
|             ('x86_64-compose_id-20160107-Alpha', 'x86_64-compose_id-20160107-A'), | ||||
|         ] | ||||
|         for volid, expected in all_keys: | ||||
|             conf = { | ||||
|                 'volume_id_substitutions': { | ||||
|                     'Rawhide': 'rawh', | ||||
|                     'WorkstationOstree': 'WS', | ||||
|                     'Workstation': 'WS', | ||||
|                     'Alpha': 'A', | ||||
|                 } | ||||
|             } | ||||
|             c = compose.Compose(conf, self.tmp_dir) | ||||
|             transformed_volid = util._apply_substitutions(c, volid) | ||||
|             self.assertEqual(transformed_volid, expected) | ||||
| 
 | ||||
| 
 | ||||
| class TestFindOldCompose(unittest.TestCase): | ||||
|     def setUp(self): | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user