Skip to content

Commit a9ecc73

Browse files
authored
fix: workflow builder isCleaner bug (#1872)
1 parent b6b4575 commit a9ecc73

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class WorkflowBuilder<P extends HasMetadata> {
2222

2323
public WorkflowBuilder<P> addDependentResource(DependentResource dependentResource) {
2424
currentNode = new DependentResourceNode<>(dependentResource);
25-
isCleaner = dependentResource.isDeletable();
25+
isCleaner = isCleaner || dependentResource.isDeletable();
2626
final var name = currentNode.getName();
2727
dependentResourceNodes.put(name, currentNode);
2828
return this;

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class AbstractWorkflowExecutorTest {
2222
protected TestDeleterDependent drDeleter = new TestDeleterDependent("DR_DELETER");
2323
protected TestErrorDependent drError = new TestErrorDependent("ERROR_1");
2424
protected TestErrorDeleterDependent errorDD = new TestErrorDeleterDependent("ERROR_DELETER");
25+
protected GarbageCollectedDeleter gcDeleter = new GarbageCollectedDeleter("GC_DELETER");
2526

2627
@SuppressWarnings("rawtypes")
2728
protected final Condition noMetDeletePostCondition = (primary, secondary, context) -> false;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.javaoperatorsdk.operator.processing.dependent.workflow;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
6+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
import static org.mockito.Mockito.*;
10+
11+
class WorkflowBuilderTest {
12+
13+
@Test
14+
void workflowIsCleanerIfAtLeastOneDRIsCleaner() {
15+
var dr = mock(DependentResource.class);
16+
var deleter = mock(DependentResource.class);
17+
when(deleter.isDeletable()).thenReturn(true);
18+
19+
var workflow = new WorkflowBuilder<TestCustomResource>()
20+
.addDependentResource(deleter)
21+
.addDependentResource(dr)
22+
.build();
23+
24+
assertThat(workflow.hasCleaner()).isTrue();
25+
}
26+
27+
}

0 commit comments

Comments
 (0)