mirror of
https://github.com/docker/compose.git
synced 2025-07-22 13:14:29 +02:00
Validate version format on formats 2+
Signed-off-by: ulyssessouza <ulyssessouza@gmail.com>
This commit is contained in:
parent
e9220f45df
commit
7f49bbb998
@ -5,6 +5,7 @@ import functools
|
|||||||
import io
|
import io
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
@ -214,6 +215,12 @@ class ConfigFile(namedtuple('_ConfigFile', 'filename config')):
|
|||||||
.format(self.filename, VERSION_EXPLANATION)
|
.format(self.filename, VERSION_EXPLANATION)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
version_pattern = re.compile(r"^[2-9]+(\.\d+)?$")
|
||||||
|
if not version_pattern.match(version):
|
||||||
|
raise ConfigurationError(
|
||||||
|
'Version "{}" in "{}" is invalid.'
|
||||||
|
.format(version, self.filename))
|
||||||
|
|
||||||
if version == '2':
|
if version == '2':
|
||||||
return const.COMPOSEFILE_V2_0
|
return const.COMPOSEFILE_V2_0
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ from random import shuffle
|
|||||||
import py
|
import py
|
||||||
import pytest
|
import pytest
|
||||||
import yaml
|
import yaml
|
||||||
|
from ddt import data
|
||||||
|
from ddt import ddt
|
||||||
|
|
||||||
from ...helpers import build_config_details
|
from ...helpers import build_config_details
|
||||||
from ...helpers import BUSYBOX_IMAGE_WITH_TAG
|
from ...helpers import BUSYBOX_IMAGE_WITH_TAG
|
||||||
@ -68,6 +70,7 @@ def secret_sort(secrets):
|
|||||||
return sorted(secrets, key=itemgetter('source'))
|
return sorted(secrets, key=itemgetter('source'))
|
||||||
|
|
||||||
|
|
||||||
|
@ddt
|
||||||
class ConfigTest(unittest.TestCase):
|
class ConfigTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_load(self):
|
def test_load(self):
|
||||||
@ -1885,6 +1888,26 @@ class ConfigTest(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@data(
|
||||||
|
'2 ',
|
||||||
|
'3.',
|
||||||
|
'3.0.0',
|
||||||
|
'3.0.a',
|
||||||
|
'3.a',
|
||||||
|
'3a')
|
||||||
|
def test_invalid_version_formats(self, version):
|
||||||
|
content = {
|
||||||
|
'version': version,
|
||||||
|
'services': {
|
||||||
|
'web': {
|
||||||
|
'image': 'alpine',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with pytest.raises(ConfigurationError) as exc:
|
||||||
|
config.load(build_config_details(content))
|
||||||
|
assert 'Version "{}" in "filename.yml" is invalid.'.format(version) in exc.exconly()
|
||||||
|
|
||||||
def test_group_add_option(self):
|
def test_group_add_option(self):
|
||||||
actual = config.load(build_config_details({
|
actual = config.load(build_config_details({
|
||||||
'version': '2',
|
'version': '2',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user