diff --git a/buildinfo_test.go b/buildinfo_test.go index 5fb686c25..7093b8193 100644 --- a/buildinfo_test.go +++ b/buildinfo_test.go @@ -9,6 +9,7 @@ import ( "strconv" "strings" "testing" + "time" "github.com/jfrog/jfrog-cli-artifactory/artifactory/formats" clientTestUtils "github.com/jfrog/jfrog-client-go/utils/tests" @@ -664,6 +665,37 @@ func TestArtifactoryBuildCollectEnv(t *testing.T) { cleanArtifactoryTest() } +func TestArtifactoryBuildPublishRecordsDuration(t *testing.T) { + initArtifactoryTest(t, "") + // Use a unique build number to avoid clashing with other tests that reuse RtBuildName1. + buildNumber := strconv.FormatInt(time.Now().Unix(), 10) + inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails) + + // First build command - records the build's start time. + uploadFiles(t, "upload", "--build-name="+tests.RtBuildName1, "--build-number="+buildNumber) + // Collect environment, mirroring the reported scenario (upload -> bce -> bp). + assert.NoError(t, artifactoryCli.WithoutCredentials().Exec("bce", tests.RtBuildName1, buildNumber)) + runRt(t, "bp", tests.RtBuildName1, buildNumber) + + publishedBuildInfo, found, err := tests.GetBuildInfo(serverDetails, tests.RtBuildName1, buildNumber) + if err != nil { + assert.NoError(t, err) + return + } + if !found { + assert.True(t, found, "build info was expected to be found") + return + } + buildInfo := publishedBuildInfo.BuildInfo + + assert.NotEmpty(t, buildInfo.Started, "build info should have a 'started' timestamp") + assert.Greater(t, buildInfo.DurationMillis, int64(0), "build duration should not be published as 0") + + // Cleanup + inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails) + cleanArtifactoryTest() +} + func TestBuildAddGit(t *testing.T) { testBuildAddGit(t, false) } diff --git a/go.mod b/go.mod index 33db2e74c..ca4110222 100644 --- a/go.mod +++ b/go.mod @@ -242,7 +242,7 @@ require ( sigs.k8s.io/yaml v1.6.0 // indirect ) -// replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory main +replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.13.1-0.20260629061854-cd4824207c01 //replace github.com/gfleury/go-bitbucket-v1 => github.com/gfleury/go-bitbucket-v1 v0.0.0-20230825095122-9bc1711434ab diff --git a/go.sum b/go.sum index e1815deb4..99704c780 100644 --- a/go.sum +++ b/go.sum @@ -394,8 +394,8 @@ github.com/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4= github.com/jfrog/archiver/v3 v3.6.3 h1:hkAmPjBw393tPmQ07JknLNWFNZjXdy2xFEnOW9wwOxI= github.com/jfrog/archiver/v3 v3.6.3/go.mod h1:5V9l+Fte30Y4qe9dUOAd3yNTf8lmtVNuhKNrvI8PMhg= -github.com/jfrog/build-info-go v1.13.1-0.20260615080618-42488b58c305 h1:q7/hTPm6ibQf45CztScTgPb8cAmKIeQ9im0ClISsq7Y= -github.com/jfrog/build-info-go v1.13.1-0.20260615080618-42488b58c305/go.mod h1:CYRUCvLKfyARjoJXLWAxce1qNUxTEtbRKAARkV42vpE= +github.com/jfrog/build-info-go v1.13.1-0.20260629061854-cd4824207c01 h1:PY/XBglBZvwSyKgFUMj7mJ62tm72ZFLizDOHGC7ORJI= +github.com/jfrog/build-info-go v1.13.1-0.20260629061854-cd4824207c01/go.mod h1:CYRUCvLKfyARjoJXLWAxce1qNUxTEtbRKAARkV42vpE= github.com/jfrog/froggit-go v1.23.0 h1:HGNIP9ZqoXKXHQONazhCENqIrFLfc8J3aX/F0QelQ2s= github.com/jfrog/froggit-go v1.23.0/go.mod h1:wRDryqyp3oe+eHgME2mpnEQmO8XBECIPagFwj0nHmdI= github.com/jfrog/go-mockhttp v0.3.1 h1:/wac8v4GMZx62viZmv4wazB5GNKs+GxawuS1u3maJH8=