@@ -57,24 +57,29 @@ func newSuccessCollector(t *testing.T, id string) *craftermocks.Collector {
5757}
5858
5959func TestRunCollectors (t * testing.T ) {
60- t .Run ("loads state before and after running collectors " , func (t * testing.T ) {
60+ t .Run ("reloads state after collectors when digest changes " , func (t * testing.T ) {
6161 sm := craftermocks .NewStateManager (t )
6262 setupReadExpectation (sm , "digest-1" )
6363 sm .On ("Info" , mock .Anything , mock .Anything ).Return ("mock://run-1" )
6464
65- c1 := newSuccessCollector (t , "c1" )
66- c2 := newSuccessCollector (t , "c2" )
65+ // Collector modifies the digest (simulates a Write that updates UpdateCheckSum)
66+ c1 := craftermocks .NewCollector (t )
67+ c1 .On ("ID" ).Maybe ().Return ("c1" )
68+ c1 .On ("Collect" , mock .Anything , mock .Anything , mock .Anything , mock .Anything ).
69+ Run (func (args mock.Arguments ) {
70+ cr := args .Get (1 ).(* crafter.Crafter )
71+ cr .CraftingState .UpdateCheckSum = "digest-after-write"
72+ }).Return (nil )
6773
6874 cr , err := crafter .NewCrafter (sm , nil )
6975 require .NoError (t , err )
70- cr .RegisterCollectors (c1 , c2 )
76+ cr .RegisterCollectors (c1 )
7177
7278 cr .RunCollectors (context .Background (), "run-1" , nil )
7379
74- // Read before the loop + Read after to sync digest
80+ // Read before + Read after (digest changed, so reload triggered)
7581 sm .AssertNumberOfCalls (t , "Read" , 2 )
7682 c1 .AssertCalled (t , "Collect" , mock .Anything , mock .Anything , "run-1" , mock .Anything )
77- c2 .AssertCalled (t , "Collect" , mock .Anything , mock .Anything , "run-1" , mock .Anything )
7883 })
7984
8085 t .Run ("collector failure does not stop other collectors" , func (t * testing.T ) {
@@ -99,7 +104,7 @@ func TestRunCollectors(t *testing.T) {
99104 c2 .AssertCalled (t , "Collect" , mock .Anything , mock .Anything , mock .Anything , mock .Anything )
100105 })
101106
102- t .Run ("no collectors reloads state before and after " , func (t * testing.T ) {
107+ t .Run ("no collectors skips reload when digest unchanged " , func (t * testing.T ) {
103108 sm := craftermocks .NewStateManager (t )
104109 setupReadExpectation (sm , "d" )
105110 sm .On ("Info" , mock .Anything , mock .Anything ).Return ("mock://run-1" )
@@ -109,7 +114,8 @@ func TestRunCollectors(t *testing.T) {
109114
110115 cr .RunCollectors (context .Background (), "run-1" , nil )
111116
112- sm .AssertNumberOfCalls (t , "Read" , 2 )
117+ // Only the initial Read, no reload since digest didn't change
118+ sm .AssertNumberOfCalls (t , "Read" , 1 )
113119 })
114120
115121 t .Run ("state load failure aborts before running collectors" , func (t * testing.T ) {
0 commit comments