// Copyright 2016 Pants project contributors (see CONTRIBUTORS.md).
// Licensed under the Apache License, Version 2.0 (see LICENSE).
package com.twitter.intellij.pants.integration;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.module.Module;
import com.twitter.intellij.pants.compiler.actions.PantsCompileAllTargetsAction;
import com.twitter.intellij.pants.compiler.actions.PantsCompileAllTargetsInModuleAction;
import com.twitter.intellij.pants.compiler.actions.PantsCompileTargetAction;
import com.twitter.intellij.pants.compiler.actions.PantsRebuildAction;
import com.twitter.intellij.pants.testFramework.OSSPantsIntegrationTest;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
public class OSSPantsCompileActionsTest extends OSSPantsIntegrationTest {
private final DataContext PANTS_PROJECT_DATA = s -> s.equals("project") ? myProject : null;
public void testCompileAllAction() throws Throwable {
doImport("testprojects/src/java/org/pantsbuild/testproject/annotation");
PantsCompileAllTargetsAction compileAllTargetsAction = new PantsCompileAllTargetsAction();
Set<String> targetAddresses = compileAllTargetsAction.getTargets(getPantsActionEvent(), myProject).collect(Collectors.toSet());
Set<String> expectedTargets = new HashSet<>(Arrays.asList(
"testprojects/src/java/org/pantsbuild/testproject/annotation/processor:processor",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/hellomaker:hellomaker",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/processor:processor",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/main:main",
"testprojects/src/java/org/pantsbuild/testproject/annotation/main:main"
));
assertEquals(expectedTargets, targetAddresses);
assertFalse(compileAllTargetsAction.doCleanAll());
}
public void testCompileTargetAction() throws Throwable {
doImport("testprojects/src/java/org/pantsbuild/testproject/annotation");
PantsCompileTargetAction compileTargetAction =
new PantsCompileTargetAction("testprojects/src/java/org/pantsbuild/testproject/annotation/main:main");
Set<String> targetAddresses = compileTargetAction.getTargets(getPantsActionEvent(), myProject).collect(Collectors.toSet());
Set<String> expectedTarget = new HashSet<>(Arrays.asList("testprojects/src/java/org/pantsbuild/testproject/annotation/main:main"));
assertEquals(expectedTarget, targetAddresses);
assertFalse(compileTargetAction.doCleanAll());
}
public void testRebuildAction() throws Throwable {
doImport("testprojects/src/java/org/pantsbuild/testproject/annotation");
PantsRebuildAction rebuildAction = new PantsRebuildAction();
Set<String> targetAddresses = rebuildAction.getTargets(getPantsActionEvent(), myProject).collect(Collectors.toSet());
Set<String> expectedTargets = new HashSet<>(Arrays.asList(
"testprojects/src/java/org/pantsbuild/testproject/annotation/processor:processor",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/hellomaker:hellomaker",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/processor:processor",
"testprojects/src/java/org/pantsbuild/testproject/annotation/processorwithdep/main:main",
"testprojects/src/java/org/pantsbuild/testproject/annotation/main:main"
));
assertEquals(expectedTargets, targetAddresses);
assertTrue(rebuildAction.doCleanAll());
}
public void testCompileAllTargetsInModuleAction() throws Throwable {
doImport("testprojects/src/java/org/pantsbuild/testproject/junit");
Module module = getModule("testprojects_src_java_org_pantsbuild_testproject_junit_testscope_common_sources");
PantsCompileAllTargetsInModuleAction compileAllTargetsInModuleAction = new PantsCompileAllTargetsInModuleAction(module);
Set<String> targetAddresses = compileAllTargetsInModuleAction.getTargets(getPantsActionEvent(), myProject).collect(Collectors.toSet());
Set<String> expectedTargets = new HashSet<>(Arrays.asList(
"testprojects/src/java/org/pantsbuild/testproject/junit/testscope:tests",
"testprojects/src/java/org/pantsbuild/testproject/junit/testscope:check",
"testprojects/src/java/org/pantsbuild/testproject/junit/testscope:lib",
"testprojects/src/java/org/pantsbuild/testproject/junit/testscope:bin"
));
assertEquals(expectedTargets, targetAddresses);
assertFalse(compileAllTargetsInModuleAction.doCleanAll());
}
private AnActionEvent getPantsActionEvent() {
return AnActionEvent.createFromDataContext("", null, PANTS_PROJECT_DATA);
}
}