You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/03/20 20:58:46 UTC

[03/48] wicket git commit: Modify StatelessCheckerTest And fix bug.

Modify StatelessCheckerTest And fix bug.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c39fbdc9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c39fbdc9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c39fbdc9

Branch: refs/heads/master
Commit: c39fbdc99e142c6b2c27ea79c34fe6dda98c9ec2
Parents: 20c2b89
Author: kensakurai <sa...@gmail.com>
Authored: Sat Feb 18 19:48:33 2017 +0900
Committer: kensakurai <sa...@gmail.com>
Committed: Sat Feb 18 19:48:33 2017 +0900

----------------------------------------------------------------------
 .../StatelessCheckFailureException.java         |   2 +-
 .../devutils/stateless/StatelessChecker.java    |   4 +
 .../stateless/StatelessCheckerTest.java         | 126 +++++++++++--------
 3 files changed, 78 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
index b87e79a..84def0a 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
@@ -42,7 +42,7 @@ public class StatelessCheckFailureException  extends WicketRuntimeException
 	 */
 	public StatelessCheckFailureException(Component component, String reason)
     {
-        super("'" + component + "' claims to be stateless but isn't. ");
+        super("'" + component + "' claims to be stateless but isn't." + reason);
         this.component = component;
     }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
index b2a7a32..5312b2f 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
@@ -120,6 +120,7 @@ public class StatelessChecker implements IComponentOnBeforeRenderListener
 				    reason = " Stateful behaviors: " + statefulBehaviors.join();
 				}
 				fail(new StatelessCheckFailureException(component, reason));
+				return;
 			}
 
 			if (component instanceof MarkupContainer)
@@ -130,6 +131,7 @@ public class StatelessChecker implements IComponentOnBeforeRenderListener
 				if (o != null)
 				{
 					fail(new StatelessCheckFailureException(container, " Offending component: " + o));
+					return;
 				}
 			}
 
@@ -139,10 +141,12 @@ public class StatelessChecker implements IComponentOnBeforeRenderListener
 				if (!p.isBookmarkable())
 				{
 					fail(new StatelessCheckFailureException(p, " Only bookmarkable pages can be stateless"));
+					return;
 				}
 				if (!p.isPageStateless())
 				{
 					fail(new StatelessCheckFailureException(p, " for unknown reason"));
+					return;
 				}
 			}
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java b/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
index 41df859..0d16468 100644
--- a/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
+++ b/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
@@ -87,14 +87,27 @@ public class StatelessCheckerTest extends Assert
 		}
 	}
 
-	private final StatelessChecker checker = new StatelessChecker();
+	/**
+	 * StatelessCheckerQuietly
+	 */
+	private static class StatelessCheckerQuietly extends StatelessChecker
+	{
+		private StatelessCheckFailureException ex;
 
-	private final StatelessChecker checkerQuietly = new StatelessChecker() {
 		protected void fail(StatelessCheckFailureException e)
 		{
-			// Do Nothing...
+			this.ex = e;
 		}
-	};
+
+		public StatelessCheckFailureException getFailureException()
+		{
+			return ex;
+		}
+	}
+
+	private StatelessChecker checker;
+
+	private StatelessCheckerQuietly checkerQuietly;
 
 	private WicketTester tester;
 
