All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.jstestdriver.RunTestsAction Maven / Gradle / Ivy

/*
 * Copyright 2009 Google Inc.
 *
 * 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 com.google.jstestdriver;

import com.google.jstestdriver.hooks.TestsPreProcessor;
import com.google.jstestdriver.model.JstdTestCase;
import com.google.jstestdriver.model.RunData;
import com.google.jstestdriver.util.StopWatch;

import java.util.List;
import java.util.Set;

/**
 * Run the tests in the browser.
 * @author [email protected] (Jeremie Lenfant-Engelmann)
 */
public class RunTestsAction implements BrowserAction {

  private final List tests;
  private final boolean captureConsole;
  private final Set preProcessors;
  private final ResponseStreamFactory responseStreamFactory;
  private final StopWatch stopWatch;

  public RunTestsAction(ResponseStreamFactory responseStreamFactory,
                        List tests,
                        boolean captureConsole,
                        Set preProcessors,
                        StopWatch stopWatch) {
    this.responseStreamFactory = responseStreamFactory;
    this.tests = tests;
    this.captureConsole = captureConsole;
    this.preProcessors = preProcessors;
    this.stopWatch = stopWatch;
  }

  /**
   * @param client The client to run tests in.
   * @param id The Browser id to execute tests in.
   */
  public ResponseStream run(String id, JsTestDriverClient client, RunData runData, JstdTestCase testCase) {
    List testsToRun = tests;
    for (TestsPreProcessor preProcessor : preProcessors) {
      // makes sure that the preProcessor doesn't modify the base test list
      // by providing an Iterator
      stopWatch.start("TestsPreProcessor: %s", preProcessor);
      testsToRun = preProcessor.process(id, testsToRun.iterator());
      stopWatch.stop("TestsPreProcessor: %s", preProcessor);
    }
    final ResponseStream runTestsActionResponseStream =
          responseStreamFactory.getRunTestsActionResponseStream(id);

    stopWatch.start("RunTests: %s", id);
    if (testsToRun.size() == 1 && testsToRun.get(0).equals("all")) {
      client.runAllTests(id, runTestsActionResponseStream, captureConsole, testCase);
    } else if (testsToRun.size() > 0) {
      client.runTests(id, runTestsActionResponseStream, testsToRun, captureConsole, testCase);
    }
    stopWatch.stop("RunTests: %s", id);
    return runTestsActionResponseStream;
  }

  public List getTests() {
    return tests;
  }

  public boolean isCaptureConsole() {
    return captureConsole;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy