
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
55 lines
1.9 KiB
Java
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]);
|
|
}
|
|
}
|
|
}
|