#54 Fix groovy script removal bug
This commit is contained in:
		
							parent
							
								
									52cd17e97f
								
							
						
					
					
						commit
						78b4a2d952
					
				| 
						 | 
					@ -47,6 +47,13 @@ func (g *Groovy) EnsureSingle(source, name, hash, groovyScript string) (requeue
 | 
				
			||||||
		return false, nil
 | 
							return false, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i, ags := range g.jenkins.Status.AppliedGroovyScripts {
 | 
				
			||||||
 | 
							if ags.ConfigurationType == g.configurationType && ags.Name == name && ags.Source == source {
 | 
				
			||||||
 | 
								g.jenkins.Status.AppliedGroovyScripts = append(g.jenkins.Status.AppliedGroovyScripts[:i],
 | 
				
			||||||
 | 
									g.jenkins.Status.AppliedGroovyScripts[i+1:]...)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logs, err := g.jenkinsClient.ExecuteScript(groovyScript)
 | 
						logs, err := g.jenkinsClient.ExecuteScript(groovyScript)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if _, ok := err.(*jenkinsclient.GroovyScriptExecutionFailed); ok {
 | 
							if _, ok := err.(*jenkinsclient.GroovyScriptExecutionFailed); ok {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -113,6 +113,55 @@ 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 script with new version", func(t *testing.T) {
 | 
				
			||||||
 | 
							// given
 | 
				
			||||||
 | 
							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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// when
 | 
				
			||||||
 | 
							_, err = groovyClient.EnsureSingle(source, groovyScriptName, hash, groovyScript)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// then
 | 
				
			||||||
 | 
							require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							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, hash, jenkins.Status.AppliedGroovyScripts[0].Hash)
 | 
				
			||||||
 | 
							assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[0].Source)
 | 
				
			||||||
 | 
							assert.Equal(t, groovyScriptName, jenkins.Status.AppliedGroovyScripts[0].Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Update with new hash
 | 
				
			||||||
 | 
							_, err = groovyClient.EnsureSingle(source, groovyScriptName, "hash1", groovyScript)
 | 
				
			||||||
 | 
							require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							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, "hash1", jenkins.Status.AppliedGroovyScripts[0].Hash)
 | 
				
			||||||
 | 
							assert.Equal(t, source, jenkins.Status.AppliedGroovyScripts[0].Source)
 | 
				
			||||||
 | 
							assert.Equal(t, groovyScriptName, jenkins.Status.AppliedGroovyScripts[0].Name)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
	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