]> source.dussan.org Git - jgit.git/commitdiff
Merge FileTreeIteratorJava7Test into FileTreeIteratorTest 70/89570/4
authorDavid Pursehouse <david.pursehouse@gmail.com>
Thu, 26 Jan 2017 04:38:50 +0000 (13:38 +0900)
committerMatthias Sohn <matthias.sohn@sap.com>
Mon, 30 Jan 2017 12:23:52 +0000 (13:23 +0100)
JGit now requires Java 8, so it is no longer necessary to have a
separate class for Java 7 specific tests. Remove it and merge its
tests into the existing FileTreeIteratorTest.

FileTreeIteratorTest has an @Before annotated method that sets up
some files in the git, which breaks the tests which have assumptions
on the file names. Add adjustments.

Change-Id: I14f88d8e079e1677c8dfbc1fcbf4444ea8265365
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorJava7Test.java [deleted file]
org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java

diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorJava7Test.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorJava7Test.java
deleted file mode 100644 (file)
index cd55cba..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2012-2013, Robin Rosenberg <robin.rosenberg@dewire.com>
- * and other copyright owners as documented in the project's IP log.
- *
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Distribution License v1.0 which
- * accompanies this distribution, is reproduced below, and is
- * available at http://www.eclipse.org/org/documents/edl-v10.php
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- *   copyright notice, this list of conditions and the following
- *   disclaimer in the documentation and/or other materials provided
- *   with the distribution.
- *
- * - Neither the name of the Eclipse Foundation, Inc. nor the
- *   names of its contributors may be used to endorse or promote
- *   products derived from this software without specific prior
- *   written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.eclipse.jgit.treewalk;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.ResetCommand.ResetType;
-import org.eclipse.jgit.dircache.DirCache;
-import org.eclipse.jgit.dircache.DirCacheEditor;
-import org.eclipse.jgit.dircache.DirCacheEntry;
-import org.eclipse.jgit.dircache.DirCacheIterator;
-import org.eclipse.jgit.junit.RepositoryTestCase;
-import org.eclipse.jgit.lib.Constants;
-import org.eclipse.jgit.lib.FileMode;
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectInserter;
-import org.eclipse.jgit.util.FS;
-import org.eclipse.jgit.util.FileUtils;
-import org.junit.Test;
-
-public class FileTreeIteratorJava7Test extends RepositoryTestCase {
-       @Test
-       public void testFileModeSymLinkIsNotATree() throws IOException {
-               org.junit.Assume.assumeTrue(FS.DETECTED.supportsSymlinks());
-               FS fs = db.getFS();
-               // mål = target in swedish, just to get som unicode in here
-               writeTrashFile("mål/data", "targetdata");
-               fs.createSymLink(new File(trash, "länk"), "mål");
-               FileTreeIterator fti = new FileTreeIterator(db);
-               assertFalse(fti.eof());
-               assertEquals("länk", fti.getEntryPathString());
-               assertEquals(FileMode.SYMLINK, fti.getEntryFileMode());
-               fti.next(1);
-               assertFalse(fti.eof());
-               assertEquals("mål", fti.getEntryPathString());
-               assertEquals(FileMode.TREE, fti.getEntryFileMode());
-               fti.next(1);
-               assertTrue(fti.eof());
-       }
-
-       @Test
-       public void testSymlinkNotModifiedThoughNormalized() throws Exception {
-               DirCache dc = db.lockDirCache();
-               DirCacheEditor dce = dc.editor();
-               final String UNNORMALIZED = "target/";
-               final byte[] UNNORMALIZED_BYTES = Constants.encode(UNNORMALIZED);
-               try (ObjectInserter oi = db.newObjectInserter()) {
-                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
-                                       UNNORMALIZED_BYTES, 0, UNNORMALIZED_BYTES.length);
-                       dce.add(new DirCacheEditor.PathEdit("link") {
-                               @Override
-                               public void apply(DirCacheEntry ent) {
-                                       ent.setFileMode(FileMode.SYMLINK);
-                                       ent.setObjectId(linkid);
-                                       ent.setLength(UNNORMALIZED_BYTES.length);
-                               }
-                       });
-                       assertTrue(dce.commit());
-               }
-               try (Git git = new Git(db)) {
-                       git.commit().setMessage("Adding link").call();
-                       git.reset().setMode(ResetType.HARD).call();
-                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
-                       FileTreeIterator fti = new FileTreeIterator(db);
-
-                       // self-check
-                       assertEquals("link", fti.getEntryPathString());
-                       assertEquals("link", dci.getEntryPathString());
-
-                       // test
-                       assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
-                                       db.newObjectReader()));
-               }
-       }
-
-       /**
-        * Like #testSymlinkNotModifiedThoughNormalized but there is no
-        * normalization being done.
-        *
-        * @throws Exception
-        */
-       @Test
-       public void testSymlinkModifiedNotNormalized() throws Exception {
-               DirCache dc = db.lockDirCache();
-               DirCacheEditor dce = dc.editor();
-               final String NORMALIZED = "target";
-               final byte[] NORMALIZED_BYTES = Constants.encode(NORMALIZED);
-               try (ObjectInserter oi = db.newObjectInserter()) {
-                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
-                                       NORMALIZED_BYTES, 0, NORMALIZED_BYTES.length);
-                       dce.add(new DirCacheEditor.PathEdit("link") {
-                               @Override
-                               public void apply(DirCacheEntry ent) {
-                                       ent.setFileMode(FileMode.SYMLINK);
-                                       ent.setObjectId(linkid);
-                                       ent.setLength(NORMALIZED_BYTES.length);
-                               }
-                       });
-                       assertTrue(dce.commit());
-               }
-               try (Git git = new Git(db)) {
-                       git.commit().setMessage("Adding link").call();
-                       git.reset().setMode(ResetType.HARD).call();
-                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
-                       FileTreeIterator fti = new FileTreeIterator(db);
-
-                       // self-check
-                       assertEquals("link", fti.getEntryPathString());
-                       assertEquals("link", dci.getEntryPathString());
-
-                       // test
-                       assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
-                                       db.newObjectReader()));
-               }
-       }
-
-       /**
-        * Like #testSymlinkNotModifiedThoughNormalized but here the link is
-        * modified.
-        *
-        * @throws Exception
-        */
-       @Test
-       public void testSymlinkActuallyModified() throws Exception {
-               org.junit.Assume.assumeTrue(FS.DETECTED.supportsSymlinks());
-               final String NORMALIZED = "target";
-               final byte[] NORMALIZED_BYTES = Constants.encode(NORMALIZED);
-               try (ObjectInserter oi = db.newObjectInserter()) {
-                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
-                                       NORMALIZED_BYTES, 0, NORMALIZED_BYTES.length);
-                       DirCache dc = db.lockDirCache();
-                       DirCacheEditor dce = dc.editor();
-                       dce.add(new DirCacheEditor.PathEdit("link") {
-                               @Override
-                               public void apply(DirCacheEntry ent) {
-                                       ent.setFileMode(FileMode.SYMLINK);
-                                       ent.setObjectId(linkid);
-                                       ent.setLength(NORMALIZED_BYTES.length);
-                               }
-                       });
-                       assertTrue(dce.commit());
-               }
-               try (Git git = new Git(db)) {
-                       git.commit().setMessage("Adding link").call();
-                       git.reset().setMode(ResetType.HARD).call();
-
-                       FileUtils.delete(new File(trash, "link"), FileUtils.NONE);
-                       FS.DETECTED.createSymLink(new File(trash, "link"), "newtarget");
-                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
-                       FileTreeIterator fti = new FileTreeIterator(db);
-
-                       // self-check
-                       assertEquals("link", fti.getEntryPathString());
-                       assertEquals("link", dci.getEntryPathString());
-
-                       // test
-                       assertTrue(fti.isModified(dci.getDirCacheEntry(), true,
-                                       db.newObjectReader()));
-               }
-       }
-}
index ef0f2d91f2fd89ba064b21312c2c30f7dcd521f0..193c50f1f16bc3775a89d0024f36e71a81dfe04a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, Google Inc.
+ * Copyright (C) 2008, 2017, Google Inc.
  * and other copyright owners as documented in the project's IP log.
  *
  * This program and the accompanying materials are made available
