Search in sources :

Example 1 with ConfigurationException

use of com.google.jstestdriver.config.ConfigurationException in project intellij-plugins by JetBrains.

the class TestRunner method executeTests.

private void executeTests(@NotNull File config) {
    Exception exception = null;
    PrintStream nullSystemOut = new PrintStream(new NullOutputStream());
    try {
        System.setOut(nullSystemOut);
        myTreeManager.onJstdConfigRunningStarted(config);
        String runScope = mySettings.getTestFileScope().toJstdStr();
        runTests(config, new String[] { "--dryRunFor", runScope }, true);
        myTreeManager.reportTotalTestCount();
        runTests(config, new String[] { "--tests", runScope }, false);
    } catch (ConfigurationException ce) {
        exception = ce;
    } catch (RuntimeException re) {
        String haltErrorMessage = getErrorMessageIfNoServerRunning(re, mySettings);
        if (haltErrorMessage == null) {
            haltErrorMessage = getErrorMessageIfNoCapturedBrowsersFound(re, mySettings);
        }
        if (haltErrorMessage != null) {
            myTreeManager.onJstdConfigRunningFinished(haltErrorMessage, mySettings.getTestFileScope());
            System.exit(1);
        }
        exception = new Exception("Can't run tests.", re);
    } catch (Exception e) {
        exception = new Exception("Can't run tests.", e);
    } finally {
        String errorMessage = null;
        if (exception != null) {
            errorMessage = TreeManager.formatMessage(exception.getMessage(), exception.getCause());
        }
        myTreeManager.onJstdConfigRunningFinished(errorMessage, mySettings.getTestFileScope());
        nullSystemOut.close();
        System.setOut(myTreeManager.getSystemOutStream());
    }
}
Also used : ConfigurationException(com.google.jstestdriver.config.ConfigurationException) ConfigurationException(com.google.jstestdriver.config.ConfigurationException)

Example 2 with ConfigurationException

use of com.google.jstestdriver.config.ConfigurationException in project intellij-plugins by JetBrains.

the class TestRunner method runTests.

