diff --git a/pkg/api/labels.go b/pkg/api/labels.go index ba110c831..086ae9cae 100644 --- a/pkg/api/labels.go +++ b/pkg/api/labels.go @@ -17,8 +17,6 @@ package api import ( - "fmt" - "github.com/hashicorp/go-version" "github.com/docker/compose/v2/internal" @@ -65,9 +63,7 @@ var ComposeVersion string func init() { v, err := version.NewVersion(internal.Version) if err == nil { - segments := v.Segments() - if len(segments) > 2 { - ComposeVersion = fmt.Sprintf("%d.%d.%d", segments[0], segments[1], segments[2]) - } + // We are only interested in the core version (e.g., "1.2.3") from the version string. + ComposeVersion = v.Core().String() } } diff --git a/pkg/api/labels_test.go b/pkg/api/labels_test.go new file mode 100644 index 000000000..1b7f686de --- /dev/null +++ b/pkg/api/labels_test.go @@ -0,0 +1,35 @@ +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package api + +import ( + "testing" + + "github.com/docker/compose/v2/internal" + "github.com/hashicorp/go-version" + "gotest.tools/v3/assert" +) + +func TestComposeVersionInitialization(t *testing.T) { + v, err := version.NewVersion(internal.Version) + if err != nil { + assert.Equal(t, "", ComposeVersion, "ComposeVersion should be empty for a non-semver internal version (e.g. 'devel')") + } else { + expected := v.Core().String() + assert.Equal(t, expected, ComposeVersion, "ComposeVersion should be the core of internal.Version") + } +} \ No newline at end of file