Skip to content

Commit ed0cb7a

Browse files
committed
injected IGitVersionContextFactory into NextVersionCalculator
1 parent f8011f7 commit ed0cb7a

File tree

8 files changed

+39
-29
lines changed

8 files changed

+39
-29
lines changed

src/GitVersionCore.Tests/GitToolsTestingExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Co
4242

4343
try
4444
{
45-
var executeGitVersion = nextVersionCalculator.FindVersion(context);
45+
var executeGitVersion = nextVersionCalculator.FindVersion();
4646
var variables = variableProvider.GetVariablesFor(executeGitVersion, context.Configuration, context.IsCurrentCommitTagged);
4747

4848
return variables;

src/GitVersionCore.Tests/VersionCalculation/NextVersionCalculatorTests.cs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ public void ShouldIncrementVersionBasedOnConfig()
2121
{
2222
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 1, "master", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now);
2323

24-
var sp = ConfigureServices(services =>
25-
{
26-
services.AddSingleton<IBaseVersionCalculator>(new TestBaseVersionCalculator(true, new SemanticVersion(1), new MockCommit()));
27-
services.AddSingleton<IMainlineVersionCalculator>(new TestMainlineVersionCalculator(semanticVersionBuildMetaData));
28-
});
24+
var contextBuilder = new GitVersionContextBuilder();
2925

30-
var nextVersionCalculator = sp.GetService<INextVersionCalculator>() as NextVersionCalculator;
31-
nextVersionCalculator.ShouldNotBeNull();
26+
var context = contextBuilder
27+
.OverrideServices(services =>
28+
{
29+
services.AddSingleton<IBaseVersionCalculator>(new TestBaseVersionCalculator(true, new SemanticVersion(1), new MockCommit()));
30+
services.AddSingleton<IMainlineVersionCalculator>(new TestMainlineVersionCalculator(semanticVersionBuildMetaData));
31+
})
32+
.WithConfig(new Config())
33+
.Build();
3234

33-
var context = new GitVersionContextBuilder().WithConfig(new Config()).Build();
35+
var nextVersionCalculator = contextBuilder.ServicesProvider.GetService<INextVersionCalculator>() as NextVersionCalculator;
36+
nextVersionCalculator.ShouldNotBeNull();
3437

3538
var version = nextVersionCalculator.FindVersionInternal(context);
3639

@@ -41,16 +44,21 @@ public void ShouldIncrementVersionBasedOnConfig()
4144
public void DoesNotIncrementWhenBaseVersionSaysNotTo()
4245
{
4346
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData("ef7d0d7e1e700f1c7c9fa01ea6791bb778a5c37c", 1, "master", "b1a34edbd80e141f7cc046c074f109be7d022074", "b1a34e", DateTimeOffset.Now);
44-
var sp = ConfigureServices(services =>
45-
{
46-
services.AddSingleton<IBaseVersionCalculator>(new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()));
47-
services.AddSingleton<IMainlineVersionCalculator>(new TestMainlineVersionCalculator(semanticVersionBuildMetaData));
48-
});
4947

50-
var nextVersionCalculator = sp.GetService<INextVersionCalculator>() as NextVersionCalculator;
48+
var contextBuilder = new GitVersionContextBuilder();
49+
50+
var context = contextBuilder
51+
.OverrideServices(services =>
52+
{
53+
services.AddSingleton<IBaseVersionCalculator>(new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit()));
54+
services.AddSingleton<IMainlineVersionCalculator>(new TestMainlineVersionCalculator(semanticVersionBuildMetaData));
55+
})
56+
.WithConfig(new Config())
57+
.Build();
58+
59+
var nextVersionCalculator = contextBuilder.ServicesProvider.GetService<INextVersionCalculator>() as NextVersionCalculator;
5160

5261
nextVersionCalculator.ShouldNotBeNull();
53-
var context = new GitVersionContextBuilder().WithConfig(new Config()).Build();
5462

5563
var version = nextVersionCalculator.FindVersionInternal(context);
5664

src/GitVersionCore.Tests/VersionSourceTests.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ public void VersionSourceSha()
4444
_ = fixture.Repository.MakeACommit();
4545

4646
gitVersionContextFactory.Init(fixture.Repository, fixture.Repository.Head);
47-
var context = gitVersionContextFactory.Context;
4847

49-
var version = nextVersionCalculator.FindVersion(context);
48+
var version = nextVersionCalculator.FindVersion();
5049

5150
version.BuildMetaData.VersionSourceSha.ShouldBe(initialCommit.Sha);
5251
version.BuildMetaData.CommitsSinceVersionSource.ShouldBe(2);
@@ -59,9 +58,8 @@ public void VersionSourceShaOneCommit()
5958
var initialCommit = fixture.Repository.MakeACommit();
6059

6160
gitVersionContextFactory.Init(fixture.Repository, fixture.Repository.Head);
62-
var context = gitVersionContextFactory.Context;
6361

64-
var version = nextVersionCalculator.FindVersion(context);
62+
var version = nextVersionCalculator.FindVersion();
6563