@SuppressWarnings("deprecation")
private void runTests(@NotNull final File configFile, @NotNull String[] extraArgs, final boolean dryRun) throws ConfigurationException {
    JsTestDriverBuilder builder = new JsTestDriverBuilder();
    final ParsedConfiguration parsedConfiguration;
    try {
        parsedConfiguration = JstdConfigParsingUtils.parseConfiguration(configFile);
    } catch (Exception e) {
        throw new ConfigurationException("Configuration file parsing failed.\n" + "See http://code.google.com/p/js-test-driver/wiki/ConfigurationFile for clarification.\n\n" + "Details:", e);
    }
    final File singleBasePath = JstdConfigParsingUtils.getSingleBasePath(parsedConfiguration.getBasePaths(), configFile);
    myTreeManager.setCurrentBasePath(singleBasePath.getAbsolutePath());
    JstdConfigParsingUtils.wipeCoveragePlugin(parsedConfiguration);
    builder.setDefaultConfiguration(parsedConfiguration);
    builder.withPluginInitializer(new PluginInitializer() {

        @Override
        public Module initializeModule(Flags flags, Configuration config) {
            return new AbstractModule() {

                @Override
                public void configure() {
                    Multibinder<TestListener> testListeners = Multibinder.newSetBinder(binder(), TestListener.class);
                    testListeners.addBinding().to(TestResultHolder.class);
                    testListeners.addBinding().toInstance(new IdeaTestListener(myTreeManager, configFile, singleBasePath, dryRun, mySettings.getTestFileScope()));
                }
            };
        }
    });
    builder.setRunnerMode(RunnerMode.QUIET);
    builder.setServer(mySettings.getServerUrl());
    List<String> flagArgs = Lists.newArrayList("--captureConsole", "--server", mySettings.getServerUrl());
    ResolvedConfiguration resolvedConfiguration = JstdConfigParsingUtils.resolveConfiguration(parsedConfiguration);
    if (dryRun && JstdUtils.isJasmineTests(resolvedConfiguration)) {
        // https://github.com/ibolmo/jasmine-jstd-adapter/pull/21
        flagArgs.add("--reset");
    }
    flagArgs.addAll(Arrays.asList(extraArgs));
    List<String> coverageExcludedFiles = null;
    File emptyOutputDir = null;
    boolean runCoverage = false;
    if (myCoverageSession != null && !dryRun) {
        emptyOutputDir = createTempDir();
        if (emptyOutputDir != null) {
            flagArgs.add("--testOutput");
            flagArgs.add(emptyOutputDir.getAbsolutePath());
            List<String> testPaths = getTestFilePaths(resolvedConfiguration);
            coverageExcludedFiles = Lists.newArrayList(testPaths);
            coverageExcludedFiles.addAll(mySettings.getFilesExcludedFromCoverageRec());
            PluginInitializer coverageInitializer = getCoverageInitializer(coverageExcludedFiles);
            if (coverageInitializer != null) {
                builder.withPluginInitializer(coverageInitializer);
                builder.withPluginInitializer(new DependenciesTouchFix());
                runCoverage = true;
            }
        }
    }
    builder.setFlags(toStringArray(flagArgs));
    builder.setFlagsParser(new IntelliJFlagParser(mySettings, dryRun));
    JsTestDriver jstd = builder.build();
    jstd.runConfiguration();
    if (runCoverage) {
        File[] coverageReportFiles = emptyOutputDir.listFiles((dir, name) -> name.endsWith("-coverage.dat"));
        if (coverageReportFiles != null && coverageReportFiles.length == 1) {
            try {
                CoverageReport coverageReport = CoverageSerializationUtils.readLCOV(coverageReportFiles[0]);
                for (String excludedPath : coverageExcludedFiles) {
                    coverageReport.clearReportByFilePath(excludedPath);
                }
                myCoverageSession.mergeReport(coverageReport);
            } catch (Exception e) {
                myTreeManager.printThrowable(e);
            }
        }
    }
}
Also used : PluginInitializer(com.google.jstestdriver.hooks.PluginInitializer) Configuration(com.google.jstestdriver.config.Configuration) ResolvedConfiguration(com.google.jstestdriver.config.ResolvedConfiguration) ParsedConfiguration(com.google.jstestdriver.config.ParsedConfiguration) Multibinder(com.google.inject.multibindings.Multibinder) CoverageReport(com.google.jstestdriver.idea.rt.coverage.CoverageReport) TestResultHolder(com.google.jstestdriver.output.TestResultHolder) JsTestDriverBuilder(com.google.jstestdriver.embedded.JsTestDriverBuilder) ConfigurationException(com.google.jstestdriver.config.ConfigurationException) AbstractModule(com.google.inject.AbstractModule) ResolvedConfiguration(com.google.jstestdriver.config.ResolvedConfiguration) ParsedConfiguration(com.google.jstestdriver.config.ParsedConfiguration) ConfigurationException(com.google.jstestdriver.config.ConfigurationException) TestListener(com.google.jstestdriver.hooks.TestListener) Module(com.google.inject.Module) AbstractModule(com.google.inject.AbstractModule)

Aggregations

ConfigurationException (com.google.jstestdriver.config.ConfigurationException)2 AbstractModule (com.google.inject.AbstractModule)1 Module (com.google.inject.Module)1 Multibinder (com.google.inject.multibindings.Multibinder)1 Configuration (com.google.jstestdriver.config.Configuration)1 ParsedConfiguration (com.google.jstestdriver.config.ParsedConfiguration)1 ResolvedConfiguration (com.google.jstestdriver.config.ResolvedConfiguration)1 JsTestDriverBuilder (com.google.jstestdriver.embedded.JsTestDriverBuilder)1 PluginInitializer (com.google.jstestdriver.hooks.PluginInitializer)1 TestListener (com.google.jstestdriver.hooks.TestListener)1 CoverageReport (com.google.jstestdriver.idea.rt.coverage.CoverageReport)1 TestResultHolder (com.google.jstestdriver.output.TestResultHolder)1