|
@@ -1,11 +1,10 @@
|
|
|
from __future__ import absolute_import
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
-import functools
|
|
|
import os
|
|
|
|
|
|
+import pytest
|
|
|
from docker.utils import version_lt
|
|
|
-from pytest import skip
|
|
|
|
|
|
from .. import unittest
|
|
|
from ..helpers import is_cluster
|
|
@@ -17,7 +16,8 @@ from compose.const import COMPOSEFILE_V1 as V1
|
|
|
from compose.const import COMPOSEFILE_V2_0 as V2_0
|
|
|
from compose.const import COMPOSEFILE_V2_0 as V2_1
|
|
|
from compose.const import COMPOSEFILE_V2_2 as V2_2
|
|
|
-from compose.const import COMPOSEFILE_V3_2 as V3_2
|
|
|
+from compose.const import COMPOSEFILE_V3_0 as V3_0
|
|
|
+from compose.const import COMPOSEFILE_V3_3 as V3_3
|
|
|
from compose.const import LABEL_PROJECT
|
|
|
from compose.progress_stream import stream_output
|
|
|
from compose.service import Service
|
|
@@ -43,7 +43,7 @@ def get_links(container):
|
|
|
|
|
|
def engine_max_version():
|
|
|
if 'DOCKER_VERSION' not in os.environ:
|
|
|
- return V3_2
|
|
|
+ return V3_3
|
|
|
version = os.environ['DOCKER_VERSION'].partition('-')[0]
|
|
|
if version_lt(version, '1.10'):
|
|
|
return V1
|
|
@@ -51,37 +51,32 @@ def engine_max_version():
|
|
|
return V2_0
|
|
|
if version_lt(version, '1.13'):
|
|
|
return V2_1
|
|
|
- return V3_2
|
|
|
+ if version_lt(version, '17.06'):
|
|
|
+ return V2_2
|
|
|
+ return V3_3
|
|
|
|
|
|
|
|
|
-def build_version_required_decorator(ignored_versions):
|
|
|
- def decorator(f):
|
|
|
- @functools.wraps(f)
|
|
|
- def wrapper(self, *args, **kwargs):
|
|
|
- max_version = engine_max_version()
|
|
|
- if max_version in ignored_versions:
|
|
|
- skip("Engine version %s is too low" % max_version)
|
|
|
- return
|
|
|
- return f(self, *args, **kwargs)
|
|
|
- return wrapper
|
|
|
-
|
|
|
- return decorator
|
|
|
+def min_version_skip(version):
|
|
|
+ return pytest.mark.skipif(
|
|
|
+ engine_max_version() < version,
|
|
|
+ reason="Engine version %s is too low" % version
|
|
|
+ )
|
|
|
|
|
|
|
|
|
def v2_only():
|
|
|
- return build_version_required_decorator((V1,))
|
|
|
+ return min_version_skip(V2_0)
|
|
|
|
|
|
|
|
|
def v2_1_only():
|
|
|
- return build_version_required_decorator((V1, V2_0))
|
|
|
+ return min_version_skip(V2_1)
|
|
|
|
|
|
|
|
|
def v2_2_only():
|
|
|
- return build_version_required_decorator((V1, V2_0, V2_1))
|
|
|
+ return min_version_skip(V2_0)
|
|
|
|
|
|
|
|
|
def v3_only():
|
|
|
- return build_version_required_decorator((V1, V2_0, V2_1, V2_2))
|
|
|
+ return min_version_skip(V3_0)
|
|
|
|
|
|
|
|
|
class DockerClientTestCase(unittest.TestCase):
|
|
@@ -137,7 +132,7 @@ class DockerClientTestCase(unittest.TestCase):
|
|
|
def require_api_version(self, minimum):
|
|
|
api_version = self.client.version()['ApiVersion']
|
|
|
if version_lt(api_version, minimum):
|
|
|
- skip("API version is too low ({} < {})".format(api_version, minimum))
|
|
|
+ pytest.skip("API version is too low ({} < {})".format(api_version, minimum))
|
|
|
|
|
|
def get_volume_data(self, volume_name):
|
|
|
if not is_cluster(self.client):
|