Skip to content

Commit ea98b5f

Browse files
committed
fix unit tests workingDirectory
1 parent 7821e23 commit ea98b5f

File tree

8 files changed

+58
-39
lines changed

8 files changed

+58
-39
lines changed

src/GitVersionCore.Tests/Helpers/GitVersionContextBuilder.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ public GitVersionContextBuilder WithRepository(IRepository gitRepository)
2727

2828
public GitVersionContextBuilder WithConfig(Config config)
2929
{
30-
this.configuration = config;
30+
configuration = config;
3131
return this;
3232
}
3333

3434
public GitVersionContextBuilder OverrideServices(Action<IServiceCollection> overrides = null)
3535
{
36-
this.overrideServices = overrides;
36+
overrideServices = overrides;
3737
return this;
3838
}
3939

@@ -80,7 +80,11 @@ public void Build()
8080

8181
config.Reset();
8282

83-
var options = Options.Create(new GitVersionOptions { ConfigInfo = { OverrideConfig = config } });
83+
var options = Options.Create(new GitVersionOptions
84+
{
85+
WorkingDirectory = new EmptyRepositoryFixture().RepositoryPath,
86+
ConfigInfo = { OverrideConfig = config }
87+
});
8488

8589
ServicesProvider = ConfigureServices(services =>
8690
{

src/GitVersionCore.Tests/Helpers/TestBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ protected static IServiceProvider ConfigureServices(Action<IServiceCollection> o
2424
return services.BuildServiceProvider();
2525
}
2626

27-
protected static IServiceProvider BuildServiceProvider(IRepository repository, string branch, Config config = null)
27+
protected static IServiceProvider BuildServiceProvider(string workingDirectory, IRepository repository, string branch, Config config = null)
2828
{
2929
config ??= new Config().ApplyDefaults();
3030
var options = Options.Create(new GitVersionOptions
3131
{
32+
WorkingDirectory = workingDirectory,
3233
ConfigInfo = { OverrideConfig = config },
3334
RepositoryInfo = { TargetBranch = branch }
3435
});

src/GitVersionCore.Tests/Model/GitVersionContextTests.cs

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using GitVersionCore.Tests.Mocks;
1010
using LibGit2Sharp;
1111
using Microsoft.Extensions.DependencyInjection;
12+
using Microsoft.Extensions.Options;
1213
using NUnit.Framework;
1314
using Shouldly;
1415

@@ -20,6 +21,8 @@ public class GitVersionContextTests : TestBase
2021
[Theory]
2122
public void CanInheritVersioningMode(VersioningMode mode)
2223
{
24+
using var fixture = new EmptyRepositoryFixture();
25+
2326
var config = new Config
2427
{
2528
VersioningMode = mode
@@ -37,7 +40,7 @@ public void CanInheritVersioningMode(VersioningMode mode)
3740
}
3841
};
3942

40-
var context = GetGitVersionContext(mockRepository, branchName, config);
43+
var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config);
4144

4245
context.Configuration.VersioningMode.ShouldBe(mode);
4346
}
@@ -63,14 +66,16 @@ public void CanInheritIncrement(IncrementStrategy increment, IncrementStrategy?
6366
fixture.BranchTo(dummyBranchName);
6467
fixture.MakeACommit();
6568

66-
var context = GetGitVersionContext(fixture.Repository, dummyBranchName, config);
69+
var context = GetGitVersionContext(fixture.RepositoryPath, fixture.Repository, dummyBranchName, config);
6770

6871
context.Configuration.Increment.ShouldBe(alternateExpected ?? increment);
6972
}
7073

7174
[Test]
7275
public void UsesBranchSpecificConfigOverTopLevelDefaults()
7376
{
77+
using var fixture = new EmptyRepositoryFixture();
78+
7479
var branchName = "develop";
7580
var config = new Config
7681
{
@@ -98,14 +103,16 @@ public void UsesBranchSpecificConfigOverTopLevelDefaults()
98103
}
99104
};
100105

101-
var context = GetGitVersionContext(mockRepository, branchName, config);
106+
var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config);
102107

103108
context.Configuration.Tag.ShouldBe("alpha");
104109
}
105110

106111
[Test]
107112
public void UsesFirstBranchConfigWhenMultipleMatch()
108113
{
114+
using var fixture = new EmptyRepositoryFixture();
115+
109116
var branchConfig = new BranchConfig
110117
{
111118
VersioningMode = VersioningMode.Mainline,
@@ -139,11 +146,11 @@ public void UsesFirstBranchConfigWhenMultipleMatch()
139146
Head = releaseLatestBranch
140147
};
141148

142-
var latestContext = GetGitVersionContext(mockRepository, releaseLatestBranch.CanonicalName, config);
149+
var latestContext = GetGitVersionContext(fixture.RepositoryPath, mockRepository, releaseLatestBranch.CanonicalName, config);
143150
latestContext.Configuration.Increment.ShouldBe(IncrementStrategy.None);
144151

145152
mockRepository.Head = releaseVersionBranch;
146-
var versionContext = GetGitVersionContext(mockRepository, releaseVersionBranch.CanonicalName, config);
153+
var versionContext = GetGitVersionContext(fixture.RepositoryPath, mockRepository, releaseVersionBranch.CanonicalName, config);
147154
versionContext.Configuration.Increment.ShouldBe(IncrementStrategy.Patch);
148155
}
149156

