// Copyright 2015 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.execution.process.OSProcessHandler; import com.intellij.openapi.util.Pair; import com.intellij.util.ArrayUtil; import com.twitter.intellij.pants.testFramework.OSSPantsIntegrationTest; import java.util.Optional; public class OSSPantsTestExamplesIntegrationTest extends OSSPantsIntegrationTest { @Override protected String[] getRequiredPluginIds() { return ArrayUtil.append(super.getRequiredPluginIds(), "JUnit"); } public void testJUnitTests() throws Throwable { doImport("intellij-integration/tests/java/org/pantsbuild/testprojects"); assertFirstSourcePartyModules("intellij-integration_tests_java_org_pantsbuild_testprojects_testprojects"); Pair<Boolean, Optional<String>> result = pantsCompileModule("intellij-integration_tests_java_org_pantsbuild_testprojects_testprojects"); assertPantsCompileExecutesAndSucceeds(result); assertTrue(result.getSecond().isPresent()); assertTrue(result.getSecond().get().contains("compile intellij-integration/tests/java/org/pantsbuild/testprojects:testprojects")); assertSuccessfulTest( "intellij-integration_tests_java_org_pantsbuild_testprojects_testprojects", "org.pantsbuild.testprojects.JUnitIntegrationTest"); final OSProcessHandler processHandler = runJUnitTest( "intellij-integration_tests_java_org_pantsbuild_testprojects_testprojects", "org.pantsbuild.testprojects.JUnitIntegrationTest", "-DPANTS_FAIL_TEST=true" ); assertTrue("Tests should fail!", processHandler.getProcess().exitValue() != 0); } public void testScopedJUnitTests() throws Throwable { /** * Import 3 targets: * testprojects/tests/java/org/pantsbuild/testproject/dummies:passing_target * testprojects/tests/java/org/pantsbuild/testproject/dummies:failing_target * testprojects/tests/java/org/pantsbuild/testproject/matcher:matcher */ doImport("testprojects/tests/java/org/pantsbuild/testproject/matcher"); doImport("testprojects/tests/java/org/pantsbuild/testproject/dummies"); String passingTarget = "testprojects/tests/java/org/pantsbuild/testproject/dummies:passing_target"; String failingTarget = "testprojects/tests/java/org/pantsbuild/testproject/dummies:failing_target"; String matcherTarget = "testprojects/tests/java/org/pantsbuild/testproject/matcher:matcher"; Pair<Boolean, Optional<String>> result = pantsCompileModule("testprojects_tests_java_org_pantsbuild_testproject_matcher_matcher"); assertPantsCompileExecutesAndSucceeds(result); assertTrue(result.getSecond().isPresent()); String output = result.getSecond().get(); // Make sure only matcher target is compiled assertContainsSubstring(output, matcherTarget); assertNotContainsSubstring(output, passingTarget); assertNotContainsSubstring(output, failingTarget); assertSuccessfulTest( "testprojects_tests_java_org_pantsbuild_testproject_matcher_matcher", "org.pantsbuild.testproject.matcher.MatcherTest" ); // Make sure only the 2 dummies targets are compiled. Pair<Boolean, Optional<String>>resultB = pantsCompileModule("testprojects_tests_java_org_pantsbuild_testproject_dummies_common_sources"); String outputB = resultB.getSecond().get(); assertContainsSubstring(outputB, passingTarget); assertContainsSubstring(outputB, failingTarget); assertNotContainsSubstring(outputB, matcherTarget); // makeProject() will result all 3 targets to be compiled. Pair<Boolean, Optional<String>> resultC = pantsCompileProject(); assertPantsCompileExecutesAndSucceeds(resultC); String outputC = resultC.getSecond().get(); assertContainsSubstring(outputC, passingTarget); assertContainsSubstring(outputC, failingTarget); assertContainsSubstring(outputC, matcherTarget); } }