private void addTestRunnerPatchFiles()

in rake-runner-agent/src/jetbrains/buildServer/agent/rakerunner/RakeTasksBuildService.java [332:379]


  private void addTestRunnerPatchFiles(@NotNull final RubySdk sdk,
                                       @NotNull final ModifiableRunnerContext context)
  throws MyBuildFailureException, RunBuildException {
    final Map<String, String> runParams = context.getRunnerParameters();
    final Map<String, String> runnerEnvParams = context.getEnvParameters();

    final StringBuilder buff = new StringBuilder();

    // common part - for rake tasks and tests
    buff.append(RubyProjectSourcesUtil.getLoadPath_PatchRoot_Common());

    // Enable Test::Unit patch for : test::unit, test::spec and shoulda frameworks
    if (SupportedTestFramework.isTestUnitBasedFrameworksActivated(runParams)) {
      buff.append(File.pathSeparatorChar);

      final String testUnitPatchRoot = RubyProjectSourcesUtil.getLoadPath_PatchRoot_TestUnit();
      buff.append(testUnitPatchRoot);

      // for bundler support
      if (BundlerUtil.isBundleExecEmulationEnabled(runParams)) {
        runnerEnvParams.put(TEAMCITY_TESTUNIT_REPORTER_PATCH_LOCATION, testUnitPatchRoot);
      }

      // due to patching loadpath we replace original autorunner but it is used buy our tests runner
      runnerEnvParams.put(ORIGINAL_SDK_AUTORUNNER_PATH_KEY,
        TestUnitUtil.getSDKTestUnitAutoRunnerScriptPath(sdk, context));
      runnerEnvParams.put(ORIGINAL_SDK_TESTRUNNERMEDIATOR_PATH_KEY,
                          TestUnitUtil
                            .getSDKTestUnitTestRunnerMediatorScriptPath(sdk, context));

      // [optional] inform user if minitest framework detected
      final String minitestPath =
        TestUnitUtil.getRuby19SDKMiniTestRunnerScriptPath(sdk);
      if (minitestPath != null) {
        runnerEnvParams.put(ORIGINAL_SDK_19_MINITEST_UNIT_SCRIPT_PATH_KEY, minitestPath);
      }
    }

    // for bdd frameworks
    if (SupportedTestFramework.CUCUMBER.isActivated(runParams)
        || SupportedTestFramework.RSPEC.isActivated(runParams)) {
      buff.append(File.pathSeparatorChar);
      buff.append(RubyProjectSourcesUtil.getLoadPath_PatchRoot_Bdd());
    }

    // patch loadpath
    OSUtil.appendToRUBYLIBEnvVariable(buff.toString(), runnerEnvParams);
  }