@@ -159,22 +166,34 @@ public void CanFindParentBranchForInheritingIncrementStrategy()
159166
}
160167
}.ApplyDefaults();
161168

162-
using var repo = new EmptyRepositoryFixture();
163-
repo.Repository.MakeACommit();
164-
Commands.Checkout(repo.Repository, repo.Repository.CreateBranch("develop"));
165-
repo.Repository.MakeACommit();
166-
var featureBranch = repo.Repository.CreateBranch("feature/foo");
167-
Commands.Checkout(repo.Repository, featureBranch);
168-
repo.Repository.MakeACommit();
169+
using var fixture = new EmptyRepositoryFixture();
170+
fixture.Repository.MakeACommit();
171+
Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("develop"));
172+
fixture.Repository.MakeACommit();
173+
var featureBranch = fixture.Repository.CreateBranch("feature/foo");
174+
Commands.Checkout(fixture.Repository, featureBranch);
175+
fixture.Repository.MakeACommit();
169176

170-
var context = GetGitVersionContext(repo.Repository, "develop", config);
177+
var context = GetGitVersionContext(fixture.RepositoryPath, fixture.Repository, "develop", config);
171178

172179
context.Configuration.Increment.ShouldBe(IncrementStrategy.Major);
173180
}
174181

175-
private static GitVersionContext GetGitVersionContext(IRepository repository, string branch, Config config = null)
182+
private static GitVersionContext GetGitVersionContext(string workingDirectory, IRepository repository, string branch, Config config = null)
176183
{
177-
var sp = BuildServiceProvider(repository, branch, config);
184+
var options = Options.Create(new GitVersionOptions
185+
{
186+
WorkingDirectory = workingDirectory,
187+
RepositoryInfo = { TargetBranch = branch },
188+
ConfigInfo = { OverrideConfig = config }
189+
});
190+
191+
var sp = ConfigureServices(services =>
192+
{
193+
services.AddSingleton(options);
194+
services.AddSingleton(repository);
195+
});
196+
178197
return sp.GetService<Lazy<GitVersionContext>>().Value;
179198
}
180199
}

src/GitVersionCore.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void CanTakeVersionFromNameOfReleaseBranch(string branchName, string expe
2323
fixture.Repository.MakeACommit();
2424
fixture.Repository.CreateBranch(branchName);
2525

26-
var strategy = GetVersionStrategy(fixture.Repository, branchName);
26+
var strategy = GetVersionStrategy(fixture.RepositoryPath, fixture.Repository, branchName);
2727
var baseVersion = strategy.GetVersions().Single();
2828

2929
baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion);
@@ -39,7 +39,7 @@ public void ShouldNotTakeVersionFromNameOfNonReleaseBranch(string branchName)
3939
fixture.Repository.MakeACommit();
4040
fixture.Repository.CreateBranch(branchName);
4141

42-
var strategy = GetVersionStrategy(fixture.Repository, branchName);
42+
var strategy = GetVersionStrategy(fixture.RepositoryPath, fixture.Repository, branchName);
4343
var baseVersions = strategy.GetVersions();
4444

4545
baseVersions.ShouldBeEmpty();
@@ -56,7 +56,7 @@ public void CanTakeVersionFromNameOfConfiguredReleaseBranch(string branchName, s
5656

5757
var config = new Config().ApplyDefaults();
5858
config.Branches = branchConfigs;
59-
var strategy = GetVersionStrategy(fixture.Repository, branchName, config);
59+
var strategy = GetVersionStrategy(fixture.RepositoryPath, fixture.Repository, branchName, config);
6060

6161
var baseVersion = strategy.GetVersions().Single();
6262

@@ -75,15 +75,15 @@ public void CanTakeVersionFromNameOfRemoteReleaseBranch(string branchName, strin
7575
Commands.Fetch((Repository)fixture.LocalRepositoryFixture.Repository, fixture.LocalRepositoryFixture.Repository.Network.Remotes.First().Name, new string[0], new FetchOptions(), null);
7676
fixture.LocalRepositoryFixture.Checkout($"origin/{branchName}");
7777

78-
var strategy = GetVersionStrategy(fixture.Repository, branchName);
78+
var strategy = GetVersionStrategy(fixture.RepositoryPath, fixture.Repository, branchName);
7979
var baseVersion = strategy.GetVersions().Single();
8080

8181
baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion);
8282
}
8383

