private void setupScriptingFactory()

in rake-runner-test/src/jetbrains/slow/plugins/rakerunner/RVMInfoUtilTest.java [71:113]


  private void setupScriptingFactory(@NotNull final String currentOutput, @NotNull final Map<String, String> infoMap) {
    ScriptingRunnersProvider.setRVMDefault(new ScriptingRunnersProvider() {

      @NotNull
      @Override
      public RubyScriptRunner getRubyScriptRunner() {
        throw new UnsupportedOperationException("This is a mock for tests");
      }

      @NotNull
      @Override
      public ShellScriptRunner getShellScriptRunner() {
        return new ShellScriptRunner() {
          @NotNull
          public ExecResult run(@NotNull final String script,
                                @NotNull final String workingDirectory,
                                @Nullable final Map<String, String> environment) {
            final String[] strings = script.split(" ");
            Assert.assertTrue(strings.length >= 2);
            Assert.assertEquals(strings[0], "rvm", "Must starts with 'rvm'");
            if ("current".equals(strings[1])) {
              final ExecResult result = new ExecResult();
              result.setExitCode(0);
              result.setStdout(currentOutput);
              return result;
            } else if ("info".equals(strings[1])) {
              final String type = strings[2];
              Assert.assertNotNull(type);
              final String ret = infoMap.get(type);
              Assert.assertNotNull(ret, "Not found: " + type);
              final ExecResult result = new ExecResult();
              result.setExitCode(0);
              result.setStdout(ret);
              return result;
            } else {
              Assert.fail("Mock does not supports command '" + script + "'");
              return null;
            }
          }
        };
      }
    });
  }