package com.beijunyi.parallelgit.utils;
import java.io.IOException;
import com.beijunyi.parallelgit.AbstractParallelGitTest;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Before;
import org.junit.Test;
import static org.eclipse.jgit.lib.FileMode.*;
import static org.junit.Assert.*;
public class GitFileUtilsGetFileAttributesTest extends AbstractParallelGitTest {
@Before
public void setupRepository() throws IOException {
initRepository();
}
@Test
public void testFileExistsWhenFileExists_shouldReturnTrue() throws IOException {
writeToCache("/test_file.txt");
RevCommit commit = commit();
assertTrue(GitFileUtils.exists("/test_file.txt", commit.getName(), repo));
}
@Test
public void testFileExistsWhenDirectoryExists_shouldReturnTrue() throws IOException {
writeToCache("/dir/file.txt");
RevCommit commit = commit();
assertTrue(GitFileUtils.exists("/dir", commit.getName(), repo));
}
@Test
public void testFileExistsWhenFileDoesNotExist_shouldReturnFalse() throws IOException {
writeSomethingToCache();
RevCommit commit = commit();
assertFalse(GitFileUtils.exists("/non_existent_file.txt", commit.getName(), repo));
}
@Test
public void testIsFileWhenFileExists_shouldReturnTrue() throws IOException {
writeToCache("/test_file.txt");
RevCommit commit = commit();
assertTrue(GitFileUtils.isFile("/test_file.txt", commit.getName(), repo));
}
@Test
public void testIsFileWhenExecutableFileExists_shouldReturnFalse() throws IOException {
writeToCache("/test_file.sh", someBytes(), EXECUTABLE_FILE);
RevCommit commit = commit();
assertTrue(GitFileUtils.isFile("/test_file.sh", commit.getName(), repo));
}
@Test
public void testIsFileWhenDirectoryExists_shouldReturnFalse() throws IOException {
writeToCache("/dir/file.txt");
RevCommit commit = commit();
assertFalse(GitFileUtils.isFile("/dir", commit.getName(), repo));
}
@Test
public void testIsFileWhenSymbolicLinkExists_shouldReturnFalse() throws IOException {
writeToCache("/test_file", someBytes(), SYMLINK);
RevCommit commit = commit();
assertFalse(GitFileUtils.isFile("/test_file", commit.getName(), repo));
}
@Test
public void testIsDirectoryWhenFileExists_shouldReturnFalse() throws IOException {
writeToCache("/test_file.txt");
RevCommit commit = commit();
assertFalse(GitFileUtils.isDirectory("/test_file.txt", commit.getName(), repo));
}
@Test
public void testIsDirectoryWhenDirectoryExists_shouldReturnFalse() throws IOException {
writeToCache("/dir/file.txt");
RevCommit commit = commit();
assertTrue(GitFileUtils.isDirectory("/dir", commit.getName(), repo));
}
@Test
public void testIsSymbolicLinkWhenFileExists_shouldReturnFalse() throws IOException {
writeToCache("/test_file.txt");
RevCommit commit = commit();
assertFalse(GitFileUtils.isSymbolicLink("/test_file.txt", commit.getName(), repo));
}
@Test
public void testIsSymbolicLinkWhenSymbolicLinkExists_shouldReturnTrue() throws IOException {
writeToCache("/test_file.txt", someBytes(), SYMLINK);
RevCommit commit = commit();
assertTrue(GitFileUtils.isSymbolicLink("/test_file.txt", commit.getName(), repo));
}
}