Convert TestNG to Spock
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/24fb3036 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/24fb3036 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/24fb3036 Branch: refs/heads/master Commit: 24fb3036ed2a24849b4894e37f55af86f958d422 Parents: 5dc2d7e Author: Howard M. Lewis Ship <[email protected]> Authored: Sun Jun 3 12:37:08 2012 -0700 Committer: Howard M. Lewis Ship <[email protected]> Committed: Sun Jun 3 12:37:08 2012 -0700 ---------------------------------------------------------------------- .../tapestry5/util/ExceptionUtilsSpec.groovy | 53 +++++++++++++ .../tapestry5/ioc/util/ExceptionUtilsTest.java | 61 --------------- 2 files changed, 53 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/24fb3036/tapestry-ioc/src/test/groovy/org/apache/tapestry5/util/ExceptionUtilsSpec.groovy ---------------------------------------------------------------------- diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/util/ExceptionUtilsSpec.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/util/ExceptionUtilsSpec.groovy new file mode 100644 index 0000000..1bc4796 --- /dev/null +++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/util/ExceptionUtilsSpec.groovy @@ -0,0 +1,53 @@ +package org.apache.tapestry5.util + +import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl +import org.apache.tapestry5.ioc.internal.util.TapestryException +import org.apache.tapestry5.ioc.util.ExceptionUtils +import org.apache.tapestry5.ioc.util.ExceptionWrapper +import spock.lang.Shared +import spock.lang.Specification + +class ExceptionUtilsSpec extends Specification { + + @Shared + def access = new PropertyAccessImpl() + + def "find cause with match"() { + when: + def inner = new TapestryException("foo", null) + def outer = new RuntimeException(inner) + + then: + + ExceptionUtils.findCause(outer, TapestryException).is(inner) + ExceptionUtils.findCause(outer, TapestryException, access).is(inner) + } + + def "find cause with no match"() { + + when: + + def re = new RuntimeException("No cause for you.") + + then: + + ExceptionUtils.findCause(re, TapestryException) == null + ExceptionUtils.findCause(re, TapestryException, access) == null + } + + def "find a hidden exception"() { + when: + + def inner = new RuntimeException() + def outer = new ExceptionWrapper(inner) + + then: + + // TAP5-1639: The old code can't find inner + ExceptionUtils.findCause(outer, RuntimeException) == null + + // The new reflection-based on can: + + ExceptionUtils.findCause(outer, RuntimeException, access).is(inner) + } +} http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/24fb3036/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java ---------------------------------------------------------------------- diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java deleted file mode 100644 index 2935bc6..0000000 --- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2008, 2011 The Apache Software Foundation -// -// Licensed 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.tapestry5.ioc.util; - -import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl; -import org.apache.tapestry5.ioc.internal.util.TapestryException; -import org.apache.tapestry5.ioc.services.PropertyAccess; -import org.testng.Assert; -import org.testng.annotations.Test; - -public class ExceptionUtilsTest extends Assert -{ - private final PropertyAccess access = new PropertyAccessImpl(); - - @Test - public void find_cause_with_match() - { - TapestryException inner = new TapestryException("foo", null); - - RuntimeException outer = new RuntimeException(inner); - - assertSame(ExceptionUtils.findCause(outer, TapestryException.class), inner); - assertSame(ExceptionUtils.findCause(outer, TapestryException.class, access), inner); - - } - - @Test - public void find_cause_no_match() - { - RuntimeException re = new RuntimeException("No cause for you!"); - - assertNull(ExceptionUtils.findCause(re, TapestryException.class)); - assertNull(ExceptionUtils.findCause(re, TapestryException.class, access)); - } - - @Test - public void find_hidden_exception() - { - RuntimeException inner = new RuntimeException(); - Exception outer = new ExceptionWrapper(inner); - - // TAP5-1639: The old code can't find inner - assertNull(ExceptionUtils.findCause(outer, RuntimeException.class)); - - // The new reflection-based code can: - assertSame(ExceptionUtils.findCause(outer, RuntimeException.class, access), inner); - } - -}
