Files
gerrit/gerrit-server/src/test/java/com/google/gerrit/server/StringUtilTest.java
Magnus Bäck 21f533aec4 Add ColumnFormatter/StringUtil classes for text output
The ColumnFormatter class will simplify output of column-oriented text
for SSH commands like ls-groups and others (including HTTP counterparts)
that may print user-supplied text that can contain tab and newline
characters that would screw up scripts using these commands for
automation. To deal with this, all text output is subject to C-style
escaping of all non-printable characters. The escaping in done in the
new StringUtil class.

So far this new functionality is only used by the ls-projects command
when the project description is printed. The escaping method used there
previously only took care of newline characters.

Change-Id: Ia605bbc44fc82d69d2f40b337319368aefd01eee
2012-06-06 11:38:07 -04:00

55 lines
1.9 KiB
Java

// Copyright (C) 2012 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server;
import junit.framework.TestCase;
public class StringUtilTest extends TestCase {
/**
* Test the boundary condition that the first character of a string
* should be escaped.
*/
public void testEscapeFirstChar() {
assertEquals(StringUtil.escapeString("\tLeading tab"), "\\tLeading tab");
}
/**
* Test the boundary condition that the last character of a string
* should be escaped.
*/
public void testEscapeLastChar() {
assertEquals(StringUtil.escapeString("Trailing tab\t"), "Trailing tab\\t");
}
/**
* Test that various forms of input strings are escaped (or left as-is)
* in the expected way.
*/
public void testEscapeString() {
final String[] testPairs =
{ "", "",
"plain string", "plain string",
"string with \"quotes\"", "string with \"quotes\"",
"string with 'quotes'", "string with 'quotes'",
"string with 'quotes'", "string with 'quotes'",
"C:\\Program Files\\MyProgram", "C:\\\\Program Files\\\\MyProgram",
"string\nwith\nnewlines", "string\\nwith\\nnewlines",
"string\twith\ttabs", "string\\twith\\ttabs" };
for (int i = 0; i < testPairs.length; i += 2) {
assertEquals(StringUtil.escapeString(testPairs[i]), testPairs[i + 1]);
}
}
}