diff options
Diffstat (limited to 'org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TextBuiltinTest.java')
-rw-r--r-- | org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TextBuiltinTest.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TextBuiltinTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TextBuiltinTest.java new file mode 100644 index 0000000000..2731f2ef21 --- /dev/null +++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TextBuiltinTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2017, Ned Twigg <ned.twigg@diffplug.com> 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.pgm; + +import static org.eclipse.jgit.junit.JGitTestUtil.check; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.lib.CLIRepositoryTestCase; +import org.eclipse.jgit.pgm.opt.CmdLineParser; +import org.eclipse.jgit.pgm.opt.SubcommandHandler; +import org.junit.Test; +import org.kohsuke.args4j.Argument; + +public class TextBuiltinTest extends CLIRepositoryTestCase { + public static class GitCliJGitWrapperParser { + @Argument(index = 0, metaVar = "metaVar_command", required = true, handler = SubcommandHandler.class) + TextBuiltin subcommand; + + @Argument(index = 1, metaVar = "metaVar_arg") + List<String> arguments = new ArrayList<>(); + } + + private String[] runAndCaptureUsingInitRaw(String... args) + throws Exception { + CLIGitCommand.Result result = new CLIGitCommand.Result(); + + GitCliJGitWrapperParser bean = new GitCliJGitWrapperParser(); + final CmdLineParser clp = new CmdLineParser(bean); + clp.parseArgument(args); + + final TextBuiltin cmd = bean.subcommand; + cmd.initRaw(db, null, null, result.out, result.err); + cmd.execute(bean.arguments.toArray(new String[bean.arguments.size()])); + if (cmd.getOutputWriter() != null) { + cmd.getOutputWriter().flush(); + } + if (cmd.getErrorWriter() != null) { + cmd.getErrorWriter().flush(); + } + return result.outLines().toArray(new String[0]); + } + + @Test + public void testCleanDeleteDirs() throws Exception { + try (Git git = new Git(db)) { + git.commit().setMessage("initial commit").call(); + + writeTrashFile("dir/file", "someData"); + writeTrashFile("a", "someData"); + writeTrashFile("b", "someData"); + + // all these files should be there + assertTrue(check(db, "a")); + assertTrue(check(db, "b")); + assertTrue(check(db, "dir/file")); + + assertArrayOfLinesEquals(new String[] { "Removing a", "Removing b", + "Removing dir/" }, + runAndCaptureUsingInitRaw("clean", "-d", "-f")); + assertFalse(check(db, "a")); + assertFalse(check(db, "b")); + assertFalse(check(db, "dir/file")); + } + } +} |