@Override public boolean perform( final AbstractBuild<?, ?> build, final Launcher launcher, final BuildListener listener) throws InterruptedException, IOException { final PrintStream console = listener.getLogger(); if (!isBuildGoodEnoughToRun(build, console)) return true; final BPBuildEnv currentBuildEnv = new BPBuildEnv( getEnvironmentVariables(build, listener), build.getWorkspace(), build.getTimestamp()); BPBuildEnv targetBuildEnv = null; if (PROMOTION_CLASS_NAME.equals(build.getClass().getCanonicalName())) { AbstractBuild<?, ?> promoted; try { final Method getTarget = build.getClass().getMethod("getTarget", (Class<?>[]) null); promoted = (AbstractBuild) getTarget.invoke(build, (Object[]) null); } catch (Exception e) { throw new RuntimeException(Messages.exception_failedToGetPromotedBuild(), e); } targetBuildEnv = new BPBuildEnv( getEnvironmentVariables(promoted, listener), new FilePath(promoted.getArtifactsDir()), promoted.getTimestamp()); } final BPBuildInfo buildInfo = new BPBuildInfo( listener, consolePrefix, Hudson.getInstance().getRootPath(), currentBuildEnv, targetBuildEnv); fixup(build, buildInfo); final Result result = delegate.perform(buildInfo); if (build.getResult() == null) build.setResult(result); else build.setResult(result.combine(build.getResult())); return result.isBetterOrEqualTo(Result.UNSTABLE); }
private void assertResult(final Result expectedResult, final BPInstanceConfig instanceConfig) { mockControl.replay(); assertEquals(expectedResult, instanceConfig.perform(build, buildInfo)); mockControl.verify(); }