annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommandTest.java @ 229:9e60b6d1e5fd build-snapshot-124

Escape quotes in command line parameters * * * Escape quotes in command line parameters
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Thu, 14 Apr 2011 14:39:31 +0400
parents
children 8c10f5cec37d
rev   line source
229
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
2
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
3 import com.intellij.execution.configurations.GeneralCommandLine;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
4 import com.intellij.openapi.util.SystemInfo;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
5 import jetbrains.buildServer.buildTriggers.vcs.mercurial.Constants;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
6 import jetbrains.buildServer.buildTriggers.vcs.mercurial.Util;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
7 import jetbrains.buildServer.vcs.impl.VcsRootImpl;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
8 import junit.framework.TestCase;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
9 import org.testng.annotations.Test;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
10
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
11 import java.io.File;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
12 import java.io.IOException;
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
13
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
14 /**
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
15 * @author dmitry.neverov
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
16 */
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
17 @Test
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
18 public class BaseCommandTest extends TestCase {
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
19
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
20 public void should_quote_command_line_arguments() throws IOException {
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
21 VcsRootImpl root = new VcsRootImpl(1, "rootForTest");
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
22 root.addProperty(Constants.REPOSITORY_PROP, "http://some.org/repo.hg");
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
23 root.addProperty(Constants.HG_COMMAND_PATH_PROP, Util.getHgPath());
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
24 File workingDir = new File("some dir");
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
25 Settings settings = new Settings(root);
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
26
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
27 BaseCommand command = new BaseCommand(settings, workingDir);
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
28 GeneralCommandLine cl = command.createCommandLine();
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
29 cl.addParameter("param with spaces");
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
30 cl.addParameter("param with quote \" rm -rf /");
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
31 if (SystemInfo.isWindows) {
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
32 assertTrue(cl.getCommandLineString().endsWith(" \"param with spaces\" \"param with quote \\\" rm -rf /\""));
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
33 } else {
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
34 assertTrue(cl.getCommandLineString().endsWith(" param with spaces param with quote \" rm -rf /"));
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
35 }
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
36 }
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
37
9e60b6d1e5fd Escape quotes in command line parameters
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
38 }