Fix groovy script versioning bug
This commit is contained in:
		
							parent
							
								
									77606717f1
								
							
						
					
					
						commit
						168110f84d
					
				|  | @ -58,7 +58,7 @@ func (g *Groovy) EnsureSingle(source, name, hash, groovyScript string) (requeue | ||||||
| 	var appliedGroovyScripts []v1alpha2.AppliedGroovyScript | 	var appliedGroovyScripts []v1alpha2.AppliedGroovyScript | ||||||
| 
 | 
 | ||||||
| 	for _, ags := range g.jenkins.Status.AppliedGroovyScripts { | 	for _, ags := range g.jenkins.Status.AppliedGroovyScripts { | ||||||
| 		if ags.ConfigurationType != g.configurationType && ags.Source != source && ags.Name != name { | 		if ags.Source != source || ags.Name != name { | ||||||
| 			appliedGroovyScripts = append(appliedGroovyScripts, ags) | 			appliedGroovyScripts = append(appliedGroovyScripts, ags) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -177,6 +177,109 @@ func TestGroovy_EnsureSingle(t *testing.T) { | ||||||
| 		assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[0].Source) | 		assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[0].Source) | ||||||
| 		assert.Equal(t, groovyScriptName, jenkins.Status.AppliedGroovyScripts[0].Name) | 		assert.Equal(t, groovyScriptName, jenkins.Status.AppliedGroovyScripts[0].Name) | ||||||
| 	}) | 	}) | ||||||
|  | 	t.Run("execute three groovy scripts with another hash", func(t *testing.T) { | ||||||
|  | 		// given
 | ||||||
|  | 		firstGroovyScriptName := "testGroovy1" | ||||||
|  | 		firstGroovyScriptHash := "testHash1" | ||||||
|  | 
 | ||||||
|  | 		secondGroovyScriptName := "testGroovy2" | ||||||
|  | 		secondGroovyScriptHash := "testHash2" | ||||||
|  | 
 | ||||||
|  | 		thirdGroovyScriptName := "testGroovy3" | ||||||
|  | 		thirdGroovyScriptHash := "testHash3" | ||||||
|  | 
 | ||||||
|  | 		jenkins := &v1alpha2.Jenkins{ | ||||||
|  | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 				Name:      jenkinsName, | ||||||
|  | 				Namespace: namespace, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
|  | 		err := v1alpha2.SchemeBuilder.AddToScheme(scheme.Scheme) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		fakeClient := fake.NewFakeClient() | ||||||
|  | 		err = fakeClient.Create(ctx, jenkins) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 		ctrl := gomock.NewController(t) | ||||||
|  | 		defer ctrl.Finish() | ||||||
|  | 		jenkinsClient := jenkinsclient.NewMockJenkins(ctrl) | ||||||
|  | 
 | ||||||
|  | 		jenkinsClient.EXPECT().ExecuteScript(groovyScript).Return("logs", nil) | ||||||
|  | 		jenkinsClient.EXPECT().ExecuteScript(groovyScript).Return("logs", nil) | ||||||
|  | 		jenkinsClient.EXPECT().ExecuteScript(groovyScript).Return("logs", nil) | ||||||
|  | 
 | ||||||
|  | 		groovyClient := New(jenkinsClient, fakeClient, log.Log, jenkins, configurationType, emptyCustomization) | ||||||
|  | 
 | ||||||
|  | 		requeue, err := groovyClient.EnsureSingle(source, firstGroovyScriptName, firstGroovyScriptHash, groovyScript) | ||||||
|  | 
 | ||||||
|  | 		// then
 | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.True(t, requeue) | ||||||
|  | 		err = fakeClient.Get(ctx, types.NamespacedName{Name: jenkins.Name, Namespace: jenkins.Namespace}, jenkins) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.Equal(t, 1, len(jenkins.Status.AppliedGroovyScripts)) | ||||||
|  | 		assert.Equal(t, configurationType, jenkins.Status.AppliedGroovyScripts[0].ConfigurationType) | ||||||
|  | 		assert.Equal(t, firstGroovyScriptHash, jenkins.Status.AppliedGroovyScripts[0].Hash) | ||||||
|  | 		assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[0].Source) | ||||||
|  | 		assert.Equal(t, firstGroovyScriptName, jenkins.Status.AppliedGroovyScripts[0].Name) | ||||||
|  | 
 | ||||||
|  | 		requeue, err = groovyClient.EnsureSingle(source, secondGroovyScriptName, secondGroovyScriptHash, groovyScript) | ||||||
|  | 		// then
 | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.True(t, requeue) | ||||||
|  | 		err = fakeClient.Get(ctx, types.NamespacedName{Name: jenkins.Name, Namespace: jenkins.Namespace}, jenkins) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.Equal(t, 2, len(jenkins.Status.AppliedGroovyScripts)) | ||||||
|  | 		assert.Equal(t, configurationType, jenkins.Status.AppliedGroovyScripts[1].ConfigurationType) | ||||||
|  | 		assert.Equal(t, secondGroovyScriptHash, jenkins.Status.AppliedGroovyScripts[1].Hash) | ||||||
|  | 		assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[1].Source) | ||||||
|  | 		assert.Equal(t, secondGroovyScriptName, jenkins.Status.AppliedGroovyScripts[1].Name) | ||||||
|  | 
 | ||||||
|  | 		requeue, err = groovyClient.EnsureSingle(source, thirdGroovyScriptName, thirdGroovyScriptHash, groovyScript) | ||||||
|  | 		// then
 | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.True(t, requeue) | ||||||
|  | 		err = fakeClient.Get(ctx, types.NamespacedName{Name: jenkins.Name, Namespace: jenkins.Namespace}, jenkins) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.Equal(t, 3, len(jenkins.Status.AppliedGroovyScripts)) | ||||||
|  | 		assert.Equal(t, configurationType, jenkins.Status.AppliedGroovyScripts[2].ConfigurationType) | ||||||
|  | 		assert.Equal(t, thirdGroovyScriptHash, jenkins.Status.AppliedGroovyScripts[2].Hash) | ||||||
|  | 		assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[2].Source) | ||||||
|  | 		assert.Equal(t, thirdGroovyScriptName, jenkins.Status.AppliedGroovyScripts[2].Name) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 	t.Run("execute two groovy scripts with same names in two config maps", func(t *testing.T) { | ||||||
|  | 		jenkins := &v1alpha2.Jenkins{ | ||||||
|  | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 				Name:      jenkinsName, | ||||||
|  | 				Namespace: namespace, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
|  | 		err := v1alpha2.SchemeBuilder.AddToScheme(scheme.Scheme) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		fakeClient := fake.NewFakeClient() | ||||||
|  | 		err = fakeClient.Create(ctx, jenkins) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 		ctrl := gomock.NewController(t) | ||||||
|  | 		defer ctrl.Finish() | ||||||
|  | 		jenkinsClient := jenkinsclient.NewMockJenkins(ctrl) | ||||||
|  | 
 | ||||||
|  | 		jenkinsClient.EXPECT().ExecuteScript(groovyScript).Return("logs", nil) | ||||||
|  | 		jenkinsClient.EXPECT().ExecuteScript(groovyScript).Return("logs", nil) | ||||||
|  | 
 | ||||||
|  | 		groovyClient := New(jenkinsClient, fakeClient, log.Log, jenkins, configurationType, emptyCustomization) | ||||||
|  | 
 | ||||||
|  | 		requeue, err := groovyClient.EnsureSingle("test-conf1", "test.groovy", hash, groovyScript) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.True(t, requeue) | ||||||
|  | 
 | ||||||
|  | 		requeue, err = groovyClient.EnsureSingle("test-conf2", "test.groovy", "anotherHash", groovyScript) | ||||||
|  | 		require.NoError(t, err) | ||||||
|  | 		assert.True(t, requeue) | ||||||
|  | 
 | ||||||
|  | 		assert.Equal(t, 2, len(jenkins.Status.AppliedGroovyScripts)) | ||||||
|  | 	}) | ||||||
| 	t.Run("execute script fails", func(t *testing.T) { | 	t.Run("execute script fails", func(t *testing.T) { | ||||||
| 		// given
 | 		// given
 | ||||||
| 		jenkins := &v1alpha2.Jenkins{ | 		jenkins := &v1alpha2.Jenkins{ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue