blob: a48fcbcd5ab8ae8ac8caf919ab37ddb4252c77e0 [file] [log] [blame]
/*
* 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());
}
}