parent
45e6a413aa
commit
b6f3481696
3 changed files with 173 additions and 0 deletions
@ -0,0 +1,39 @@ |
|||||||
|
package com.google.protobuf; |
||||||
|
|
||||||
|
/** |
||||||
|
* These APIs are restricted to test-only targets, and are suitable for test purposes where it is |
||||||
|
* impractical to compare protos directly via ProtoTruth (e.g. log output). |
||||||
|
*/ |
||||||
|
public final class UnredactedDebugFormatForTest { |
||||||
|
|
||||||
|
private UnredactedDebugFormatForTest() {} |
||||||
|
|
||||||
|
/** Like {@code TextFormat.printer().printToString(message)}, but for test assertion purposes. */ |
||||||
|
public static String unredactedMultilineString(MessageOrBuilder message) { |
||||||
|
return TextFormat.printer() |
||||||
|
.printToString(message, TextFormat.Printer.FieldReporterLevel.NO_REPORT); |
||||||
|
} |
||||||
|
|
||||||
|
/** Like {@code TextFormat.printer().printToString(fields)}, but for test assertion purposes. */ |
||||||
|
public static String unredactedMultilineString(UnknownFieldSet fields) { |
||||||
|
return TextFormat.printer().printToString(fields); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Like {@code TextFormat.printer().emittingSingleLine(true).printToString(message)}, but for test |
||||||
|
* assertion purposes. |
||||||
|
*/ |
||||||
|
public static String unredactedSingleLineString(MessageOrBuilder message) { |
||||||
|
return TextFormat.printer() |
||||||
|
.emittingSingleLine(true) |
||||||
|
.printToString(message, TextFormat.Printer.FieldReporterLevel.NO_REPORT); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Like {@code TextFormat.printer().emittingSingleLine(true).printToString(fields)}, but for test |
||||||
|
* assertion purposes. |
||||||
|
*/ |
||||||
|
public static String unredactedSingleLineString(UnknownFieldSet fields) { |
||||||
|
return TextFormat.printer().emittingSingleLine(true).printToString(fields); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,132 @@ |
|||||||
|
package com.google.protobuf; |
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat; |
||||||
|
|
||||||
|
import protobuf_unittest.UnittestProto; |
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.junit.runners.JUnit4; |
||||||
|
|
||||||
|
@RunWith(JUnit4.class) |
||||||
|
public final class UnredactedDebugFormatForTestTest { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void unredactedDebugFormatForTestMessage_defaultMessageIsEmpty() { |
||||||
|
UnittestProto.TestEmptyMessage message = UnittestProto.TestEmptyMessage.getDefaultInstance(); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedMultilineString(message)).isEmpty(); |
||||||
|
|
||||||
|
UnittestProto.TestEmptyMessage singleLineMessage = |
||||||
|
UnittestProto.TestEmptyMessage.getDefaultInstance(); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedSingleLineString(singleLineMessage)) |
||||||
|
.isEmpty(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void unredactedDebugFormatForTestMessage_hasExpectedFormats() { |
||||||
|
UnittestProto.RedactedFields message = |
||||||
|
UnittestProto.RedactedFields.newBuilder() |
||||||
|
.setOptionalRedactedString("redacted") |
||||||
|
.setOptionalUnredactedString("hello") |
||||||
|
.setOptionalRedactedMessage( |
||||||
|
UnittestProto.TestNestedMessageRedaction.newBuilder() |
||||||
|
.setOptionalRedactedNestedString("nested") |
||||||
|
.build()) |
||||||
|
.setOptionalUnredactedMessage( |
||||||
|
UnittestProto.TestNestedMessageRedaction.newBuilder() |
||||||
|
.setOptionalUnredactedNestedString("unredacted") |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedMultilineString(message)) |
||||||
|
.isEqualTo( |
||||||
|
"optional_redacted_string: \"redacted\"\n" |
||||||
|
+ "optional_unredacted_string: \"hello\"\n" |
||||||
|
+ "optional_redacted_message {\n" |
||||||
|
+ " optional_redacted_nested_string: \"nested\"\n" |
||||||
|
+ "}\n" |
||||||
|
+ "optional_unredacted_message {\n" |
||||||
|
+ " optional_unredacted_nested_string: \"unredacted\"\n" |
||||||
|
+ "}\n"); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedSingleLineString(message)) |
||||||
|
.isEqualTo( |
||||||
|
"optional_redacted_string: \"redacted\"" |
||||||
|
+ " optional_unredacted_string: \"hello\"" |
||||||
|
+ " optional_redacted_message {" |
||||||
|
+ " optional_redacted_nested_string: \"nested\"" |
||||||
|
+ " }" |
||||||
|
+ " optional_unredacted_message {" |
||||||
|
+ " optional_unredacted_nested_string: \"unredacted\"" |
||||||
|
+ " }"); |
||||||
|
} |
||||||
|
|
||||||
|
private UnknownFieldSet makeUnknownFieldSet() { |
||||||
|
return UnknownFieldSet.newBuilder() |
||||||
|
.addField( |
||||||
|
5, |
||||||
|
UnknownFieldSet.Field.newBuilder() |
||||||
|
.addVarint(1) |
||||||
|
.addFixed32(2) |
||||||
|
.addFixed64(3) |
||||||
|
.addLengthDelimited(ByteString.copyFromUtf8("4")) |
||||||
|
.addLengthDelimited( |
||||||
|
UnknownFieldSet.newBuilder() |
||||||
|
.addField(12, UnknownFieldSet.Field.newBuilder().addVarint(6).build()) |
||||||
|
.build() |
||||||
|
.toByteString()) |
||||||
|
.addGroup( |
||||||
|
UnknownFieldSet.newBuilder() |
||||||
|
.addField(10, UnknownFieldSet.Field.newBuilder().addVarint(5).build()) |
||||||
|
.build()) |
||||||
|
.build()) |
||||||
|
.addField( |
||||||
|
8, UnknownFieldSet.Field.newBuilder().addVarint(1).addVarint(2).addVarint(3).build()) |
||||||
|
.addField( |
||||||
|
15, |
||||||
|
UnknownFieldSet.Field.newBuilder() |
||||||
|
.addVarint(0xABCDEF1234567890L) |
||||||
|
.addFixed32(0xABCD1234) |
||||||
|
.addFixed64(0xABCDEF1234567890L) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void unredactedDebugFormatForTestUnknownFields_hasExpectedFormats() { |
||||||
|
UnknownFieldSet unknownFields = makeUnknownFieldSet(); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedMultilineString(unknownFields)) |
||||||
|
.isEqualTo( |
||||||
|
"5: 1\n" |
||||||
|
+ "5: 0x00000002\n" |
||||||
|
+ "5: 0x0000000000000003\n" |
||||||
|
+ "5: \"4\"\n" |
||||||
|
+ "5: {\n" |
||||||
|
+ " 12: 6\n" |
||||||
|
+ "}\n" |
||||||
|
+ "5 {\n" |
||||||
|
+ " 10: 5\n" |
||||||
|
+ "}\n" |
||||||
|
+ "8: 1\n" |
||||||
|
+ "8: 2\n" |
||||||
|
+ "8: 3\n" |
||||||
|
+ "15: 12379813812177893520\n" |
||||||
|
+ "15: 0xabcd1234\n" |
||||||
|
+ "15: 0xabcdef1234567890\n"); |
||||||
|
assertThat(UnredactedDebugFormatForTest.unredactedSingleLineString(unknownFields)) |
||||||
|
.isEqualTo( |
||||||
|
"5: 1" |
||||||
|
+ " 5: 0x00000002" |
||||||
|
+ " 5: 0x0000000000000003" |
||||||
|
+ " 5: \"4\"" |
||||||
|
+ " 5: {" |
||||||
|
+ " 12: 6" |
||||||
|
+ " }" |
||||||
|
+ " 5 {" |
||||||
|
+ " 10: 5" |
||||||
|
+ " }" |
||||||
|
+ " 8: 1" |
||||||
|
+ " 8: 2" |
||||||
|
+ " 8: 3" |
||||||
|
+ " 15: 12379813812177893520" |
||||||
|
+ " 15: 0xabcd1234" |
||||||
|
+ " 15: 0xabcdef1234567890"); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue