1 /*
2 * Copyright (C) 2012 Google Inc.
3 * and other copyright owners as documented in the project's IP log.
4 *
5 * This program and the accompanying materials are made available
6 * under the terms of the Eclipse Distribution License v1.0 which
7 * accompanies this distribution, is reproduced below, and is
8 * available at http://www.eclipse.org/org/documents/edl-v10.php
9 *
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or
13 * without modification, are permitted provided that the following
14 * conditions are met:
15 *
16 * - Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 *
19 * - Redistributions in binary form must reproduce the above
20 * copyright notice, this list of conditions and the following
21 * disclaimer in the documentation and/or other materials provided
22 * with the distribution.
23 *
24 * - Neither the name of the Eclipse Foundation, Inc. nor the
25 * names of its contributors may be used to endorse or promote
26 * products derived from this software without specific prior
27 * written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
30 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
31 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
32 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
36 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
38 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
41 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 */
43 package org.eclipse.jgit.pgm;
44
45 import static org.junit.Assert.assertArrayEquals;
46 import static org.junit.Assert.assertEquals;
47 import static org.junit.Assert.assertNotNull;
48 import static org.junit.Assert.fail;
49
50 import org.eclipse.jgit.api.Git;
51 import org.eclipse.jgit.dircache.DirCache;
52 import org.eclipse.jgit.lib.CLIRepositoryTestCase;
53 import org.junit.Before;
54 import org.junit.Test;
55
56 public class AddTest extends CLIRepositoryTestCase {
57 private Git git;
58
59 @Override
60 @Before
61 public void setUp() throws Exception {
62 super.setUp();
63 git = new Git(db);
64 }
65
66 @Test
67 public void testAddNothing() throws Exception {
68 try {
69 execute("git add");
70 fail("Must die");
71 } catch (Die e) {
72 // expected, requires argument
73 }
74 }
75
76 @Test
77 public void testAddUsage() throws Exception {
78 execute("git add --help");
79 }
80
81 @Test
82 public void testAddAFile() throws Exception {
83 writeTrashFile("greeting", "Hello, world!");
84 assertArrayEquals(new String[] { "" }, //
85 execute("git add greeting"));
86
87 DirCache cache = db.readDirCache();
88 assertNotNull(cache.getEntry("greeting"));
89 assertEquals(1, cache.getEntryCount());
90 }
91
92 @Test
93 public void testAddFileTwice() throws Exception {
94 writeTrashFile("greeting", "Hello, world!");
95 assertArrayEquals(new String[] { "" }, //
96 execute("git add greeting greeting"));
97
98 DirCache cache = db.readDirCache();
99 assertNotNull(cache.getEntry("greeting"));
100 assertEquals(1, cache.getEntryCount());
101 }
102
103 @Test
104 public void testAddAlreadyAdded() throws Exception {
105 writeTrashFile("greeting", "Hello, world!");
106 git.add().addFilepattern("greeting").call();
107 assertArrayEquals(new String[] { "" }, //
108 execute("git add greeting"));
109
110 DirCache cache = db.readDirCache();
111 assertNotNull(cache.getEntry("greeting"));
112 assertEquals(1, cache.getEntryCount());
113 }
114 }