RenameEmailIT: Use Splitter instead of String.split(String) String.split(String) has surprising behavior, hence using Splitter is preferred. Signed-off-by: Edwin Kempin <ekempin@google.com> Change-Id: I6c540dca79f6de3f2fd1b1c70e4abc7dea352ed9
diff --git a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/RenameEmailIT.java b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/RenameEmailIT.java index ec0a368..b9e7502 100644 --- a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/RenameEmailIT.java +++ b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/RenameEmailIT.java
@@ -22,6 +22,8 @@ import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS; import static com.google.gerrit.testing.GerritJUnit.assertThrows; +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; import com.google.gerrit.acceptance.TestAccount; import com.google.gerrit.acceptance.testsuite.account.AccountOperations; import com.google.gerrit.acceptance.testsuite.project.ProjectOperations; @@ -527,14 +529,14 @@ // insert comment line at the top of the file b.append("# top comment\n"); - String[] lines = codeOwnerConfigFileContent.split("\\n"); - b.append(lines[0] + "\n"); + Iterable<String> lines = Splitter.on('\n').split(codeOwnerConfigFileContent); + b.append(Iterables.get(lines, /* position= */ 0) + "\n"); // insert comment line in the middle of the file b.append("# middle comment\n"); - for (int n = 1; n < lines.length; n++) { - b.append(lines[n] + "\n"); + for (String line : Iterables.skip(lines, /* numberToSkip= */ 1)) { + b.append(line + "\n"); } // insert comment line at the bottom of the file @@ -560,10 +562,11 @@ // verify that the comments are still present String codeOwnerConfigFileContent = codeOwnerConfigOperations.codeOwnerConfig(codeOwnerConfigKey).getContent(); - String[] lines = codeOwnerConfigFileContent.split("\\n"); - assertThat(lines[0]).isEqualTo("# top comment"); - assertThat(lines[2]).isEqualTo("# middle comment"); - assertThat(lines[lines.length - 1]).isEqualTo("# bottom comment"); + Iterable<String> lines = Splitter.on('\n').split(codeOwnerConfigFileContent); + assertThat(Iterables.get(lines, /* position= */ 0)).isEqualTo("# top comment"); + assertThat(Iterables.get(lines, /* position= */ 2)).isEqualTo("# middle comment"); + assertThat(Iterables.get(lines, /* position= */ Iterables.size(lines) - 2)) + .isEqualTo("# bottom comment"); } @Test @@ -587,7 +590,7 @@ "Insert comments", (codeOwnerConfigFilePath, codeOwnerConfigFileContent) -> { StringBuilder b = new StringBuilder(); - for (String line : codeOwnerConfigFileContent.split("\\n")) { + for (String line : Splitter.on('\n').split(codeOwnerConfigFileContent)) { if (line.contains(user.email())) { b.append(line + "# some comment\n"); continue; @@ -619,7 +622,7 @@ // verify that the inline comments are still present String codeOwnerConfigFileContent = codeOwnerConfigOperations.codeOwnerConfig(codeOwnerConfigKey).getContent(); - for (String line : codeOwnerConfigFileContent.split("\\n")) { + for (String line : Splitter.on('\n').split(codeOwnerConfigFileContent)) { if (line.contains(secondaryEmail)) { assertThat(line).endsWith("# some comment"); } else if (line.contains(admin.email())) { @@ -667,7 +670,8 @@ // verify that the comments are still present String codeOwnerConfigFileContent = codeOwnerConfigOperations.codeOwnerConfig(codeOwnerConfigKey).getContent(); - assertThat(codeOwnerConfigFileContent.split("\\n")[0]) + assertThat( + Iterables.get(Splitter.on('\n').split(codeOwnerConfigFileContent), /* position= */ 0)) .endsWith("# foo " + secondaryEmail + " bar"); }