Przeglądaj źródła

Fix "extends" same file optimization (#6425)

Fix "extends" same file optimization
Nicolas De loof 6 lat temu
rodzic
commit
7172849913
2 zmienionych plików z 7 dodań i 1 usunięć
  1. 1 1
      compose/config/config.py
  2. 6 0
      tests/unit/config/config_test.py

+ 1 - 1
compose/config/config.py

@@ -615,7 +615,7 @@ class ServiceExtendsResolver(object):
         config_path = self.get_extended_config_path(extends)
         service_name = extends['service']
 
-        if config_path == self.config_file.filename:
+        if config_path == os.path.abspath(self.config_file.filename):
             try:
                 service_config = self.config_file.get_service(service_name)
             except KeyError:

+ 6 - 0
tests/unit/config/config_test.py

@@ -18,6 +18,7 @@ from ...helpers import build_config_details
 from ...helpers import BUSYBOX_IMAGE_WITH_TAG
 from compose.config import config
 from compose.config import types
+from compose.config.config import ConfigFile
 from compose.config.config import resolve_build_args
 from compose.config.config import resolve_environment
 from compose.config.environment import Environment
@@ -4887,6 +4888,11 @@ class ExtendsTest(unittest.TestCase):
             assert types.SecurityOpt.parse('apparmor:unconfined') in svc['security_opt']
             assert types.SecurityOpt.parse('seccomp:unconfined') in svc['security_opt']
 
+    @mock.patch.object(ConfigFile, 'from_filename', wraps=ConfigFile.from_filename)
+    def test_extends_same_file_optimization(self, from_filename_mock):
+        load_from_filename('tests/fixtures/extends/no-file-specified.yml')
+        from_filename_mock.assert_called_once()
+
 
 @pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason='paths use slash')
 class ExpandPathTest(unittest.TestCase):