Search in sources :

Example 1 with ParsedConfiguration

use of com.google.jstestdriver.config.ParsedConfiguration 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)

Example 2 with ParsedConfiguration

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

the class JstdTestFilePathIndex method doIndexConfigFile.

@NotNull
private static Map<String, Void> doIndexConfigFile(@NotNull Reader configFileReader, @NotNull BasePaths initialBasePaths) {
    YamlParser yamlParser = new YamlParser();
    final Map<String, Void> map = new THashMap<>();
    ParsedConfiguration parsedConfiguration = (ParsedConfiguration) yamlParser.parse(configFileReader, initialBasePaths);
    PathResolver pathResolver = new PathResolver(parsedConfiguration.getBasePaths(), Collections.emptySet(), new DisplayPathSanitizer());
    FlagsImpl flags = new FlagsImpl();
    flags.setServer("test:1");
    ResolvedConfiguration resolvedConfiguration = (ResolvedConfiguration) parsedConfiguration.resolvePaths(pathResolver, flags);
    doPutAll(map, resolvedConfiguration.getTests());
    doPutAll(map, resolvedConfiguration.getFilesList());
    return map;
}
Also used : YamlParser(com.google.jstestdriver.config.YamlParser) DisplayPathSanitizer(com.google.jstestdriver.util.DisplayPathSanitizer) ResolvedConfiguration(com.google.jstestdriver.config.ResolvedConfiguration) ParsedConfiguration(com.google.jstestdriver.config.ParsedConfiguration) THashMap(gnu.trove.THashMap) PathResolver(com.google.jstestdriver.PathResolver) FlagsImpl(com.google.jstestdriver.FlagsImpl) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with ParsedConfiguration

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

the class JstdDebuggingFileFinderProvider method resolveConfiguration.

@NotNull
private ResolvedConfiguration resolveConfiguration() throws ExecutionException {
    VirtualFile configVirtualFile = VfsUtil.findFileByIoFile(myConfigFile, false);
    if (configVirtualFile == null) {
        throw new ExecutionException("Cannot find JsTestDriver configuration file " + myConfigFile.getAbsolutePath());
    }
    BasePaths dirBasePaths = new BasePaths(myConfigFile.getParentFile());
    final byte[] content;
    try {
        content = configVirtualFile.contentsToByteArray();
    } catch (IOException e) {
        throw new ExecutionException("Cannot read JsTestDriver configuration file " + configVirtualFile.getPath());
    }
    Reader reader = new InputStreamReader(new ByteArrayInputStream(content), Charset.defaultCharset());
    try {
        YamlParser yamlParser = new YamlParser();
        ParsedConfiguration parsedConfiguration = (ParsedConfiguration) yamlParser.parse(reader, dirBasePaths);
        JstdConfigParsingUtils.wipeCoveragePlugin(parsedConfiguration);
        return JstdConfigParsingUtils.resolveConfiguration(parsedConfiguration);
    } catch (Exception e) {
        String message = "Malformed JsTestDriver configuration file " + configVirtualFile.getPath();
        LOG.warn(message, e);
        throw new ExecutionException(message);
    } finally {
        try {
            reader.close();
        } catch (IOException ignored) {
        }
    }
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) YamlParser(com.google.jstestdriver.config.YamlParser) ParsedConfiguration(com.google.jstestdriver.config.ParsedConfiguration) ExecutionException(com.intellij.execution.ExecutionException) BasePaths(com.google.jstestdriver.model.BasePaths) ExecutionException(com.intellij.execution.ExecutionException) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

ParsedConfiguration (com.google.jstestdriver.config.ParsedConfiguration)3 ResolvedConfiguration (com.google.jstestdriver.config.ResolvedConfiguration)2 YamlParser (com.google.jstestdriver.config.YamlParser)2 NotNull (org.jetbrains.annotations.NotNull)2 AbstractModule (com.google.inject.AbstractModule)1 Module (com.google.inject.Module)1 Multibinder (com.google.inject.multibindings.Multibinder)1 FlagsImpl (com.google.jstestdriver.FlagsImpl)1 PathResolver (com.google.jstestdriver.PathResolver)1 Configuration (com.google.jstestdriver.config.Configuration)1 ConfigurationException (com.google.jstestdriver.config.ConfigurationException)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 BasePaths (com.google.jstestdriver.model.BasePaths)1 TestResultHolder (com.google.jstestdriver.output.TestResultHolder)1 DisplayPathSanitizer (com.google.jstestdriver.util.DisplayPathSanitizer)1 ExecutionException (com.intellij.execution.ExecutionException)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1