6664
version.BuildMetaData.VersionSourceSha.ShouldBe(initialCommit.Sha);
6765
version.BuildMetaData.CommitsSinceVersionSource.ShouldBe(0);
@@ -80,9 +78,8 @@ public void VersionSourceShaUsingTag()
8078
_ = fixture.Repository.MakeACommit();
8179

8280
gitVersionContextFactory.Init(fixture.Repository, fixture.Repository.Head);
83-
var context = gitVersionContextFactory.Context;
8481

85-
var version = nextVersionCalculator.FindVersion(context);
82+
var version = nextVersionCalculator.FindVersion();
8683

8784
version.BuildMetaData.VersionSourceSha.ShouldBe(secondCommit.Sha);
8885
version.BuildMetaData.CommitsSinceVersionSource.ShouldBe(1);

src/GitVersionCore/Common/IGitVersionContextFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ namespace GitVersion
55
public interface IGitVersionContextFactory
66
{
77
void Init(IRepository repository, Branch currentBranch, string commitId = null, bool onlyTrackedBranches = false);
8-
GitVersionContext Context { get; set; }
8+
GitVersionContext Context { get; }
99
}
1010
}

src/GitVersionCore/Core/GitVersionCalculator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private VersionVariables ExecuteInternal(Arguments arguments)
6262
gitVersionContextFactory.Init(repo, targetBranch, arguments.CommitId);
6363
var context = gitVersionContextFactory.Context;
6464

65-
var semanticVersion = nextVersionCalculator.FindVersion(context);
65+
var semanticVersion = nextVersionCalculator.FindVersion();
6666

6767
return variableProvider.GetVariablesFor(semanticVersion, context.Configuration, context.IsCurrentCommitTagged);
6868
}

src/GitVersionCore/Core/GitVersionContextFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class GitVersionContextFactory : IGitVersionContextFactory
1616
private readonly IGitRepoMetadataProvider gitRepoMetadataProvider;
1717
private readonly IBranchConfigurationCalculator branchConfigurationCalculator;
1818
private readonly IOptions<Arguments> options;
19-
public GitVersionContext Context { get; set; }
19+
public GitVersionContext Context { get; private set; }
2020

2121
public GitVersionContextFactory(ILog log, IConfigProvider configProvider, IGitRepoMetadataProvider gitRepoMetadataProvider, IBranchConfigurationCalculator branchConfigurationCalculator, IOptions<Arguments> options)
2222
{

src/GitVersionCore/VersionCalculation/INextVersionCalculator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ namespace GitVersion.VersionCalculation
22
{
33
public interface INextVersionCalculator
44
{
5-
SemanticVersion FindVersion(GitVersionContext context);
5+
SemanticVersion FindVersion();
66
}
77
}

src/GitVersionCore/VersionCalculation/NextVersionCalculator.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,23 @@ public class NextVersionCalculator : INextVersionCalculator
1414
private readonly IBaseVersionCalculator baseVersionCalculator;
1515
private readonly IMainlineVersionCalculator mainlineVersionCalculator;
1616
private readonly IGitRepoMetadataProvider gitRepoMetadataProvider;
17+
private readonly IGitVersionContextFactory gitVersionContextFactory;
1718

18-
public NextVersionCalculator(ILog log, IBaseVersionCalculator baseVersionCalculator, IMainlineVersionCalculator mainlineVersionCalculator, IGitRepoMetadataProvider gitRepoMetadataProvider)
19+
public NextVersionCalculator(ILog log, IBaseVersionCalculator baseVersionCalculator,
20+
IMainlineVersionCalculator mainlineVersionCalculator, IGitRepoMetadataProvider gitRepoMetadataProvider,
21+
IGitVersionContextFactory gitVersionContextFactory)
1922
{
2023
this.log = log ?? throw new ArgumentNullException(nameof(log));
2124

2225
this.baseVersionCalculator = baseVersionCalculator ?? throw new ArgumentNullException(nameof(baseVersionCalculator));
2326
this.mainlineVersionCalculator = mainlineVersionCalculator ?? throw new ArgumentNullException(nameof(mainlineVersionCalculator));
2427
this.gitRepoMetadataProvider = gitRepoMetadataProvider ?? throw new ArgumentNullException(nameof(gitRepoMetadataProvider));
28+
this.gitVersionContextFactory = gitVersionContextFactory ?? throw new ArgumentNullException(nameof(gitRepoMetadataProvider));
2529
}
2630

27-
public SemanticVersion FindVersion(GitVersionContext context)
31+
public SemanticVersion FindVersion()
2832
{
33+
var context = gitVersionContextFactory.Context;
2934
log.Info($"Running against branch: {context.CurrentBranch.FriendlyName} ({(context.CurrentCommit == null ? "-" : context.CurrentCommit.Sha)})");
3035
if (context.IsCurrentCommitTagged)
3136
{
@@ -43,7 +48,7 @@ public SemanticVersion FindVersion(GitVersionContext context)
4348
return FindVersionInternal(context);
4449
}
4550

46-
public SemanticVersion FindVersionInternal(GitVersionContext context)
51+
internal SemanticVersion FindVersionInternal(GitVersionContext context)
4752
{
4853
SemanticVersion taggedSemanticVersion = null;
4954

0 commit comments

Comments
 (0)