test: fix job executor test flakiness in CI environment

This commit is contained in:
Roman K. 2025-10-11 11:32:02 +02:00
parent 2f0a1725d0
commit 4da9ddfeca

View file

@ -450,7 +450,14 @@ func TestSetJobResult_SkipsBannerInChildReusableWorkflow(t *testing.T) {
// to prevent premature token revocation
mockLogger := mocks.NewFieldLogger(t)
// Allow all variants of Debugf (git operations can call with 1-3 args)
mockLogger.On("Debugf", mock.Anything).Return(0).Maybe()
mockLogger.On("Debugf", mock.Anything, mock.Anything).Return(0).Maybe()
mockLogger.On("Debugf", mock.Anything, mock.Anything, mock.Anything).Return(0).Maybe()
// CRITICAL: In CI, git ref detection may fail and call Warningf
mockLogger.On("Warningf", mock.Anything, mock.Anything).Return(0).Maybe()
mockLogger.On("WithField", mock.Anything, mock.Anything).Return(&logrus.Entry{Logger: &logrus.Logger{}}).Maybe()
mockLogger.On("WithFields", mock.Anything).Return(&logrus.Entry{Logger: &logrus.Logger{}}).Maybe()
ctx := common.WithLogger(common.WithJobErrorContainer(t.Context()), mockLogger)
@ -459,7 +466,7 @@ func TestSetJobResult_SkipsBannerInChildReusableWorkflow(t *testing.T) {
Result: "success",
}
parentRC := &RunContext{
Config: &Config{}, // Must have Config to avoid nil pointer
Config: &Config{Env: map[string]string{}}, // Must have Config
Run: &model.Run{
JobID: "parent",
Workflow: &model.Workflow{
@ -475,7 +482,7 @@ func TestSetJobResult_SkipsBannerInChildReusableWorkflow(t *testing.T) {
Result: "success",
}
childRC := &RunContext{
Config: &Config{}, // Must have Config
Config: &Config{Env: map[string]string{}}, // Must have Config
Run: &model.Run{
JobID: "child",
Workflow: &model.Workflow{
@ -503,9 +510,7 @@ func TestSetJobResult_SkipsBannerInChildReusableWorkflow(t *testing.T) {
// 2. Parent result is propagated
assert.Equal(t, "success", parentJob.Result)
// 3. Logger.Debugf was called (not Infof with banner)
// This proves final banner was NOT printed by child
mockLogger.AssertCalled(t, "Debugf", mock.Anything, mock.Anything, mock.Anything)
// 3. Final banner was NOT printed by child (critical for token security)
mockLogger.AssertNotCalled(t, "WithFields", mock.MatchedBy(func(fields logrus.Fields) bool {
_, okJobResult := fields["jobResult"]
_, okJobOutput := fields["jobOutputs"]