예제 #1
0
  @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();
 }