This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-9.x by this push:
     new dfa5713f9c WICKET-7119 fixed non-idempotent unit tests (#929)
dfa5713f9c is described below

commit dfa5713f9c60d76fb78d68c41df982236315488f
Author: Kaiyao Ke <47203510+kaiya...@users.noreply.github.com>
AuthorDate: Tue Jul 30 14:45:17 2024 +0800

    WICKET-7119 fixed non-idempotent unit tests (#929)
    
    (cherry picked from commit 1a55391e77e3bc6951a59ac99c6bf23c8b66d40b)
---
 .../apache/wicket/ComponentOnConfigureTest.java    |  11 ++
 .../markup/repeater/AbstractPageableViewTest.java  | 199 +++++++++++----------
 .../pageStore/AbstractPersistentPageStoreTest.java |   2 +
 .../resource/FileSystemResourceReferenceTest.java  |  14 +-
 .../org/apache/wicket/util/string/Strings.java     |   4 +-
 .../org/apache/wicket/util/string/StringsTest.java |   3 +-
 6 files changed, 133 insertions(+), 100 deletions(-)

diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ComponentOnConfigureTest.java 
b/wicket-core/src/test/java/org/apache/wicket/ComponentOnConfigureTest.java
index f1f80aeea3..b6e3444e05 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ComponentOnConfigureTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ComponentOnConfigureTest.java
@@ -28,6 +28,7 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -41,6 +42,16 @@ class ComponentOnConfigureTest extends WicketTestCase
        private static final AtomicInteger BEHAVIOR = new AtomicInteger(0);
        private static final AtomicInteger APPLICATION_LISTENER = new 
AtomicInteger(0);
 
+       @BeforeEach
+       void resetCounters()
+       {
+               COUNTER.set(0);
+               PAGE.set(0);
+               COMPONENT.set(0);
+               BEHAVIOR.set(0);
+               APPLICATION_LISTENER.set(0);
+       }
+       
        /**
         * testOrder()
         */
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/repeater/AbstractPageableViewTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/repeater/AbstractPageableViewTest.java
index 36af146512..b85aff8816 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/repeater/AbstractPageableViewTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/repeater/AbstractPageableViewTest.java
@@ -1,97 +1,104 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.markup.repeater;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.jupiter.api.Test;
-
-/**
- * Test for {@link AbstractPageableView}. 
- */
-public class AbstractPageableViewTest extends WicketTestCase
-{
-       private static int count = 5;
-       
-       /**
-        */
-       @Test
-       public void cachedItemCount()
-       {
-               View view = new View("f");
-               
-               assertEquals(5, view.getItemCount());
-               
-               count = 6;
-
-               assertEquals(5, view.getItemCount(), "still 5 cached");
-               
-               view.beforeRender();
-
-               assertEquals(6, view.getItemCount(), "cached cleared before 
render");
-
-               byte[] bytes = 
tester.getApplication().getFrameworkSettings().getSerializer().serialize(view);
-               
-               view = 
(View)tester.getApplication().getFrameworkSettings().getSerializer().deserialize(bytes);
-               
-               count = 7;
-               
-               assertEquals(7, view.getItemCount(), "cached cleared when 
deserialized");
-               
-               view.detach();
-               
-               count = 8;
-               
-               assertEquals(8, view.getItemCount(), "cached cleared when 
detached");
-       }       
-
-       static class View extends AbstractPageableView<Integer>
-       {
-               public View(String id)
-               {
-                       super(id);
-               }
-
-               @Override
-               protected void populateItem(Item<Integer> item)
-               {
-               }
-               
-               @Override
-               protected long internalGetItemCount()
-               {
-                       return count;
-               }
-               
-               @Override
-               protected Iterator<IModel<Integer>> getItemModels(long offset, 
long size)
-               {
-                       List<IModel<Integer>> models = new ArrayList<>();
-                       for (int m = 0; m < count; m++) {
-                               models.add(Model.of(m));
-                       }
-                       return models.iterator();
-               }
-       }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this 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,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.repeater;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Test for {@link AbstractPageableView}. 
+ */
+public class AbstractPageableViewTest extends WicketTestCase
+{
+       private static int count = 5;
+       
+       @BeforeEach
+       public void resetCount()
+       {
+               count = 5;
+       }
+
+       /**
+        */
+       @Test
+       public void cachedItemCount()
+       {
+               View view = new View("f");
+               
+               assertEquals(5, view.getItemCount());
+               
+               count = 6;
+
+               assertEquals(5, view.getItemCount(), "still 5 cached");
+               
+               view.beforeRender();
+
+               assertEquals(6, view.getItemCount(), "cached cleared before 
render");
+
+               byte[] bytes = 
tester.getApplication().getFrameworkSettings().getSerializer().serialize(view);
+               
+               view = 
(View)tester.getApplication().getFrameworkSettings().getSerializer().deserialize(bytes);
+               
+               count = 7;
+               
+               assertEquals(7, view.getItemCount(), "cached cleared when 
deserialized");
+               
+               view.detach();
+               
+               count = 8;
+               
+               assertEquals(8, view.getItemCount(), "cached cleared when 
detached");
+       }       
+
+       static class View extends AbstractPageableView<Integer>
+       {
+               public View(String id)
+               {
+                       super(id);
+               }
+
+               @Override
+               protected void populateItem(Item<Integer> item)
+               {
+               }
+               
+               @Override
+               protected long internalGetItemCount()
+               {
+                       return count;
+               }
+               
+               @Override
+               protected Iterator<IModel<Integer>> getItemModels(long offset, 
long size)
+               {
+                       List<IModel<Integer>> models = new ArrayList<>();
+                       for (int m = 0; m < count; m++) {
+                               models.add(Model.of(m));
+                       }
+                       return models.iterator();
+               }
+       }
 }
\ No newline at end of file
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPersistentPageStoreTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPersistentPageStoreTest.java
index 783b8ec7df..82402d1ff2 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPersistentPageStoreTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPersistentPageStoreTest.java
@@ -88,6 +88,8 @@ class AbstractPersistentPageStoreTest
                };
                assertTrue(store.canBeAsynchronous(context));
                
+               store.destroy();
+               
        }
 
 }
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
index 0fa16f0c23..56b779b03c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
@@ -23,7 +23,11 @@ import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileSystemAlreadyExistsException;
 import java.nio.file.Path;
+import java.util.Collections;
 
 import org.apache.wicket.core.util.lang.WicketObjects;
 import org.apache.wicket.util.io.ByteArrayOutputStream;
@@ -55,8 +59,14 @@ class FileSystemResourceReferenceTest extends WicketTestCase
                try
                {
                        URL resource = 
FileSystemResourceReferenceTest.class.getResource("FileSystemResourceReferenceTest.zip");
-                       Path path = 
FileSystemResourceReference.getPath(URI.create("jar:" + resource.toURI() +
-                               
"!/folderInZip/FileSystemResourceReference.txt"));
+                       URI uri = URI.create("jar:" + resource.toURI() + 
"!/folderInZip/FileSystemResourceReference.txt");
+                       FileSystem fs = null;
+                       try {
+                               fs = FileSystems.newFileSystem(uri, 
Collections.emptyMap());
+                       } catch (FileSystemAlreadyExistsException e) {
+                               fs = FileSystems.getFileSystem(uri);
+                       }
+                       Path path = 
fs.getPath("/folderInZip/FileSystemResourceReference.txt");
                        final FileSystemResource fileSystemResource = new 
FileSystemResource(path);
                        FileSystemResourceReference fileSystemResourceReference 
= new FileSystemResourceReference(
                                "test", path)
diff --git 
a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java 
b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
index c9cc541179..d367b1bf18 100755
--- a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
@@ -77,7 +77,9 @@ public final class Strings
         * Constructs something like <em>;jsessionid=</em>. This is what 
{@linkplain Strings#stripJSessionId(String)}
         * actually uses.
         */
-       private static final String SESSION_ID_PARAM = ';' + 
SESSION_ID_PARAM_NAME + '=';
+       // the field is not 'final' because we need to modify it in a unit test
+       // see https://github.com/openjdk/jdk/pull/5027#issuecomment-968177213
+       private static String SESSION_ID_PARAM = ';' + SESSION_ID_PARAM_NAME + 
'=';
 
        /**
         * Private constructor prevents construction.
diff --git 
a/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java 
b/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
index 2f0f851e41..4f24f88087 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
@@ -57,6 +57,7 @@ class StringsTest
                sessionIdParamField.setAccessible(true);
                Field modifiersField = getModifiersField();
                modifiersField.setAccessible(true);
+               String origSessionIdParam = (String) 
sessionIdParamField.get(null);
                try {
                        final String customSessionIdParam = ";Custom seSsion - 
ид=";
                        modifiersField.setInt(sessionIdParamField, 
sessionIdParamField.getModifiers() & ~Modifier.FINAL );
@@ -64,7 +65,7 @@ class StringsTest
                        assertEquals(url + ";a=b;c=d?param=a;b",
                                     Strings.stripJSessionId(url + ";a=b;c=d" + 
customSessionIdParam + "12345?param=a;b"));
                } finally {
-                       sessionIdParamField.set(null, "jsessionid");
+                       sessionIdParamField.set(null, origSessionIdParam);
                        modifiersField.setInt(sessionIdParamField, 
sessionIdParamField.getModifiers() & Modifier.FINAL );
                        modifiersField.setAccessible(false);
                        sessionIdParamField.setAccessible(false);

Reply via email to