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"));

Reply via email to