| /* | |
| * Copyright (C) 2012, 2025 Google Inc. 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.junit.Assert.assertArrayEquals; | |
| import static org.junit.Assert.assertEquals; | |
| import static org.junit.Assert.assertNotNull; | |
| import static org.junit.Assert.assertThrows; | |
| import static org.junit.Assert.assertTrue; | |
| import java.io.File; | |
| import org.eclipse.jgit.api.Git; | |
| import org.eclipse.jgit.dircache.DirCache; | |
| import org.eclipse.jgit.lib.CLIRepositoryTestCase; | |
| import org.junit.Before; | |
| import org.junit.Test; | |
| public class AddTest extends CLIRepositoryTestCase { | |
| private Git git; | |
| @Override | |
| @Before | |
| public void setUp() throws Exception { | |
| super.setUp(); | |
| git = new Git(db); | |
| } | |
| @Test | |
| public void testAddNothing() throws Exception { | |
| assertThrows(Die.class, () -> execute("git add")); | |
| } | |
| @Test | |
| public void testAddUsage() throws Exception { | |
| execute("git add --help"); | |
| } | |
| @Test | |
| public void testAddInvalidOptionCombinations() throws Exception { | |
| writeTrashFile("greeting", "Hello, world!"); | |
| assertThrows(Die.class, () -> execute("git add -u -A greeting")); | |
| assertThrows(Die.class, | |
| () -> execute("git add -u --ignore-removed greeting")); | |
| // --renormalize implies -u | |
| assertThrows(Die.class, | |
| () -> execute("git add --renormalize --all greeting")); | |
| } | |
| @Test | |
| public void testAddAFile() throws Exception { | |
| writeTrashFile("greeting", "Hello, world!"); | |
| assertArrayEquals(new String[] { "" }, // | |
| execute("git add greeting")); | |
| DirCache cache = db.readDirCache(); | |
| assertNotNull(cache.getEntry("greeting")); | |
| assertEquals(1, cache.getEntryCount()); | |
| } | |
| @Test | |
| public void testAddFileTwice() throws Exception { | |
| writeTrashFile("greeting", "Hello, world!"); | |
| assertArrayEquals(new String[] { "" }, // | |
| execute("git add greeting greeting")); | |
| DirCache cache = db.readDirCache(); | |
| assertNotNull(cache.getEntry("greeting")); | |
| assertEquals(1, cache.getEntryCount()); | |
| } | |
| @Test | |
| public void testAddAlreadyAdded() throws Exception { | |
| writeTrashFile("greeting", "Hello, world!"); | |
| git.add().addFilepattern("greeting").call(); | |
| assertArrayEquals(new String[] { "" }, // | |
| execute("git add greeting")); | |
| DirCache cache = db.readDirCache(); | |
| assertNotNull(cache.getEntry("greeting")); | |
| assertEquals(1, cache.getEntryCount()); | |
| } | |
| @Test | |
| public void testAddDeleted() throws Exception { | |
| File greeting = writeTrashFile("greeting", "Hello, world!"); | |
| git.add().addFilepattern("greeting").call(); | |
| DirCache cache = db.readDirCache(); | |
| assertNotNull(cache.getEntry("greeting")); | |
| assertEquals(1, cache.getEntryCount()); | |
| assertTrue(greeting.delete()); | |
| assertArrayEquals(new String[] { "" }, // | |
| execute("git add greeting")); | |
| cache = db.readDirCache(); | |
| assertEquals(0, cache.getEntryCount()); | |
| } | |
| @Test | |
| public void testAddDeleted2() throws Exception { | |
| File greeting = writeTrashFile("greeting", "Hello, world!"); | |
| git.add().addFilepattern("greeting").call(); | |
| DirCache cache = db.readDirCache(); | |
| assertNotNull(cache.getEntry("greeting")); | |
| assertEquals(1, cache.getEntryCount()); | |
| assertTrue(greeting.delete()); | |
| assertArrayEquals(new String[] { "" }, // | |
| execute("git add -A")); | |
| cache = db.readDirCache(); | |
| assertEquals(0, cache.getEntryCount()); | |
| } | |
| } |