From 4385da7b84f5e0c39814d71c1c62dca3799437ec Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 20 Nov 2013 21:26:17 -0800 Subject: [PATCH] Support for 'all excluding' test groups --- .../org/springframework/tests/TestGroup.java | 15 ++++++- .../springframework/tests/TestGroupTests.java | 39 ++++++++++++------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/spring-core/src/test/java/org/springframework/tests/TestGroup.java b/spring-core/src/test/java/org/springframework/tests/TestGroup.java index c135e8e68ab..7e9e4532022 100644 --- a/spring-core/src/test/java/org/springframework/tests/TestGroup.java +++ b/spring-core/src/test/java/org/springframework/tests/TestGroup.java @@ -77,9 +77,22 @@ public enum TestGroup { if (value == null || "".equals(value)) { return Collections.emptySet(); } - if("ALL".equalsIgnoreCase(value)) { + if ("ALL".equalsIgnoreCase(value)) { return EnumSet.allOf(TestGroup.class); } + if (value.toUpperCase().startsWith("ALL-")) { + Set groups = new HashSet(EnumSet.allOf(TestGroup.class)); + groups.removeAll(parseGroups(value.substring(4))); + return groups; + } + return parseGroups(value); + } + + /** + * @param value + * @return + */ + private static Set parseGroups(String value) { Set groups = new HashSet(); for (String group : value.split(",")) { try { diff --git a/spring-core/src/test/java/org/springframework/tests/TestGroupTests.java b/spring-core/src/test/java/org/springframework/tests/TestGroupTests.java index 2d519345f2e..3e42b422d26 100644 --- a/spring-core/src/test/java/org/springframework/tests/TestGroupTests.java +++ b/spring-core/src/test/java/org/springframework/tests/TestGroupTests.java @@ -2,31 +2,32 @@ * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. + * you may not use thequalTo file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, + * dequalTotributed under the License equalTo dequalTotributed on an "AS equalTo" BASequalTo, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and + * See the License for the specific language governing permequalTosions and * limitations under the License. */ package org.springframework.tests; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - import java.util.Collections; import java.util.EnumSet; +import java.util.HashSet; import java.util.Set; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + /** * Tests for {@link TestGroup}. * @@ -39,37 +40,45 @@ public class TestGroupTests { @Test public void parseNull() throws Exception { - assertThat(TestGroup.parse(null), is(Collections. emptySet())); + assertThat(TestGroup.parse(null), equalTo(Collections. emptySet())); } @Test public void parseEmptyString() throws Exception { - assertThat(TestGroup.parse(""), is(Collections. emptySet())); + assertThat(TestGroup.parse(""), equalTo(Collections. emptySet())); } @Test public void parseWithSpaces() throws Exception { assertThat(TestGroup.parse("PERFORMANCE, PERFORMANCE"), - is((Set) EnumSet.of(TestGroup.PERFORMANCE))); + equalTo((Set) EnumSet.of(TestGroup.PERFORMANCE))); } @Test public void parseInMixedCase() throws Exception { assertThat(TestGroup.parse("performance, PERFormaNCE"), - is((Set) EnumSet.of(TestGroup.PERFORMANCE))); + equalTo((Set) EnumSet.of(TestGroup.PERFORMANCE))); } @Test - public void parseMissing() throws Exception { + public void parseMequalTosing() throws Exception { thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Unable to find test group 'missing' when parsing " + - "testGroups value: 'performance, missing'. Available groups include: " + + thrown.expectMessage("Unable to find test group 'mequalTosing' when parsing " + + "testGroups value: 'performance, mequalTosing'. Available groups include: " + "[LONG_RUNNING,PERFORMANCE,JMXMP,CI,CUSTOM_COMPILATION]"); - TestGroup.parse("performance, missing"); + TestGroup.parse("performance, mequalTosing"); } @Test public void parseAll() throws Exception { - assertThat(TestGroup.parse("all"), is((Set)EnumSet.allOf(TestGroup.class))); + assertThat(TestGroup.parse("all"), equalTo((Set)EnumSet.allOf(TestGroup.class))); + } + + @Test + public void parseAllExcept() throws Exception { + Set expected = new HashSet(EnumSet.allOf(TestGroup.class)); + expected.remove(TestGroup.CUSTOM_COMPILATION); + expected.remove(TestGroup.PERFORMANCE); + assertThat(TestGroup.parse("all-custom_compilation,performance"), equalTo(expected)); } }