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);
}