@@ -3917,3 +3917,65 @@ services:
39173917 assert .Equal (t , build .Provenance , "mode=max" )
39183918 assert .Equal (t , build .SBOM , "true" )
39193919}
3920+
3921+ func TestOverrideMiddle (t * testing.T ) {
3922+ pwd := t .TempDir ()
3923+ base := filepath .Join (pwd , "base.yaml" )
3924+ err := os .WriteFile (base , []byte (`
3925+ services:
3926+ base:
3927+ volumes:
3928+ - /foo:/foo
3929+ ` ), 0o700 )
3930+ assert .NilError (t , err )
3931+
3932+ override := filepath .Join (pwd , "override.yaml" )
3933+ err = os .WriteFile (override , []byte (`
3934+ services:
3935+ override:
3936+ extends:
3937+ file: ./base.yaml
3938+ service: base
3939+ volumes: !override
3940+ - /bar:/bar
3941+ ` ), 0o700 )
3942+ assert .NilError (t , err )
3943+
3944+ compose := filepath .Join (pwd , "compose.yaml" )
3945+ err = os .WriteFile (compose , []byte (`
3946+ name: test
3947+ services:
3948+ test:
3949+ image: test
3950+ extends:
3951+ file: ./override.yaml
3952+ service: override
3953+ volumes:
3954+ - /zot:/zot
3955+ ` ), 0o700 )
3956+ assert .NilError (t , err )
3957+
3958+ project , err := LoadWithContext (context .TODO (), types.ConfigDetails {
3959+ WorkingDir : pwd ,
3960+ ConfigFiles : []types.ConfigFile {
3961+ {Filename : compose },
3962+ },
3963+ })
3964+ assert .NilError (t , err )
3965+ test := project .Services ["test" ]
3966+ assert .Equal (t , len (test .Volumes ), 2 )
3967+ assert .DeepEqual (t , test .Volumes , []types.ServiceVolumeConfig {
3968+ {
3969+ Type : "bind" ,
3970+ Source : "/bar" ,
3971+ Target : "/bar" ,
3972+ Bind : & types.ServiceVolumeBind {CreateHostPath : true },
3973+ },
3974+ {
3975+ Type : "bind" ,
3976+ Source : "/zot" ,
3977+ Target : "/zot" ,
3978+ Bind : & types.ServiceVolumeBind {CreateHostPath : true },
3979+ },
3980+ })
3981+ }
0 commit comments