@Override public BuildCommand buildCommand() { BuildCommand exec = BuildCommand.exec(this.command, args); if (workingDir != null) { exec.setWorkingDirectory(workingDir.getPath()); } return exec; } }
private BuildCommand update(String workingDir, Revision revision) { ArrayList<String> args = new ArrayList<>(); addCredentials(args); args.add("update"); args.add("--non-interactive"); args.add("-r"); args.add(revision.getRevision()); args.add(workingDir); return exec("svn", args.toArray(new String[args.size()])); }
private BuildCommand checkout(String workingDir, Revision revision) { ArrayList<String> args = new ArrayList<>(); addCredentials(args); args.add("checkout"); args.add("--non-interactive"); args.add("-r"); args.add(revision.getRevision()); args.add(material.getUrlArgument().forCommandline()); args.add(workingDir); return exec("svn", args.toArray(new String[args.size()])); }
@Override public BuildCommand buildCommand() { String[] argsArray = CommandLine.translateCommandLine(args); BuildCommand exec = BuildCommand.exec(command, argsArray); if (workingDir != null) { exec.setWorkingDirectory(workingDir.getPath()); } return exec; } }
private BuildCommand cleanupUnversionedFiles(String workingDir) { return compose( echo("[GIT] Cleaning all unversioned files in working copy"), exec("git", "submodule", "foreach", "--recursive", "git", "clean", "-fdd") .setTest(hasSubmodules(workingDir)), exec("git", "clean", "-dff")) .setWorkingDirectoryRecursively(workingDir); }
private BuildCommand isBranchChanged(String workDir) { return test("-neq", material.getBranch(), exec("hg", "branch").setWorkingDirectory(workDir)); }
private BuildCommand cleanWorkingDir(String workingDir) { return compose( echo(format("[%s] Cleaning up working directory", GoConstants.PRODUCT_NAME)), exec("p4", "-d", workingDir, "clean").setCommandEnvVars(envVars()) ); } }
private BuildCommand constructClient(String workingDir, String clientName) { String clientArgs = "Client: " + clientName + "\n\n" + "Root: " + workingDir + "\n\n" + "Options: clobber rmdir\n\n" + "LineEnd: local\n\n" + "View:\n" + material.p4view(clientName); return exec("p4", "client", "-i").setExecInput(clientArgs).setCommandEnvVars(envVars()); }
private BuildCommand loginIfUsingTickets() { if (material.getUseTickets() && !StringUtils.isBlank(material.getPassword())) { return exec("p4", "login").setExecInput(material.getPassword()).setCommandEnvVars(envVars()); } else { return noop(); } }
private BuildCommand isRepoUrlChanged(String workDir) { return test("-neq", new MaterialUrl(material.getHgUrlArgument().defaultRemoteUrl()).getUrl(), exec("hg", "showconfig", "paths.default").setWorkingDirectory(workDir)); }
@Test public void execExecuteExternalCommandAndConnectOutputToBuildConsole() { runBuild(exec("echo", "foo"), Passed); assertThat(console.lastLine(), is("foo")); }
@Test public void execShouldFailIfWorkingDirectoryNotExists() { runBuild(exec("echo", "should not show").setWorkingDirectory("not-exists"), Failed); assertThat(console.lineCount(), is(1)); assertThat(console.firstLine(), containsString("not-exists\" is not a directory!")); }
@Test @RunIf(value = EnhancedOSChecker.class, arguments = {DO_NOT_RUN_ON, OSChecker.WINDOWS}) public void shouldNotLeakSecretsToConsoleLog() { runBuild(compose(secret("topsecret"), exec("not-not-not-exist", "topsecret")), Failed); assertThat(console.output(), containsString("not-not-not-exist ******")); assertThat(console.output(), not(containsString("topsecret"))); }
@Test @RunIf(value = EnhancedOSChecker.class, arguments = {DO_NOT_RUN_ON, OSChecker.WINDOWS}) public void shouldNotLeakSecretsToLog() { try (LogFixture logFixture = logFixtureFor(ExecCommandExecutor.class, Level.DEBUG)) { runBuild(compose(secret("topsecret"), exec("not-not-not-exist", "topsecret")), Failed); String logs = logFixture.getLog(); assertThat(logs, containsString("not-not-not-exist ******")); assertThat(logs, not(containsString("topsecret"))); } }
@Test public void secretMaskValuesInExecOutput() throws Exception { runBuild(compose( secret("42"), exec("echo", "the answer is 42")), Passed); assertThat(console.output(), containsString("the answer is ******")); }
@Test @RunIf(value = EnhancedOSChecker.class, arguments = {EnhancedOSChecker.WINDOWS}) public void execExecuteNotExistExternalCommandOnWindows() { runBuild(exec("not-not-not-exist"), Failed); assertThat(console.output(), printedAppsMissingInfoOnWindows("not-not-not-exist")); }
@Test @RunIf(value = EnhancedOSChecker.class, arguments = {DO_NOT_RUN_ON, WINDOWS}) public void execExecuteNotExistExternalCommandOnUnix() { runBuild(exec("not-not-not-exist"), Failed); assertThat(console.output(), printedAppsMissingInfoOnUnix("not-not-not-exist")); }