001package edu.pdx.cs.joy.grader; 002 003import org.junit.jupiter.api.Test; 004 005import java.io.IOException; 006import java.io.InputStream; 007import java.io.InputStreamReader; 008import java.io.StringReader; 009 010import static org.mockito.Mockito.mock; 011import static org.mockito.Mockito.verify; 012 013public class GitConfigParserTest { 014 015 @Test 016 void canParseCoreSectionOfGitConfig() throws IOException { 017 String config = 018 "[core]\n" + 019 " repositoryformatversion = 0\n" + 020 " filemode = true\n"; 021 GitConfigParser parser = new GitConfigParser(new StringReader(config)); 022 GitConfigParser.Callback callback = mock(GitConfigParser.Callback.class); 023 parser.parse(callback); 024 025 verify(callback).startCoreSection(); 026 verify(callback).property("repositoryformatversion", "0"); 027 verify(callback).property("filemode", "true"); 028 verify(callback).endSection("core"); 029 } 030 031 @Test 032 void canParseRemoteOriginSectionOfGitConfig() throws IOException { 033 String config = 034 "[remote \"origin\"]\n" + 035 " url = git@github.com:JoyOfCodingPDX/JoyOfCoding.git\n" + 036 " fetch = +refs/heads/*:refs/remotes/origin/*"; 037 GitConfigParser parser = new GitConfigParser(new StringReader(config)); 038 GitConfigParser.Callback callback = mock(GitConfigParser.Callback.class); 039 parser.parse(callback); 040 041 verify(callback).startRemoteSection("origin"); 042 verify(callback).property("url", "git@github.com:JoyOfCodingPDX/JoyOfCoding.git"); 043 verify(callback).endSection("origin"); 044 } 045 046 @Test 047 void canParseRealGitConfig() throws IOException { 048 InputStream resource = getClass().getResourceAsStream("gitConfig.txt"); 049 050 GitConfigParser parser = new GitConfigParser(new InputStreamReader(resource)); 051 GitConfigParser.Callback callback = mock(GitConfigParser.Callback.class); 052 parser.parse(callback); 053 054 verify(callback).startCoreSection(); 055 verify(callback).property("repositoryformatversion", "0"); 056 verify(callback).property("filemode", "true"); 057 verify(callback).endSection("core"); 058 059 verify(callback).startRemoteSection("origin"); 060 verify(callback).property("url", "git@github.com:JoyOfCodingPDX/JoyOfCoding.git"); 061 verify(callback).endSection("origin"); 062 063 } 064}