1+ using System ;
2+ using System . IO ;
3+ using Skarp . Version . Cli . Vcs . Git ;
4+ using Xunit ;
5+
6+ namespace Skarp . Version . Cli . Test . Vcs . Git
7+ {
8+ public class GitVcsTest : IClassFixture < GitVcsFixture >
9+ {
10+ private readonly GitVcsFixture _fixture ;
11+
12+
13+ public GitVcsTest ( GitVcsFixture fixture )
14+ {
15+ _fixture = fixture ;
16+ }
17+
18+ [ Fact ]
19+ public void ReturnsProperToolname ( )
20+ {
21+ Assert . Equal ( "git" , _fixture . Vcs . ToolName ( ) ) ;
22+ }
23+
24+ [ Fact ]
25+ public void DetectingGitOnMachineWorks ( )
26+ {
27+ Assert . True ( _fixture . Vcs . IsVcsToolPresent ( _fixture . AbsolutePathToGitTestDir ) ) ;
28+ }
29+
30+ [ Fact ]
31+ public void IsRepositoryCleanWorks ( )
32+ {
33+ Assert . True ( _fixture . Vcs . IsRepositoryClean ( _fixture . AbsolutePathToGitTestDir ) ) ;
34+ }
35+
36+ [ Fact ]
37+ public void CanCommit ( )
38+ {
39+ // arrange
40+ var commitMessage = Guid . NewGuid ( ) . ToString ( "N" ) ;
41+ var fileToCommit = "dotnet-version.dll" ;
42+ File . Copy ( fileToCommit , Path . Combine ( _fixture . GitTestDir , fileToCommit ) ) ;
43+
44+ // act
45+ _fixture . Vcs . Commit ( fileToCommit , commitMessage , _fixture . AbsolutePathToGitTestDir ) ;
46+
47+ // assert
48+
49+ // grep the git-log for messages containing our guid message
50+ var (
51+ exitCode ,
52+ stdOut ,
53+ _
54+ ) = GitVcs . LaunchGitWithArgsInner ( $ "log --grep={ commitMessage } ", 1000 ,
55+ _fixture . AbsolutePathToGitTestDir ) ;
56+ Assert . Equal ( 0 , exitCode ) ;
57+ Assert . Contains ( commitMessage , stdOut ) ;
58+ }
59+
60+ [ Fact ]
61+ public void CanCreateTags ( )
62+ {
63+ var tagToMake = Guid . NewGuid ( ) . ToString ( "N" ) ;
64+
65+ _fixture . Vcs . Tag ( tagToMake , _fixture . AbsolutePathToGitTestDir ) ;
66+
67+ var ( exitCode , stdOut , _) =
68+ GitVcs . LaunchGitWithArgsInner (
69+ "tag -l"
70+ , 1000 ,
71+ _fixture . AbsolutePathToGitTestDir
72+ ) ;
73+
74+ Assert . Equal ( 0 , exitCode ) ;
75+ Assert . Contains ( tagToMake , stdOut ) ;
76+ }
77+ }
78+ }
0 commit comments