84-
private static IVersionStrategy GetVersionStrategy(IRepository repository, string branch, Config config = null)
84+
private static IVersionStrategy GetVersionStrategy(string workingDirectory, IRepository repository, string branch, Config config = null)
8585
{
86-
var sp = BuildServiceProvider(repository, branch, config);
86+
var sp = BuildServiceProvider(workingDirectory, repository, branch, config);
8787
return sp.GetServiceForType<IVersionStrategy, VersionInBranchNameVersionStrategy>();
8888
}
8989
}

src/GitVersionCore.Tests/VersionCalculation/VersionSourceTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void VersionSourceSha()
2222
Commands.Checkout(fixture.Repository, featureBranch);
2323
_ = fixture.Repository.MakeACommit();
2424

25-
var nextVersionCalculator = GetNextVersionCalculator(fixture.Repository, fixture.Repository.Head.CanonicalName);
25+
var nextVersionCalculator = GetNextVersionCalculator(fixture);
2626

2727
var version = nextVersionCalculator.FindVersion();
2828

@@ -36,7 +36,7 @@ public void VersionSourceShaOneCommit()
3636
using var fixture = new EmptyRepositoryFixture();
3737
var initialCommit = fixture.Repository.MakeACommit();
3838

39-
var nextVersionCalculator = GetNextVersionCalculator(fixture.Repository, fixture.Repository.Head.CanonicalName);
39+
var nextVersionCalculator = GetNextVersionCalculator(fixture);
4040

4141
var version = nextVersionCalculator.FindVersion();
4242

@@ -56,17 +56,17 @@ public void VersionSourceShaUsingTag()
5656
Commands.Checkout(fixture.Repository, featureBranch);
5757
_ = fixture.Repository.MakeACommit();
5858

59-
var nextVersionCalculator = GetNextVersionCalculator(fixture.Repository, fixture.Repository.Head.CanonicalName);
59+
var nextVersionCalculator = GetNextVersionCalculator(fixture);
6060

6161
var version = nextVersionCalculator.FindVersion();
6262

6363
version.BuildMetaData.VersionSourceSha.ShouldBe(secondCommit.Sha);
6464
version.BuildMetaData.CommitsSinceVersionSource.ShouldBe(1);
6565
}
6666

67-
private static INextVersionCalculator GetNextVersionCalculator(IRepository repository, string branch)
67+
private static INextVersionCalculator GetNextVersionCalculator(RepositoryFixtureBase fixture)
6868
{
69-
var sp = BuildServiceProvider(repository, branch);
69+
var sp = BuildServiceProvider(fixture.RepositoryPath, fixture.Repository, fixture.Repository.Head.CanonicalName);
7070
return sp.GetService<INextVersionCalculator>();
7171
}
7272
}

src/GitVersionCore/Model/GitVersionOptions.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@ public GitVersionOptions()
1919
dynamicGitRepositoryPath = new Lazy<string>(this.GetDynamicGitRepositoryPath);
2020
}
2121

22-
private string workingDirectory;
23-
public string WorkingDirectory
24-
{
25-
get => workingDirectory?.TrimEnd('/', '\\') ?? ".";
26-
set => workingDirectory = value;
27-
}
22+
public string WorkingDirectory { get; set; }
2823

2924
public string DotGitDirectory => dotGitDirectory.Value;
3025
public string ProjectRootDirectory => projectRootDirectory.Value;

src/GitVersionCore/VersionCalculation/BaseVersionCalculator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public class BaseVersionCalculator : IBaseVersionCalculator
1515
private readonly Lazy<GitVersionContext> versionContext;
1616
private GitVersionContext context => versionContext.Value;
1717

18-
public BaseVersionCalculator(ILog log, IRepositoryMetadataProvider repository, Lazy<GitVersionContext> versionContext, IEnumerable<IVersionStrategy> strategies)
18+
public BaseVersionCalculator(ILog log, IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext, IEnumerable<IVersionStrategy> strategies)
1919
{
2020
this.log = log ?? throw new ArgumentNullException(nameof(log));
21-
this.repositoryMetadataProvider = repository ?? throw new ArgumentNullException(nameof(repository));
21+
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));
2222
this.strategies = strategies?.ToArray() ?? Array.Empty<IVersionStrategy>();
2323
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
2424
}

src/GitVersionExe/Arguments.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public GitVersionOptions ToOptions()
5454
{
5555
return new GitVersionOptions
5656
{
57-
WorkingDirectory = TargetPath,
57+
WorkingDirectory = TargetPath.TrimEnd('/', '\\'),
5858

5959
AssemblyInfo =
6060
{

0 commit comments

Comments
 (0)