From d0b26417d7aa0bbab5d19bce7b338668eb3742d2 Mon Sep 17 00:00:00 2001 From: Thomas De Meyer Date: Fri, 15 Aug 2025 18:45:09 +0200 Subject: [PATCH 1/2] fix: improved check for LatestVersion when component has no previous versions --- .changes/unreleased/Fixed-20250815-184431.yaml | 3 +++ internal/cloud/client_wrapper.go | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changes/unreleased/Fixed-20250815-184431.yaml diff --git a/.changes/unreleased/Fixed-20250815-184431.yaml b/.changes/unreleased/Fixed-20250815-184431.yaml new file mode 100644 index 00000000..be0655d8 --- /dev/null +++ b/.changes/unreleased/Fixed-20250815-184431.yaml @@ -0,0 +1,3 @@ +kind: Fixed +body: Improved check for LatestVersion when component has no previous versions +time: 2025-08-15T18:44:31.55796646+02:00 diff --git a/internal/cloud/client_wrapper.go b/internal/cloud/client_wrapper.go index f2d4c789..5ffb752d 100644 --- a/internal/cloud/client_wrapper.go +++ b/internal/cloud/client_wrapper.go @@ -3,6 +3,7 @@ package cloud import ( "context" "github.com/mach-composer/mcc-sdk-go/mccsdk" + "io" ) var _ ClientWrapper = (*MccSdkClientWrapper)(nil) @@ -47,7 +48,15 @@ func (m *MccSdkClientWrapper) GetLatestComponentVersion(ctx context.Context, org // Small hack because the mccsdk cannot deserialize an empty response body if res != nil && res.StatusCode == 200 { - return nil, nil + b, err := io.ReadAll(res.Body) + if err != nil { + return nil, err + } + + if string(b) == "{}" { + // No version found, return nil without an error + return nil, nil + } } return r, err From 5d1e78be7829a42a17a3bddfb123436296d61817 Mon Sep 17 00:00:00 2001 From: Thomas De Meyer Date: Fri, 15 Aug 2025 18:45:53 +0200 Subject: [PATCH 2/2] fix: improve path filter when comparing paths with from different roots --- .changes/unreleased/Fixed-20250815-184538.yaml | 3 +++ internal/gitutils/diff.go | 7 ++++++- internal/gitutils/diff_test.go | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changes/unreleased/Fixed-20250815-184538.yaml diff --git a/.changes/unreleased/Fixed-20250815-184538.yaml b/.changes/unreleased/Fixed-20250815-184538.yaml new file mode 100644 index 00000000..00e2acf6 --- /dev/null +++ b/.changes/unreleased/Fixed-20250815-184538.yaml @@ -0,0 +1,3 @@ +kind: Fixed +body: Improve path filter when comparing paths with from different roots +time: 2025-08-15T18:45:38.055338092+02:00 diff --git a/internal/gitutils/diff.go b/internal/gitutils/diff.go index e533b938..d8778060 100644 --- a/internal/gitutils/diff.go +++ b/internal/gitutils/diff.go @@ -3,6 +3,7 @@ package gitutils import ( "context" "fmt" + "path/filepath" "strings" "github.com/go-git/go-git/v5" @@ -19,7 +20,9 @@ func pathFilter(paths []string) func(path string) bool { } for _, p := range paths { - if strings.HasPrefix(path, p) { + dirPath := filepath.Dir(path) + + if strings.Contains(p, dirPath) { return true } } @@ -67,6 +70,8 @@ func commitsBetween(ctx context.Context, repository *git.Repository, first, last lastHash = val } + log.Debug().Msgf("First hash: %s, Last hash: %s", firstHash, lastHash) + cIter, err := repository.Log(&git.LogOptions{ Order: git.LogOrderCommitterTime, PathFilter: pathFilter(paths), diff --git a/internal/gitutils/diff_test.go b/internal/gitutils/diff_test.go index 809c549e..4c10fc52 100644 --- a/internal/gitutils/diff_test.go +++ b/internal/gitutils/diff_test.go @@ -11,6 +11,7 @@ import ( func TestPathFilter(t *testing.T) { assert.True(t, pathFilter([]string{})("test/test")) assert.True(t, pathFilter([]string{"test"})("test/test")) + assert.True(t, pathFilter([]string{"foo/bar/baz/test"})("test/file.txt")) assert.False(t, pathFilter([]string{"foo"})("test/test")) }