Skip to content

Commit b03fdac

Browse files
authored
Merge pull request #401 from PrestaShop/parse-version
Adapt VersionManager::parse_version and its tests
2 parents de07d30 + ee423af commit b03fdac

File tree

2 files changed

+43
-5
lines changed

2 files changed

+43
-5
lines changed

prestashop_docker/version_manager.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,22 +62,24 @@ def parse_version(self, version):
6262
@rtype: dict
6363
'''
6464

65-
data = self.get_version_from_string(version)
66-
if data is None or not (self.directory_path / data['ps_version']).exists():
65+
# Initial PS version(can also be a branch like 9.0.x)
66+
split_version = self.split_prestashop_version(version)
67+
if split_version is None or not (self.directory_path / split_version['version']).exists():
6768
raise ValueError('{} is not a valid version'.format(version))
6869

69-
if data['container_version'] is None:
70+
data = self.get_version_from_string(version)
71+
if data is None or data['container_version'] is None:
7072
containers = ('fpm', 'apache',)
7173
else:
7274
containers = (data['container_version'],)
7375

74-
ps_version_path = self.directory_path / data['ps_version']
76+
ps_version_path = self.directory_path / split_version['version']
7577
result = {}
7678
for php_version in data['php_versions']:
7779
for container in containers:
7880
container_path = ps_version_path / (php_version + '-' + container)
7981
if container_path.exists():
80-
result[self.create_version(data['ps_version'], php_version, container)] = str(container_path)
82+
result[self.create_version(split_version['version'], php_version, container)] = str(container_path)
8183

8284
return result
8385

tests/prestashop_docker/test_version_manager.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ def setUp(self, docker_api):
2727
self.fs.create_dir('/tmp/images/9.0.x/8.1-apache')
2828
self.fs.create_dir('/tmp/images/9.0.x/8.2-fpm')
2929
self.fs.create_dir('/tmp/images/9.0.x/8.2-apache')
30+
self.fs.create_dir('/tmp/images/9.0.x/8.3-fpm')
31+
self.fs.create_dir('/tmp/images/9.0.x/8.3-apache')
3032
self.fs.create_dir('/tmp/images/nightly/7.1-fpm')
3133
self.fs.create_dir('/tmp/images/nightly/7.1-apache')
3234
self.version_manager = self.create_instance()
@@ -186,6 +188,11 @@ def test_get_version_from_string_with_container_version(self):
186188
{'ps_version': '8.0.0', 'branch_version': '8.0.x', 'php_versions': ('7.2',), 'container_version': None},
187189
result
188190
)
191+
result = self.version_manager.get_version_from_string('9.0.x-8.2')
192+
self.assertEqual(
193+
{'ps_version': '9.0.0', 'branch_version': '9.0.x', 'php_versions': ('8.2',), 'container_version': None},
194+
result
195+
)
189196

190197
@patch('prestashop_docker.version_manager.VERSIONS', all_versions)
191198
def test_get_version_from_string_with_container_version_and_type(self):
@@ -199,6 +206,11 @@ def test_get_version_from_string_with_container_version_and_type(self):
199206
{'ps_version': '8.0.0', 'branch_version': '8.0.x', 'php_versions': ('7.2',), 'container_version': 'fpm'},
200207
result
201208
)
209+
result = self.version_manager.get_version_from_string('9.0.x-8.2-fpm')
210+
self.assertEqual(
211+
{'ps_version': '9.0.0', 'branch_version': '9.0.x', 'php_versions': ('8.2',), 'container_version': 'fpm'},
212+
result
213+
)
202214

203215
@patch('prestashop_docker.version_manager.VERSIONS', all_versions)
204216
def test_get_version_from_string_with_pre_release_and_without_container_version_and_type(self):
@@ -264,6 +276,17 @@ def test_parse_version_with_valid_version(self):
264276
},
265277
self.version_manager.parse_version('8.0.0')
266278
)
279+
self.assertEqual(
280+
{
281+
'9.0.x-8.1-apache': '/tmp/images/9.0.x/8.1-apache',
282+
'9.0.x-8.1-fpm': '/tmp/images/9.0.x/8.1-fpm',
283+
'9.0.x-8.2-apache': '/tmp/images/9.0.x/8.2-apache',
284+
'9.0.x-8.2-fpm': '/tmp/images/9.0.x/8.2-fpm',
285+
'9.0.x-8.3-apache': '/tmp/images/9.0.x/8.3-apache',
286+
'9.0.x-8.3-fpm': '/tmp/images/9.0.x/8.3-fpm',
287+
},
288+
self.version_manager.parse_version('9.0.x')
289+
)
267290

268291
@patch('prestashop_docker.version_manager.VERSIONS', all_versions)
269292
def test_parse_version_with_valid_version_and_php_version(self):
@@ -281,6 +304,13 @@ def test_parse_version_with_valid_version_and_php_version(self):
281304
},
282305
self.version_manager.parse_version('8.1.0-7.2')
283306
)
307+
self.assertEqual(
308+
{
309+
'9.0.x-8.2-apache': '/tmp/images/9.0.x/8.2-apache',
310+
'9.0.x-8.2-fpm': '/tmp/images/9.0.x/8.2-fpm',
311+
},
312+
self.version_manager.parse_version('9.0.x-8.2')
313+
)
284314

285315
@patch('prestashop_docker.version_manager.VERSIONS', all_versions)
286316
def test_parse_version_with_valid_version_php_version_and_container(self):
@@ -296,6 +326,12 @@ def test_parse_version_with_valid_version_php_version_and_container(self):
296326
},
297327
self.version_manager.parse_version('8.1.3-7.2-apache')
298328
)
329+
self.assertEqual(
330+
{
331+
'9.0.x-8.2-apache': '/tmp/images/9.0.x/8.2-apache',
332+
},
333+
self.version_manager.parse_version('9.0.x-8.2-apache')
334+
)
299335

300336
@patch('prestashop_docker.version_manager.VERSIONS', all_versions)
301337
def test_get_versions(self):

0 commit comments

Comments
 (0)