33// SPDX-License-Identifier: MIT
44
55using System . Reflection ;
6+ using Dorssel . GitVersion . MsBuild ;
7+ using Microsoft . Build . Framework ;
8+ using Moq ;
69
710namespace UnitTests ;
811
@@ -25,15 +28,131 @@ static string GetVersionFile()
2528 throw new FileNotFoundException ( "gitversion.json" ) ;
2629 }
2730
31+ [ TestMethod ]
32+ public void GetVersion_Normal ( )
33+ {
34+ var buildEngine = new Mock < IBuildEngine > ( ) ;
35+ var task = new GetVersion
36+ {
37+ BuildEngine = buildEngine . Object ,
38+ VersionFile = GetVersionFile ( ) ,
39+ SolutionDirectory = TestContext . TestRunDirectory !
40+ } ;
41+ var result = task . Execute ( ) ;
42+ Assert . IsTrue ( result ) ;
43+ }
44+
2845 [ TestMethod ]
2946 public void GenerateGitVersionInformation_WithIntermediateOutputPath ( )
3047 {
31- var task = new Dorssel . GitVersion . MsBuild . GenerateGitVersionInformation
48+ var buildEngine = new Mock < IBuildEngine > ( ) ;
49+ var task = new GenerateGitVersionInformation
50+ {
51+ BuildEngine = buildEngine . Object ,
52+ VersionFile = GetVersionFile ( ) ,
53+ SolutionDirectory = TestContext . TestRunDirectory ! ,
54+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! )
55+ } ;
56+ var result = task . Execute ( ) ;
57+ Assert . IsTrue ( result ) ;
58+ }
59+
60+ [ TestMethod ]
61+ public void GenerateGitVersionInformation_UnknownLanguage ( )
62+ {
63+ var buildEngine = new Mock < IBuildEngine > ( ) ;
64+ var task = new GenerateGitVersionInformation
65+ {
66+ BuildEngine = buildEngine . Object ,
67+ VersionFile = GetVersionFile ( ) ,
68+ SolutionDirectory = TestContext . TestRunDirectory ! ,
69+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! ) ,
70+ Language = "Unknown"
71+ } ;
72+ var result = task . Execute ( ) ;
73+ Assert . IsFalse ( result ) ;
74+ }
75+
76+ [ TestMethod ]
77+ public void GenerateGitVersionInformation_UseProjectNamespaceForGitVersionInformation_Invalid ( )
78+ {
79+ var buildEngine = new Mock < IBuildEngine > ( ) ;
80+ var task = new GenerateGitVersionInformation
3281 {
82+ BuildEngine = buildEngine . Object ,
3383 VersionFile = GetVersionFile ( ) ,
34- IntermediateOutputPath = TestContext . TestRunDirectory !
84+ SolutionDirectory = TestContext . TestRunDirectory ! ,
85+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! ) ,
86+ UseProjectNamespaceForGitVersionInformation = "invalid"
3587 } ;
3688 var result = task . Execute ( ) ;
3789 Assert . IsTrue ( result ) ;
3890 }
91+
92+ [ TestMethod ]
93+ public void GenerateGitVersionInformation_UseProjectNamespaceForGitVersionInformation_False ( )
94+ {
95+ var buildEngine = new Mock < IBuildEngine > ( ) ;
96+ var task = new GenerateGitVersionInformation
97+ {
98+ BuildEngine = buildEngine . Object ,
99+ VersionFile = GetVersionFile ( ) ,
100+ SolutionDirectory = TestContext . TestRunDirectory ! ,
101+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! ) ,
102+ UseProjectNamespaceForGitVersionInformation = "false"
103+ } ;
104+ var result = task . Execute ( ) ;
105+ Assert . IsTrue ( result ) ;
106+ }
107+
108+ [ TestMethod ]
109+ public void GenerateGitVersionInformation_UseProjectNamespaceForGitVersionInformation_True ( )
110+ {
111+ var buildEngine = new Mock < IBuildEngine > ( ) ;
112+ var task = new GenerateGitVersionInformation
113+ {
114+ BuildEngine = buildEngine . Object ,
115+ VersionFile = GetVersionFile ( ) ,
116+ SolutionDirectory = TestContext . TestRunDirectory ! ,
117+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! ) ,
118+ UseProjectNamespaceForGitVersionInformation = "true" ,
119+ RootNamespace = "Test.Namespace"
120+ } ;
121+ var result = task . Execute ( ) ;
122+ Assert . IsTrue ( result ) ;
123+ }
124+
125+ [ TestMethod ]
126+ public void GenerateGitVersionInformation_RootNamespace_Empty ( )
127+ {
128+ var buildEngine = new Mock < IBuildEngine > ( ) ;
129+ var task = new GenerateGitVersionInformation
130+ {
131+ BuildEngine = buildEngine . Object ,
132+ VersionFile = GetVersionFile ( ) ,
133+ SolutionDirectory = TestContext . TestRunDirectory ! ,
134+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! ) ,
135+ UseProjectNamespaceForGitVersionInformation = "true" ,
136+ ProjectFile = "TestProject.csproj"
137+ } ;
138+ var result = task . Execute ( ) ;
139+ Assert . IsTrue ( result ) ;
140+ }
141+
142+ [ TestMethod ]
143+ public void GenerateGitVersionInformation_Twice ( )
144+ {
145+ var buildEngine = new Mock < IBuildEngine > ( ) ;
146+ var task = new GenerateGitVersionInformation
147+ {
148+ BuildEngine = buildEngine . Object ,
149+ VersionFile = GetVersionFile ( ) ,
150+ SolutionDirectory = TestContext . TestRunDirectory ! ,
151+ IntermediateOutputPath = Path . Combine ( TestContext . TestRunDirectory ! , TestContext . TestName ! )
152+ } ;
153+ var result = task . Execute ( ) ;
154+ Assert . IsTrue ( result ) ;
155+ result = task . Execute ( ) ;
156+ Assert . IsTrue ( result ) ;
157+ }
39158}
0 commit comments