| /* |
| * Copyright (C) 2022, Thomas Wolf <thomas.wolf@paranor.ch> and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * https://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.lib; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertThrows; |
| |
| import org.eclipse.jgit.errors.ConfigInvalidException; |
| import org.eclipse.jgit.lib.CommitConfig.CleanupMode; |
| import org.junit.Test; |
| |
| public class CommitConfigTest { |
| |
| @Test |
| public void testDefaults() throws Exception { |
| CommitConfig cfg = parse(""); |
| assertEquals("Unexpected clean-up mode", CleanupMode.DEFAULT, |
| cfg.getCleanupMode()); |
| } |
| |
| @Test |
| public void testCommitCleanup() throws Exception { |
| String[] values = { "strip", "whitespace", "verbatim", "scissors", |
| "default" }; |
| CleanupMode[] expected = { CleanupMode.STRIP, CleanupMode.WHITESPACE, |
| CleanupMode.VERBATIM, CleanupMode.SCISSORS, |
| CleanupMode.DEFAULT }; |
| for (int i = 0; i < values.length; i++) { |
| CommitConfig cfg = parse("[commit]\n\tcleanup = " + values[i]); |
| assertEquals("Unexpected clean-up mode", expected[i], |
| cfg.getCleanupMode()); |
| } |
| } |
| |
| @Test |
| public void testResolve() throws Exception { |
| String[] values = { "strip", "whitespace", "verbatim", "scissors", |
| "default" }; |
| CleanupMode[] expected = { CleanupMode.STRIP, CleanupMode.WHITESPACE, |
| CleanupMode.VERBATIM, CleanupMode.SCISSORS, |
| CleanupMode.DEFAULT }; |
| for (int i = 0; i < values.length; i++) { |
| CommitConfig cfg = parse("[commit]\n\tcleanup = " + values[i]); |
| for (CleanupMode mode : CleanupMode.values()) { |
| for (int j = 0; j < 2; j++) { |
| CleanupMode resolved = cfg.resolve(mode, j == 0); |
| if (mode != CleanupMode.DEFAULT) { |
| assertEquals("Clean-up mode should be unchanged", mode, |
| resolved); |
| } else if (i + 1 < values.length) { |
| assertEquals("Unexpected clean-up mode", expected[i], |
| resolved); |
| } else { |
| assertEquals("Unexpected clean-up mode", |
| j == 0 ? CleanupMode.STRIP |
| : CleanupMode.WHITESPACE, |
| resolved); |
| } |
| } |
| } |
| } |
| } |
| |
| @Test |
| public void testCleanDefaultThrows() throws Exception { |
| assertThrows(IllegalArgumentException.class, () -> CommitConfig |
| .cleanText("Whatever", CleanupMode.DEFAULT, '#')); |
| } |
| |
| @Test |
| public void testCleanVerbatim() throws Exception { |
| String message = "\n \nWhatever \n\n\n# A comment\n\nMore\t \n\n\n"; |
| assertEquals("Unexpected message change", message, |
| CommitConfig.cleanText(message, CleanupMode.VERBATIM, '#')); |
| } |
| |
| @Test |
| public void testCleanWhitespace() throws Exception { |
| String message = "\n \nWhatever \n\n\n# A comment\n\nMore\t \n\n\n"; |
| assertEquals("Unexpected message change", |
| "Whatever\n\n# A comment\n\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.WHITESPACE, '#')); |
| } |
| |
| @Test |
| public void testCleanStrip() throws Exception { |
| String message = "\n \nWhatever \n\n\n# A comment\n\nMore\t \n\n\n"; |
| assertEquals("Unexpected message change", "Whatever\n\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.STRIP, '#')); |
| } |
| |
| @Test |
| public void testCleanStripCustomChar() throws Exception { |
| String message = "\n \nWhatever \n\n\n# Not a comment\n\n <A comment\nMore\t \n\n\n"; |
| assertEquals("Unexpected message change", |
| "Whatever\n\n# Not a comment\n\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.STRIP, '<')); |
| } |
| |
| @Test |
| public void testCleanScissors() throws Exception { |
| String message = "\n \nWhatever \n\n\n# Not a comment\n\n <A comment\nMore\t \n\n\n" |
| + "# ------------------------ >8 ------------------------\n" |
| + "More\nMore\n"; |
| assertEquals("Unexpected message change", |
| "Whatever\n\n# Not a comment\n\n <A comment\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| @Test |
| public void testCleanScissorsCustomChar() throws Exception { |
| String message = "\n \nWhatever \n\n\n# Not a comment\n\n <A comment\nMore\t \n\n\n" |
| + "< ------------------------ >8 ------------------------\n" |
| + "More\nMore\n"; |
| assertEquals("Unexpected message change", |
| "Whatever\n\n# Not a comment\n\n <A comment\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '<')); |
| } |
| |
| @Test |
| public void testCleanScissorsAtTop() throws Exception { |
| String message = "# ------------------------ >8 ------------------------\n" |
| + "\n \nWhatever \n\n\n# Not a comment\n\n <A comment\nMore\t \n\n\n" |
| + "More\nMore\n"; |
| assertEquals("Unexpected message change", "", |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| @Test |
| public void testCleanScissorsNoScissor() throws Exception { |
| String message = "\n \nWhatever \n\n\n# A comment\n\nMore\t \n\n\n"; |
| assertEquals("Unexpected message change", |
| "Whatever\n\n# A comment\n\nMore\n", |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| @Test |
| public void testCleanScissorsNoScissor2() throws Exception { |
| String message = "Text\n" |
| + "## ------------------------ >8 ------------------------\n" |
| + "More\nMore\n"; |
| assertEquals("Unexpected message change", message, |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| @Test |
| public void testCleanScissorsNoScissor3() throws Exception { |
| String message = "Text\n" |
| // Wrong number of dashes |
| + "# ----------------------- >8 ------------------------\n" |
| + "More\nMore\n"; |
| assertEquals("Unexpected message change", message, |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| @Test |
| public void testCleanScissorsAtEnd() throws Exception { |
| String message = "Text\n" |
| + "# ------------------------ >8 ------------------------\n"; |
| assertEquals("Unexpected message change", "Text\n", |
| CommitConfig.cleanText(message, CleanupMode.SCISSORS, '#')); |
| } |
| |
| private static CommitConfig parse(String content) |
| throws ConfigInvalidException { |
| Config c = new Config(); |
| c.fromText(content); |
| return c.get(CommitConfig.KEY); |
| } |
| |
| } |