Support relaunching of test cases. Just reload the initial browser page and the test cases will be executed again. Useful when setting breakpoints. emul
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 11 Feb 2013 19:47:46 +0100
branchemul
changeset 709722c51330e75
parent 708 59d5596a9c6c
child 710 769b77cdb7a5
Support relaunching of test cases. Just reload the initial browser page and the test cases will be executed again. Useful when setting breakpoints.
launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
     1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Mon Feb 11 12:46:43 2013 +0100
     1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Mon Feb 11 19:47:46 2013 +0100
     1.3 @@ -191,10 +191,26 @@
     1.4                  String id = request.getParameter("request");
     1.5                  String value = request.getParameter("result");
     1.6                  
     1.7 +                
     1.8 +                InvocationContext mi = null;
     1.9 +                int caseNmbr = -1;
    1.10 +                
    1.11                  if (id != null && value != null) {
    1.12                      LOG.log(Level.INFO, "Received result for case {0} = {1}", new Object[]{id, value});
    1.13                      value = decodeURL(value);
    1.14 -                    cases.get(Integer.parseInt(id)).result(value, null);
    1.15 +                    int indx = Integer.parseInt(id);
    1.16 +                    cases.get(indx).result(value, null);
    1.17 +                    if (++indx < cases.size()) {
    1.18 +                        mi = cases.get(indx);
    1.19 +                        LOG.log(Level.INFO, "Re-executing case {0}", indx);
    1.20 +                        caseNmbr = indx;
    1.21 +                    }
    1.22 +                } else {
    1.23 +                    if (!cases.isEmpty()) {
    1.24 +                        LOG.info("Re-executing test cases");
    1.25 +                        mi = cases.get(0);
    1.26 +                        caseNmbr = 0;
    1.27 +                    }
    1.28                  }
    1.29                  
    1.30                  if (prev != null) {
    1.31 @@ -202,7 +218,10 @@
    1.32                      prev = null;
    1.33                  }
    1.34                  
    1.35 -                InvocationContext mi = methods.take();
    1.36 +                if (mi == null) {
    1.37 +                    mi = methods.take();
    1.38 +                    caseNmbr = cnt++;
    1.39 +                }
    1.40                  if (mi == END) {
    1.41                      response.getWriter().write("");
    1.42                      wait.countDown();
    1.43 @@ -218,11 +237,11 @@
    1.44                  cases.add(mi);
    1.45                  final String cn = mi.clazz.getName();
    1.46                  final String mn = mi.methodName;
    1.47 -                LOG.log(Level.INFO, "Request for {0} case. Sending {1}.{2}", new Object[]{cnt, cn, mn});
    1.48 +                LOG.log(Level.INFO, "Request for {0} case. Sending {1}.{2}", new Object[]{caseNmbr, cn, mn});
    1.49                  response.getWriter().write("{"
    1.50                      + "className: '" + cn + "', "
    1.51                      + "methodName: '" + mn + "', "
    1.52 -                    + "request: " + cnt
    1.53 +                    + "request: " + caseNmbr
    1.54                  );
    1.55                  if (mi.html != null) {
    1.56                      response.getWriter().write(", html: '");
    1.57 @@ -230,7 +249,6 @@
    1.58                      response.getWriter().write("'");
    1.59                  }
    1.60                  response.getWriter().write("}");
    1.61 -                cnt++;
    1.62              }
    1.63          }, "/data");
    1.64