Skip to content

Commit

Permalink
[FIXED JENKINS-7285] Fix regression from 1.536
Browse files Browse the repository at this point in the history
  • Loading branch information
olivergondza committed Nov 14, 2013
1 parent 9e09e5a commit d7c016b
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 7 deletions.
Expand Up @@ -174,8 +174,8 @@ private void filterConfigurations(

final MatrixBuild build = execution.getBuild();

final FilterScript combinationFilter = FilterScript.parse(execution.getProject().getCombinationFilter());
final FilterScript touchStoneFilter = FilterScript.parse(getTouchStoneCombinationFilter());
final FilterScript combinationFilter = FilterScript.parse(execution.getProject().getCombinationFilter(), FilterScript.ACCEPT_ALL);
final FilterScript touchStoneFilter = FilterScript.parse(getTouchStoneCombinationFilter(), FilterScript.REJECT_ALL);

try {

Expand Down
31 changes: 26 additions & 5 deletions core/src/main/java/hudson/matrix/FilterScript.java
Expand Up @@ -90,26 +90,47 @@ private Binding getConfiguredBinding(final MatrixBuildExecution execution) {
}

public static FilterScript parse(String expression) {
return parse(expression, ACCEPT_ALL);
}

/**
* @since TODO
*/
public static FilterScript parse(String expression, FilterScript defaultScript) {
if (Util.fixEmptyAndTrim(expression)==null)
return NOOP;
return defaultScript;

GroovyShell shell = new GroovyShell();

return new FilterScript(shell.parse("use("+BooleanCategory.class.getName().replace('$','.')+") {"+expression+"}"));
}

private static final Script EMPTY = new Script() {
@Override
public Object run() {
return true;
}
};

/**
* Constant that always applies to any combination.
* @since TODO
*/
private static final FilterScript NOOP = new FilterScript(new Script() {
/*package*/ static final FilterScript ACCEPT_ALL = new FilterScript(EMPTY) {
@Override
public Object run() {
public boolean apply(MatrixBuildExecution context, Combination combination) {
return true;
}
}) {
};

/**
* Constant that does not apply to any combination.
* @since TODO
*/
/*package*/ static final FilterScript REJECT_ALL = new FilterScript(EMPTY) {
@Override
public boolean apply(MatrixBuildExecution context, Combination combination) {
return true;
return false;
}
};
}
Expand Up @@ -56,6 +56,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.jvnet.hudson.test.Bug;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.verification.VerificationMode;
Expand Down Expand Up @@ -187,6 +188,25 @@ public void testCombinationFilterV3() throws InterruptedException, IOException {
wasNotBuilt(confs.get("experimental"));
}

@Test
@Bug(7285)
public void reproduceTouchstoneRegression () throws InterruptedException, IOException {

givenTheVersionIs("3");

// No touchstone
MatrixExecutionStrategy myStrategy = new DefaultMatrixExecutionStrategyImpl (
true, null, Result.SUCCESS, new NoopMatrixConfigurationSorter()
);

myStrategy.run(execution);

wasBuilt(confs.get("devel"));
wasNotBuilt(confs.get("beta"));
wasNotBuilt(confs.get("stable"));
wasNotBuilt(confs.get("experimental"));
}

private void usingDummyProject() {

project = PowerMockito.mock(MatrixProject.class);
Expand Down

0 comments on commit d7c016b

Please sign in to comment.