@@ -53,6 +53,7 @@ import java.io.IOException;
 import java.security.MessageDigest;
 
 import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.ResetCommand.ResetType;
 import org.eclipse.jgit.dircache.DirCache;
 import org.eclipse.jgit.dircache.DirCacheCheckout;
 import org.eclipse.jgit.dircache.DirCacheEditor;
@@ -68,6 +69,7 @@ import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.FileMode;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -653,6 +655,157 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
                }
        }
 
+       @Test
+       public void testFileModeSymLinkIsNotATree() throws IOException {
+               org.junit.Assume.assumeTrue(FS.DETECTED.supportsSymlinks());
+               FS fs = db.getFS();
+               // mål = target in swedish, just to get som unicode in here
+               writeTrashFile("mål/data", "targetdata");
+               fs.createSymLink(new File(trash, "länk"), "mål");
+               FileTreeIterator fti = new FileTreeIterator(db);
+               assertFalse(fti.eof());
+               while (!fti.getEntryPathString().equals("länk")) {
+                       fti.next(1);
+               }
+               assertEquals("länk", fti.getEntryPathString());
+               assertEquals(FileMode.SYMLINK, fti.getEntryFileMode());
+               fti.next(1);
+               assertFalse(fti.eof());
+               assertEquals("mål", fti.getEntryPathString());
+               assertEquals(FileMode.TREE, fti.getEntryFileMode());
+               fti.next(1);
+               assertTrue(fti.eof());
+       }
+
+       @Test
+       public void testSymlinkNotModifiedThoughNormalized() throws Exception {
+               DirCache dc = db.lockDirCache();
+               DirCacheEditor dce = dc.editor();
+               final String UNNORMALIZED = "target/";
+               final byte[] UNNORMALIZED_BYTES = Constants.encode(UNNORMALIZED);
+               try (ObjectInserter oi = db.newObjectInserter()) {
+                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
+                                       UNNORMALIZED_BYTES, 0, UNNORMALIZED_BYTES.length);
+                       dce.add(new DirCacheEditor.PathEdit("link") {
+                               @Override
+                               public void apply(DirCacheEntry ent) {
+                                       ent.setFileMode(FileMode.SYMLINK);
+                                       ent.setObjectId(linkid);
+                                       ent.setLength(UNNORMALIZED_BYTES.length);
+                               }
+                       });
+                       assertTrue(dce.commit());
+               }
+               try (Git git = new Git(db)) {
+                       git.commit().setMessage("Adding link").call();
+                       git.reset().setMode(ResetType.HARD).call();
+                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
+                       FileTreeIterator fti = new FileTreeIterator(db);
+
+                       // self-check
+                       while (!fti.getEntryPathString().equals("link")) {
+                               fti.next(1);
+                       }
+                       assertEquals("link", fti.getEntryPathString());
+                       assertEquals("link", dci.getEntryPathString());
+
+                       // test
+                       assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
+                                       db.newObjectReader()));
+               }
+       }
+
+       /**
+        * Like #testSymlinkNotModifiedThoughNormalized but there is no
+        * normalization being done.
+        *
+        * @throws Exception
+        */
+       @Test
+       public void testSymlinkModifiedNotNormalized() throws Exception {
+               DirCache dc = db.lockDirCache();
+               DirCacheEditor dce = dc.editor();
+               final String NORMALIZED = "target";
+               final byte[] NORMALIZED_BYTES = Constants.encode(NORMALIZED);
+               try (ObjectInserter oi = db.newObjectInserter()) {
+                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
+                                       NORMALIZED_BYTES, 0, NORMALIZED_BYTES.length);
+                       dce.add(new DirCacheEditor.PathEdit("link") {
+                               @Override
+                               public void apply(DirCacheEntry ent) {
+                                       ent.setFileMode(FileMode.SYMLINK);
+                                       ent.setObjectId(linkid);
+                                       ent.setLength(NORMALIZED_BYTES.length);
+                               }
+                       });
+                       assertTrue(dce.commit());
+               }
+               try (Git git = new Git(db)) {
+                       git.commit().setMessage("Adding link").call();
+                       git.reset().setMode(ResetType.HARD).call();
+                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
+                       FileTreeIterator fti = new FileTreeIterator(db);
+
+                       // self-check
+                       while (!fti.getEntryPathString().equals("link")) {
+                               fti.next(1);
+                       }
+                       assertEquals("link", fti.getEntryPathString());
+                       assertEquals("link", dci.getEntryPathString());
+
+                       // test
+                       assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
+                                       db.newObjectReader()));
+               }
+       }
+
+       /**
+        * Like #testSymlinkNotModifiedThoughNormalized but here the link is
+        * modified.
+        *
+        * @throws Exception
+        */
+       @Test
+       public void testSymlinkActuallyModified() throws Exception {
+               org.junit.Assume.assumeTrue(FS.DETECTED.supportsSymlinks());
+               final String NORMALIZED = "target";
+               final byte[] NORMALIZED_BYTES = Constants.encode(NORMALIZED);
+               try (ObjectInserter oi = db.newObjectInserter()) {
+                       final ObjectId linkid = oi.insert(Constants.OBJ_BLOB,
+                                       NORMALIZED_BYTES, 0, NORMALIZED_BYTES.length);
+                       DirCache dc = db.lockDirCache();
+                       DirCacheEditor dce = dc.editor();
+                       dce.add(new DirCacheEditor.PathEdit("link") {
+                               @Override
+                               public void apply(DirCacheEntry ent) {
+                                       ent.setFileMode(FileMode.SYMLINK);
+                                       ent.setObjectId(linkid);
+                                       ent.setLength(NORMALIZED_BYTES.length);
+                               }
+                       });
+                       assertTrue(dce.commit());
+               }
+               try (Git git = new Git(db)) {
+                       git.commit().setMessage("Adding link").call();
+                       git.reset().setMode(ResetType.HARD).call();
+
+                       FileUtils.delete(new File(trash, "link"), FileUtils.NONE);
+                       FS.DETECTED.createSymLink(new File(trash, "link"), "newtarget");
+                       DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
+                       FileTreeIterator fti = new FileTreeIterator(db);
+
+                       // self-check
+                       while (!fti.getEntryPathString().equals("link")) {
+                               fti.next(1);
+                       }
+                       assertEquals("link", fti.getEntryPathString());
+                       assertEquals("link", dci.getEntryPathString());
+
+                       // test
+                       assertTrue(fti.isModified(dci.getDirCacheEntry(), true,
+                                       db.newObjectReader()));
+               }
+       }
 
        private static void assertEntry(String sha1string, String path, TreeWalk tw)
                        throws MissingObjectException, IncorrectObjectTypeException,