/** * Tests with no extensions. * * @throws IOException IOException * @throws InterruptedException InterruptedException * @throws ExecutionException ExecutionException */ public void testNoRebuildValidatorExtension() throws IOException, InterruptedException, ExecutionException { Project projectA = createFreeStyleProject("testFreeStyleA"); Build buildA = (Build) projectA .scheduleBuild2( 0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("party", "megaparty"))) .get(); assertNotNull(buildA.getAction(RebuildAction.class)); }
/** * Tests with an extension returning isApplicable false. * * @throws IOException IOException * @throws InterruptedException InterruptedException * @throws ExecutionException ExecutionException */ public void testRebuildValidatorExtensionIsApplicableFalse() throws IOException, InterruptedException, ExecutionException { hudson.getExtensionList(RebuildValidator.class).add(0, new ValidatorNeverApplicable()); Project projectA = createFreeStyleProject("testFreeStyleC"); Build buildA = (Build) projectA .scheduleBuild2( 0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("party", "megaparty"))) .get(); assertNotNull(buildA.getAction(RebuildAction.class)); }
public void testAnt() throws Exception { Ant.AntInstallation ant = configureDefaultAnt(); String antPath = ant.getHome(); Jenkins.getInstance() .getDescriptorByType(Ant.DescriptorImpl.class) .setInstallations(new AntInstallation("ant", "THIS IS WRONG")); project.setScm(new SingleFileSCM("build.xml", "<project name='foo'/>")); project.getBuildersList().add(new Ant("-version", "ant", null, null, null)); configureDumpEnvBuilder(); Build build = project.scheduleBuild2(0).get(); assertBuildStatus(Result.FAILURE, build); ToolLocationNodeProperty property = new ToolLocationNodeProperty( new ToolLocationNodeProperty.ToolLocation( jenkins.getDescriptorByType(AntInstallation.DescriptorImpl.class), "ant", antPath)); slave.getNodeProperties().add(property); build = project.scheduleBuild2(0).get(); System.out.println(build.getLog()); assertBuildStatus(Result.SUCCESS, build); }
@Test public void errorDropdownIsPresentAndIsNotEmpty() throws Exception { JenkinsRule.WebClient wc = j.createWebClient(); wc.login("user1", "user1"); HtmlPage page = wc.goTo("job/x/" + build.getNumber()); page.getElementById("claim").click(); HtmlForm form = page.getFormByName("claim"); HtmlSelect select = form.getSelectByName("_.errors"); HashSet<String> set = new HashSet<String>(); for (HtmlOption option : select.getOptions()) { set.add(option.getValueAttribute()); } assertTrue(set.contains("Default")); assertTrue(set.contains(CAUSE_NAME_2)); assertTrue(set.contains(CAUSE_NAME_1)); }
private ClaimBuildAction applyClaimWithFailureCauseSelected( String element, String error, String reason, String description) throws Exception { HtmlPage page = whenNavigatingtoClaimPage(); page.getElementById(element).click(); HtmlForm form = page.getFormByName("claim"); form.getTextAreaByName("reason").setText(reason); HtmlSelect select = form.getSelectByName("_.errors"); HtmlOption option = select.getOptionByValue(error); select.setSelectedAttribute(option, true); assertEquals(description, form.getTextAreaByName("errordesc").getTextContent()); form.submit((HtmlButton) j.last(form.getHtmlElementsByTagName("button"))); ClaimBuildAction action = build.getAction(ClaimBuildAction.class); return action; }
@Test public void assertNullIsReturnedWithBuildWithoutRequestedAction() { Build<?, ?> build = mock(Build.class); when(build.getActions(Action.class)).thenReturn(null); assertThat(new ActionSequenceRetriever(Action.class, 1).getSequence(build), is(nullValue())); }
/** {@inheritDoc} */ public boolean perform(Build<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { if (coverageReportPattern == null) { listener.getLogger().println("Skipping coverage reports as coverageReportPattern is null"); return false; } if (!Result.SUCCESS.equals(build.getResult())) { listener.getLogger().println("Skipping coverage reports as the build was not successful..."); return true; } listener.getLogger().println("Publishing PureCoverage reports..."); FilePath buildTarget = new FilePath(build.getRootDir()); FilePath[] reports = new FilePath[0]; final FilePath moduleRoot = build.getParent().getWorkspace(); try { reports = moduleRoot.list(coverageReportPattern); } catch (IOException e) { Util.displayIOException(e, listener); e.printStackTrace(listener.fatalError("Unable to find PureCoverage results")); build.setResult(Result.FAILURE); } if (reports.length == 0) { listener .getLogger() .println( "No coverage results were found using the pattern '" + coverageReportPattern + "'. Did you generate the report(s)?"); build.setResult(Result.FAILURE); return true; } if (reports.length > 1) { listener .getLogger() .println( "PureCoverage publisher found more than one report that match the pattern. " + "Currently, accumulating PureCoverage results is not implemented!"); build.setResult(Result.FAILURE); return true; } FilePath singleReport = reports[0]; final FilePath targetPath = new FilePath(buildTarget, CoverageReportsFinder.COVERAGE_PREFIX); try { singleReport.copyTo(targetPath); } catch (IOException e) { Util.displayIOException(e, listener); e.printStackTrace( listener.fatalError( "Unable to copy coverage from " + singleReport + " to " + buildTarget)); build.setResult(Result.FAILURE); } listener.getLogger().println("Parsing PureCoverage results..."); ProjectCoverage projectCoverage = null; CoverageReportsFinder finder = new CoverageReportsFinder(); for (File coverageResult : finder.findReports(build)) { try { CoverageParser coverageParser = new PureCoverageParser(); projectCoverage = coverageParser.parse(coverageResult); } catch (IOException e) { Util.displayIOException(e, listener); e.printStackTrace(listener.fatalError("Unable to parse " + coverageResult)); build.setResult(Result.FAILURE); return false; } } CoverageResult coverageResult = new CoverageResult(build, projectCoverage); build.getActions().add(new CoverageBuildAction(build, coverageResult)); return true; }
@Override public void addAction(Action a) { super.addAction(a); }
@Override public synchronized void doStop(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { super.doStop(req, rsp); }
private HtmlPage whenNavigatingtoClaimPage() throws Exception { JenkinsRule.WebClient wc = j.createWebClient(); wc.login("user1", "user1"); HtmlPage page = wc.goTo("job/x/" + build.getNumber()); return page; }
private static void assertFile(boolean exists, String path, Build<?, ?> b) throws IOException, InterruptedException { if (b.getWorkspace().child(path).exists() != exists) assertEquals(path + ": " + getLog(b), exists, !exists); }