@@ -105,6 +118,8 @@ public class StatelessCheckerTest extends Assert
 	public void setUp()
 	{
 		tester = new WicketTester();
+		checker = new StatelessChecker();
+		checkerQuietly = new StatelessCheckerQuietly();
 	}
 
 	/**
@@ -119,95 +134,100 @@ public class StatelessCheckerTest extends Assert
 	@Test
 	public void testNonBookmarkablePage()
 	{
-		boolean hit1 = false;
 		try
 		{
-			tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-			tester.startPage(StatelessPage.class);
+			startNonBookmarkablePage(checker);
+			fail("Expected tester.startPage() to fail with StatelessCheckFailureException");
 		}
 		catch (StatelessCheckFailureException ex)
 		{
-			hit1 = true;
+			assertNonBookmarkablePage(ex);
 		}
-		boolean hit = hit1;
-		assertTrue("Expected exception", hit);
 	}
 
 	@Test
 	public void testNonBookmarkablePageQuietly()
 	{
-		boolean hit1 = false;
+		startNonBookmarkablePage(checkerQuietly);
+		StatelessCheckFailureException ex = checkerQuietly.getFailureException();
+		assertNonBookmarkablePage(ex);
+	}
+
+	private void startNonBookmarkablePage(StatelessChecker checker)
+	{
+		tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
+		tester.startPage(StatelessPage.class);
+	}
+
+	private void assertNonBookmarkablePage(StatelessCheckFailureException ex) {
+		assertEquals("'[Page class = org.apache.wicket.devutils.stateless.StatelessCheckerTest$StatelessPage, id = 0, render count = 1]' claims to be stateless but isn't. Offending component: [TestLink [Component id = testPage]]", ex.getMessage());
+		assertEquals(StatelessPage.class, ex.getComponent().getClass());
+	}
+
+	@Test
+	public void testStatefulBehaviors()
+	{
 		try
 		{
-			tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checkerQuietly);
-			tester.startPage(StatelessPage.class);
+			startComponentInPage(checker, new StatelessLabel("foo").add(new StatefulBehavior()));
+			fail("Expected tester.startComponentInPage() to fail with StatelessCheckFailureException");
 		}
 		catch (StatelessCheckFailureException ex)
 		{
-			hit1 = true;
+			assertStatefulBehaviors(ex);
 		}
-		boolean hit = hit1;
-		assertFalse("Expected exception", hit);
 	}
 
 	@Test
-	public void testStatefulBehaviors()
-	{
-		boolean hit = isHitBehaviors(checker);
-		assertTrue("Expected exception", hit);
-	}
-	@Test
 	public void testStatefulBehaviorsQuietly()
 	{
-		boolean hit = isHitBehaviors(checkerQuietly);
-		assertFalse("Expected exception", hit);
+		startComponentInPage(checkerQuietly, new StatelessLabel("foo").add(new StatefulBehavior()));
+		StatelessCheckFailureException ex = checkerQuietly.getFailureException();
+		assertStatefulBehaviors(ex);
 	}
 
-	@Test
-	public void testPositive()
-	{
+	private void startComponentInPage(StatelessChecker checker, Component foo) {
 		tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-		tester.startComponentInPage(new StatelessLabel("foo"));
+		tester.startComponentInPage(foo);
 	}
 
-	@Test
-	public void testStatefulMarkupContainer() {
-		boolean hit = isHitMarkupContainer(checker);
-		assertTrue("Expected exception", hit);
+	private void assertStatefulBehaviors(StatelessCheckFailureException ex) {
+		assertEquals("'[Component id = foo]' claims to be stateless but isn't. Stateful behaviors: org.apache.wicket.devutils.stateless.StatelessCheckerTest$StatefulBehavior", ex.getMessage());
+		assertEquals(StatelessLabel.class, ex.getComponent().getClass());
 	}
 
 	@Test
-	public void testStatefulMarkupContainerQuietly() {
-		boolean hit = isHitMarkupContainer(checkerQuietly);
-		assertFalse("Expected exception", hit);
+	public void testPositive()
+	{
+		startComponentInPage(checker, new StatelessLabel("foo"));
 	}
 
-	private boolean isHitMarkupContainer(StatelessChecker checker) {
-		boolean hit = false;
+	@Test
+	public void testStatefulMarkupContainer()
+	{
 		try
 		{
-			tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-			tester.startComponentInPage(new StatefulMarkupContainer("foo"));
+			startComponentInPage(checker, new StatefulMarkupContainer("foo"));
+			fail("Expected tester.startComponentInPage() to fail with StatelessCheckFailureException");
 		}
 		catch (StatelessCheckFailureException ex)
 		{
-			hit = true;
+			assertStatefulMarkupContainer(ex);
 		}
-		return hit;
 	}
 
-	private boolean isHitBehaviors(StatelessChecker checker) {
-		boolean hit = false;
-		try
-		{
-			tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-			tester.startComponentInPage(new StatelessLabel("foo").add(new StatefulBehavior()));
-		}
-		catch (StatelessCheckFailureException ex)
-		{
-			hit = true;
-		}
-		return hit;
+	@Test
+	public void testStatefulMarkupContainerQuietly()
+	{
+		startComponentInPage(checkerQuietly, new StatefulMarkupContainer("foo"));
+		StatelessCheckFailureException ex = checkerQuietly.getFailureException();
+		assertStatefulMarkupContainer(ex);
+
 	}
 
+	private void assertStatefulMarkupContainer(StatelessCheckFailureException ex)
+	{
+		assertEquals("'[StatefulMarkupContainer [Component id = foo]]' claims to be stateless but isn't. Possible reason: no stateless hint", ex.getMessage());
+		assertEquals(StatefulMarkupContainer.class, ex.getComponent().getClass());
+	}
 }