Hi,

I was running a web test using the latest source code from testify on a
T5.3 application. And I get the following exception for any tests that
contains a request/event:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
 at java.lang.String.substring(String.java:1937)
at java.lang.String.substring(String.java:1904)
 at
org.apache.tapestry5.test.PageTester.setupRequestFromURI(PageTester.java:345)
at
org.apache.tapestry5.test.PageTester.setupRequestFromLink(PageTester.java:331)
 at
org.apache.tapestry5.test.PageTester.runComponentEventRequest(PageTester.java:313)
at
org.apache.tapestry5.test.PageTester.clickLinkAndReturnResponse(PageTester.java:264)
 ...

At bit digging through the code shows that there is mostly a coding bug
in org.apache.tapestry5.test.PageTester#setupRequestFromURI()
 (PageTester.java:345):
--------------------
    private void setupRequestFromURI(String URI)
    {
        String linkPath = stripContextFromPath(URI);
        int comma = linkPath.indexOf('?');
        String path = comma < 0 ? linkPath : linkPath.substring(0, comma);
        request.clear().setPath(path);
        if (comma > 0)
            decodeParametersIntoRequest(path.substring(comma + 1));
    }
--------------------

The *path* variable is the URL path with the event parameters (?xxx)
stripped, trying to substring it again cause the IndexOutOfBounds
exception. The correct variable to pass should instead be: *linkPath*. A
comparison with the same class file confirms my findings (see attached).

My current fix is monkey-patch the PageTester class file. Hopefully this
will be fixed in next release of T53.

Regards,
Kevin Lin
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to