package com.beijunyi.parallelgit.filesystem.io; import java.io.IOException; import javax.annotation.Nonnull; import com.beijunyi.parallelgit.filesystem.AbstractGitFileSystemTest; import org.eclipse.jgit.lib.ObjectId; import org.junit.Before; import org.junit.Test; import static java.nio.file.Files.*; import static org.eclipse.jgit.lib.FileMode.EXECUTABLE_FILE; import static org.junit.Assert.*; public class GitFileAttributesTest extends AbstractGitFileSystemTest { @Before public void setUp() throws IOException { initRepository(); } @Test public void getObjectId_shouldReturnTheTheIdOfTheNode() throws IOException { ObjectId blobId = writeToCache("/test_file.txt"); commitToMaster(); initGitFileSystem(); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertEquals(blobId, attributes.getObjectId()); } @Test public void getMode_shouldReturnTheModeOfTheNode() throws IOException { writeToCache("/test_file.txt", someBytes(), EXECUTABLE_FILE); commitToMaster(); initGitFileSystem(); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertEquals(EXECUTABLE_FILE, attributes.getFileMode()); } @Test public void testIsNewOnNewFile_shouldReturnTrue() throws IOException { initGitFileSystem(); writeToGfs("/test_file.txt"); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertTrue(attributes.isNew()); } @Test public void testIsNewOnExistingFile_shouldReturnFalse() throws IOException { writeToCache("/test_file.txt"); commitToMaster(); initGitFileSystem(); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertFalse(attributes.isNew()); } @Test public void testIsModifiedOnUnchangedFile_shouldReturnFalse() throws IOException { writeToCache("/test_file.txt"); commitToMaster(); initGitFileSystem(); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertFalse(attributes.isModified()); } @Test public void testIsModifiedOnChangedFile_shouldReturnTrue() throws IOException { initGitFileSystem(); writeToGfs("/test_file.txt"); write(gfs.getPath("/test_file.txt"), someBytes()); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertTrue(attributes.isModified()); } @Test public void testIsModifiedOnNewFile_shouldReturnTrue() throws IOException { writeToCache("/test_file.txt"); commitToMaster(); initGitFileSystem(); write(gfs.getPath("/test_file.txt"), someBytes()); GitFileAttributes attributes = readGitAttributes("/test_file.txt"); assertTrue(attributes.isModified()); } @Nonnull private GitFileAttributes readGitAttributes(String path) throws IOException { return readAttributes(gfs.getPath(path), GitFileAttributes.class); } }