This is an automated email from the ASF dual-hosted git repository. sebb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-validator.git
The following commit(s) were added to refs/heads/master by this push: new dcf935a Proper startup tests dcf935a is described below commit dcf935a9ef9909e59f631ecbda6d00e2a8ac8450 Author: Sebb <s...@apache.org> AuthorDate: Sat Jul 25 18:10:39 2020 +0100 Proper startup tests These use a separate classloader per test --- pom.xml | 8 +++ .../validator/routines/DomainValidator.java | 8 --- .../routines/DomainValidatorStartupTest.java | 82 ++++++++++++++++++---- 3 files changed, 76 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index 802a643..8ad3a43 100644 --- a/pom.xml +++ b/pom.xml @@ -182,6 +182,14 @@ <scope>test</scope> </dependency> + <dependency> + <!-- For testing DomainValidatorStartup --> + <groupId>org.bitstrings.test</groupId> + <artifactId>junit-clptr</artifactId> + <version>1.2.2</version> + <scope>test</scope> + </dependency> + </dependencies> <reporting> diff --git a/src/main/java/org/apache/commons/validator/routines/DomainValidator.java b/src/main/java/org/apache/commons/validator/routines/DomainValidator.java index d39e4b8..a9a4988 100644 --- a/src/main/java/org/apache/commons/validator/routines/DomainValidator.java +++ b/src/main/java/org/apache/commons/validator/routines/DomainValidator.java @@ -1935,14 +1935,6 @@ public class DomainValidator implements Serializable { ; }; - // For use by unit test code only - static synchronized void clearTLDOverrides() { - inUse = false; - countryCodeTLDsPlus = EMPTY_STRING_ARRAY; - countryCodeTLDsMinus = EMPTY_STRING_ARRAY; - genericTLDsPlus = EMPTY_STRING_ARRAY; - genericTLDsMinus = EMPTY_STRING_ARRAY; - } /** * Update one of the TLD override arrays. * This must only be done at program startup, before any instances are accessed using getInstance. diff --git a/src/test/java/org/apache/commons/validator/routines/DomainValidatorStartupTest.java b/src/test/java/org/apache/commons/validator/routines/DomainValidatorStartupTest.java index 37306b7..abf6792 100644 --- a/src/test/java/org/apache/commons/validator/routines/DomainValidatorStartupTest.java +++ b/src/test/java/org/apache/commons/validator/routines/DomainValidatorStartupTest.java @@ -19,24 +19,19 @@ package org.apache.commons.validator.routines; import static org.junit.Assert.*; import org.apache.commons.validator.routines.DomainValidator.ArrayType; -import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; + +import org.bitstrings.test.junit.runner.ClassLoaderPerTestRunner; + /** * Startup Tests for the DomainValidator. * * @version $Revision$ */ +@RunWith( ClassLoaderPerTestRunner.class ) public class DomainValidatorStartupTest { - private DomainValidator validator; - - @Before - public void setUp() { - validator = DomainValidator.getInstance(); - DomainValidator.clearTLDOverrides(); // N.B. this clears the inUse flag, allowing overrides - } - - @Test(expected = IllegalArgumentException.class) public void testUpdateBaseArrayCC() { DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_RO, new String[]{"com"}); @@ -58,42 +53,101 @@ public class DomainValidatorStartupTest { } @Test - public void testUpdateCountryCode() { + public void testUpdateCountryCode1a() { + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidCountryCodeTld("com")); // cannot be valid + } + + @Test + public void testUpdateCountryCode1b() { DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_PLUS, new String[]{"com"}); + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidCountryCodeTld("com")); // it is now! + } + + @Test + public void testUpdateCountryCode2() { + DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_PLUS, new String[]{"com"}); DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"com"}); + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidCountryCodeTld("com")); // show that minus overrides the rest + } + @Test + public void testUpdateCountryCode3a() { // show ch is valid + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidCountryCodeTld("ch")); + } + + @Test + public void testUpdateCountryCode3b() { // show ch can be made invalid DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"ch"}); + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidCountryCodeTld("ch")); + } + + @Test + public void testUpdateCountryCode3c() { // show ch can be made valid again by replacing the CC array + DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"ch"}); DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"xx"}); + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidCountryCodeTld("ch")); } @Test - public void testUpdateGeneric() { + public void testUpdateGeneric1() { + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidGenericTld("ch")); // cannot be valid + } + + @Test + public void testUpdateGeneric2() { DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"}); + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidGenericTld("ch")); // it is now! + } + + @Test + public void testUpdateGeneric3() { + DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"}); DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"ch"}); + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidGenericTld("ch")); // show that minus overrides the rest - assertTrue(validator.isValidGenericTld("com")); + } + + @Test + public void testUpdateGeneric4() { + DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"}); + DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"ch"}); DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"com"}); + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidGenericTld("com")); + } + + @Test + public void testUpdateGeneric5() { + DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"}); + DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"ch"}); + DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"com"}); DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"xx"}); // change the minus list + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidGenericTld("com")); } @Test - public void testVALIDATOR_412() { + public void testVALIDATOR_412a() { + DomainValidator validator = DomainValidator.getInstance(); assertFalse(validator.isValidGenericTld("local")); assertFalse(validator.isValid("abc.local")); assertFalse(validator.isValidGenericTld("pvt")); assertFalse(validator.isValid("abc.pvt")); + } + + @Test + public void testVALIDATOR_412b() { DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"local", "pvt"}); + DomainValidator validator = DomainValidator.getInstance(); assertTrue(validator.isValidGenericTld("local")); assertTrue(validator.isValid("abc.local")); assertTrue(validator.isValidGenericTld("pvt"));