Skip to content

Commit c2005e1

Browse files
committedOct 28, 2019
using IEnvironment instead of System.Environment
1 parent 4c6d13e commit c2005e1

28 files changed

+139
-73
lines changed
 

‎src/GitVersionCore.Tests/AssemblyInfoFileUpdaterTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void Setup()
2929
var baseVersionCalculator = new BaseVersionCalculator(log, null);
3030
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
3131
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
32-
variableProvider = new VariableProvider(nextVersionCalculator);
32+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3333
}
3434

3535
[TestCase("cs")]

‎src/GitVersionCore.Tests/BuildServers/BuildServerBaseTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void SetUp()
2626
var baseVersionCalculator = new BaseVersionCalculator(log, null);
2727
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
2828
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
29-
variableProvider = new VariableProvider(nextVersionCalculator);
29+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3030
}
3131

3232
[Test]

‎src/GitVersionCore.Tests/BuildServers/CodeBuildTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void SetUp()
2929
var baseVersionCalculator = new BaseVersionCalculator(log, null);
3030
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
3131
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
32-
variableProvider = new VariableProvider(nextVersionCalculator);
32+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3333
}
3434

3535
[Test]

‎src/GitVersionCore.Tests/BuildServers/GitLabCiMessageGenerationTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void SetUp()
2828
var baseVersionCalculator = new BaseVersionCalculator(log, null);
2929
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
3030
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
31-
variableProvider = new VariableProvider(nextVersionCalculator);
31+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3232
}
3333

3434
[Test]

‎src/GitVersionCore.Tests/BuildServers/JenkinsMessageGenerationTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void SetUp()
2828
var baseVersionCalculator = new BaseVersionCalculator(log, null);
2929
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
3030
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
31-
variableProvider = new VariableProvider(nextVersionCalculator);
31+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3232
}
3333

3434
[Test]

‎src/GitVersionCore.Tests/ConfigProviderTests.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,21 @@ public class ConfigProviderTests : TestBase
2727
private IConfigFileLocator configFileLocator;
2828
private IConfigProvider configProvider;
2929
private IConfigInitWizard configInitWizard;
30+
private IEnvironment environment;
3031

3132
[SetUp]
3233
public void Setup()
3334
{
3435
fileSystem = new TestFileSystem();
3536
var log = new NullLog();
37+
environment = new TestEnvironment();
38+
3639
var stepFactory = new ConfigInitStepFactory();
3740
configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
3841
configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
3942
repoPath = DefaultRepoPath;
4043

41-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = repoPath }));
44+
var gitPreparer = new GitPreparer(log, environment, Options.Create(new Arguments { TargetPath = repoPath }));
4245
configProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
4346

4447
ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute<TestAttribute>();
@@ -293,7 +296,7 @@ public void NoWarnOnGitVersionYmlFile()
293296
var log = new Log(logAppender);
294297

295298
var defaultConfigFileLocator = new DefaultConfigFileLocator(fileSystem, log);
296-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = repoPath }));
299+
var gitPreparer = new GitPreparer(log, environment, Options.Create(new Arguments { TargetPath = repoPath }));
297300

298301
configProvider = new ConfigProvider(fileSystem, log, defaultConfigFileLocator, gitPreparer, configInitWizard);
299302

‎src/GitVersionCore.Tests/DefaultConfigFileLocatorTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public void NoWarnOnGitVersionYmlFile()
9292
{
9393
var log = new NullLog();
9494
var defaultConfigFileLocator = new DefaultConfigFileLocator(fileSystem, log);
95-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = repoPath }));
95+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), Options.Create(new Arguments { TargetPath = repoPath }));
9696
var stepFactory = new ConfigInitStepFactory();
9797
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
9898

‎src/GitVersionCore.Tests/DynamicRepositoryTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,13 @@ public void FindsVersionInDynamicRepo(string name, string url, string targetBran
9494
var nextVersionCalculator = new NextVersionCalculator(log, metadataCalculator, baseVersionCalculator, mainlineVersionCalculator);
9595
var gitVersionFinder = new GitVersionFinder(log, nextVersionCalculator);
9696

97-
var gitPreparer = new GitPreparer(log, options);
97+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), options);
9898
var stepFactory = new ConfigInitStepFactory();
9999
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
100100

101101
var configurationProvider = new ConfigProvider(testFileSystem, log, configFileLocator, gitPreparer, configInitWizard);
102102

103-
var variableProvider = new VariableProvider(nextVersionCalculator);
103+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
104104
var gitVersionCalculator = new GitVersionCalculator(testFileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options);
105105

106106
var versionVariables = gitVersionCalculator.CalculateVersionVariables();

‎src/GitVersionCore.Tests/GitToolsTestingExtensions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Co
3434
var baseVersionCalculator = new TestBaseVersionStrategiesCalculator(log);
3535
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
3636
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
37-
var variableProvider = new VariableProvider(nextVersionCalculator);
37+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
3838
var gitVersionContext = new GitVersionContext(repository ?? fixture.Repository, log, targetBranch, configuration, isForTrackedBranchOnly, commitId);
3939
var executeGitVersion = ExecuteGitVersion(gitVersionContext);
4040
var variables = variableProvider.GetVariablesFor(executeGitVersion, gitVersionContext.Configuration, gitVersionContext.IsCurrentCommitTagged);
@@ -99,7 +99,7 @@ public static void InitializeRepo(this RemoteRepositoryFixture fixture)
9999
Authentication = new Authentication(),
100100
TargetPath = fixture.LocalRepositoryFixture.RepositoryPath
101101
};
102-
new GitPreparer(log, Options.Create(arguments)).Prepare(true, null);
102+
new GitPreparer(log, new TestEnvironment(), Options.Create(arguments)).Prepare(true, null);
103103
}
104104
}
105105
}

‎src/GitVersionCore.Tests/GitVersionCore.Tests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<PackageReference Include="GitTools.Testing" Version="1.2.0" />
1616
<PackageReference Include="LibGit2Sharp.NativeBinaries" Version="$(PackageVersion_LibGit2Sharp_NativeBinaries)" />
1717
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
18+
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" />
1819
<PackageReference Include="YamlDotNet" Version="$(PackageVersion_YamlDotNet)" />
1920
</ItemGroup>
2021
<ItemGroup>

‎src/GitVersionCore.Tests/GitVersionExecutorTests.cs

+11-11
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void CacheKeySameAfterReNormalizing()
6363
TargetUrl = targetUrl,
6464
TargetPath = fixture.RepositoryPath
6565
};
66-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
66+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
6767
configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
6868

6969
gitPreparer.Prepare(true, targetBranch);
@@ -97,7 +97,7 @@ public void CacheKeyForWorktree()
9797
TargetPath = worktreePath
9898
};
9999

100-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
100+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
101101
configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
102102
var cacheKey = GitVersionCacheKeyFactory.Create(fileSystem, log, gitPreparer, configFileLocator, null);
103103
cacheKey.Value.ShouldNotBeEmpty();
@@ -212,7 +212,7 @@ public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDyn
212212
TargetPath = fixture.RepositoryPath
213213
};
214214

215-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
215+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
216216

217217
gitVersionCache = new GitVersionCache(fileSystem, log);
218218
var cacheDirectory = gitVersionCache.GetCacheDirectory(gitPreparer);
@@ -390,7 +390,7 @@ public void GetProjectRootDirectoryWorkingDirectoryWithWorktree()
390390
TargetPath = worktreePath
391391
};
392392

393-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
393+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
394394

395395
gitPreparer.GetProjectRootDirectory().TrimEnd('/', '\\').ShouldBe(worktreePath);
396396
}
@@ -414,7 +414,7 @@ public void GetProjectRootDirectoryNoWorktree()
414414
TargetPath = fixture.RepositoryPath
415415
};
416416

417-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
417+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
418418
var expectedPath = fixture.RepositoryPath.TrimEnd('/', '\\');
419419
gitPreparer.GetProjectRootDirectory().TrimEnd('/', '\\').ShouldBe(expectedPath);
420420
});
@@ -451,7 +451,7 @@ public void GetDotGitDirectoryNoWorktree()
451451
TargetPath = fixture.RepositoryPath
452452
};
453453

454-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
454+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
455455
var expectedPath = Path.Combine(fixture.RepositoryPath, ".git");
456456
gitPreparer.GetDotGitDirectory().ShouldBe(expectedPath);
457457
});
@@ -479,7 +479,7 @@ public void GetDotGitDirectoryWorktree()
479479
TargetPath = worktreePath
480480
};
481481

482-
var gitPreparer = new GitPreparer(log, Options.Create(arguments));
482+
var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));
483483
var expectedPath = Path.Combine(fixture.RepositoryPath, ".git");
484484
gitPreparer.GetDotGitDirectory().ShouldBe(expectedPath);
485485
}
@@ -524,14 +524,14 @@ private void RepositoryScope(ILog log, Action<EmptyRepositoryFixture, VersionVar
524524
var arguments = new Arguments { TargetPath = fixture.RepositoryPath };
525525
var options = Options.Create(arguments);
526526

527-
var gitPreparer = new GitPreparer(log, options);
527+
var gitPreparer = new GitPreparer(log, environment, options);
528528
var stepFactory = new ConfigInitStepFactory();
529529
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
530530
var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
531531
var baseVersionCalculator = new BaseVersionCalculator(this.log, null);
532532
var mainlineVersionCalculator = new MainlineVersionCalculator(this.log, metaDataCalculator);
533533
var nextVersionCalculator = new NextVersionCalculator(this.log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
534-
var variableProvider = new VariableProvider(nextVersionCalculator);
534+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
535535
var gitVersionCalculator = new GitVersionCalculator(fileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options);
536536

537537
fixture.Repository.MakeACommit();
@@ -547,14 +547,14 @@ private GitVersionCalculator GetGitVersionCalculator(Arguments arguments)
547547
{
548548
var options = Options.Create(arguments);
549549

550-
var gitPreparer = new GitPreparer(log, options);
550+
var gitPreparer = new GitPreparer(log, environment, options);
551551
var stepFactory = new ConfigInitStepFactory();
552552
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
553553
var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
554554
var baseVersionCalculator = new BaseVersionCalculator(log, null);
555555
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
556556
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
557-
var variableProvider = new VariableProvider(nextVersionCalculator);
557+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
558558
var gitVersionCalculator = new GitVersionCalculator(fileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options);
559559
return gitVersionCalculator;
560560
}

‎src/GitVersionCore.Tests/GitVersionInformationGeneratorTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void ShouldCreateFile(string fileExtension)
4747
var baseVersionCalculator = new BaseVersionCalculator(log, null);
4848
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
4949
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
50-
var variableProvider = new VariableProvider(nextVersionCalculator);
50+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
5151
var variables = variableProvider.GetVariablesFor(semanticVersion, new TestEffectiveConfiguration(), false);
5252
var generator = new GitVersionInformationGenerator(fileName, directory, variables, fileSystem);
5353

‎src/GitVersionCore.Tests/Init/InitScenarios.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void CanSetNextVersion()
4545
var configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
4646
var workingDirectory = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "c:\\proj" : "/proj";
4747

48-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = workingDirectory }));
48+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), Options.Create(new Arguments { TargetPath = workingDirectory }));
4949
var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
5050

5151
configurationProvider.Init(workingDirectory);

‎src/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void GivenARemoteGitRepositoryWithCommitsAndBranchesThenClonedLocalShould
4141

4242
return repo;
4343
});
44-
GitRepositoryHelper.NormalizeGitDirectory(new NullLog(), fixture.LocalRepositoryFixture.RepositoryPath, new AuthenticationInfo(), noFetch: false, currentBranch: string.Empty, isDynamicRepository: true);
44+
GitRepositoryHelper.NormalizeGitDirectory(new NullLog(), new TestEnvironment(), fixture.LocalRepositoryFixture.RepositoryPath, new AuthenticationInfo(), noFetch: false, currentBranch: string.Empty, isDynamicRepository: true);
4545

4646
fixture.AssertFullSemver("1.0.0-beta.1+5");
4747
fixture.AssertFullSemver("1.0.0-beta.1+5", fixture.LocalRepositoryFixture.Repository);

‎src/GitVersionCore.Tests/JsonVersionBuilderTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void Json()
3939
var baseVersionCalculator = new BaseVersionCalculator(log, null);
4040
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
4141
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
42-
var variableProvider = new VariableProvider(nextVersionCalculator);
42+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
4343
var variables = variableProvider.GetVariablesFor(semanticVersion, config, false);
4444
var json = JsonOutputFormatter.ToJson(variables);
4545
json.ShouldMatchApproved(c => c.SubFolder("Approved"));

‎src/GitVersionCore.Tests/NamedConfigFileLocatorTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void NoWarnOnCustomYmlFile()
6464

6565
configFileLocator = new NamedConfigFileLocator(fileSystem, log, options);
6666

67-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = repoPath }));
67+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), Options.Create(new Arguments { TargetPath = repoPath }));
6868
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
6969
var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
7070

@@ -84,7 +84,7 @@ public void NoWarnOnCustomYmlFileOutsideRepoPath()
8484
log = new Log(logAppender);
8585

8686
configFileLocator = new NamedConfigFileLocator(fileSystem, log, options);
87-
var gitPreparer = new GitPreparer(log, Options.Create(new Arguments { TargetPath = repoPath }));
87+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), Options.Create(new Arguments { TargetPath = repoPath }));
8888
var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
8989
var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard);
9090

‎src/GitVersionCore.Tests/StringFormatWithExtensionTests.cs

+26-18
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
1-
using System;
21
using NUnit.Framework;
32
using GitVersion.Helpers;
3+
using GitVersion;
44

55
namespace GitVersionCore.Tests
66
{
77
[TestFixture]
88

99
public class StringFormatWithExtensionTests
1010
{
11+
private IEnvironment environment;
12+
13+
[SetUp]
14+
public void Setup()
15+
{
16+
environment = new TestEnvironment();
17+
}
18+
1119
[Test]
1220
public void FormatWithNoTokens()
1321
{
1422
var propertyObject = new { };
1523
var target = "Some String without tokens";
1624
var expected = target;
17-
var actual = target.FormatWith(propertyObject);
25+
var actual = target.FormatWith(propertyObject, environment);
1826
Assert.AreEqual(expected, actual);
1927
}
2028

@@ -24,7 +32,7 @@ public void FormatWithSingleSimpleToken()
2432
var propertyObject = new { SomeProperty = "SomeValue" };
2533
var target = "{SomeProperty}";
2634
var expected = "SomeValue";
27-
var actual = target.FormatWith(propertyObject);
35+
var actual = target.FormatWith(propertyObject, environment);
2836
Assert.AreEqual(expected, actual);
2937
}
3038

@@ -34,52 +42,52 @@ public void FormatWithMultipleTokensAndVerbatimText()
3442
var propertyObject = new { SomeProperty = "SomeValue", AnotherProperty = "Other Value" };
3543
var target = "{SomeProperty} some text {AnotherProperty}";
3644
var expected = "SomeValue some text Other Value";
37-
var actual = target.FormatWith(propertyObject);
45+
var actual = target.FormatWith(propertyObject, environment);
3846
Assert.AreEqual(expected, actual);
3947
}
4048

4149
[Test]
4250
public void FormatWithEnvVarToken()
4351
{
44-
Environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR", "Env Var Value");
52+
environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR", "Env Var Value");
4553
var propertyObject = new { };
4654
var target = "{env:GIT_VERSION_TEST_VAR}";
4755
var expected = "Env Var Value";
48-
var actual = target.FormatWith(propertyObject);
56+
var actual = target.FormatWith(propertyObject, environment);
4957
Assert.AreEqual(expected, actual);
5058
}
5159

5260
[Test]
5361
public void FormatWithEnvVarTokenWithFallback()
5462
{
55-
Environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR", "Env Var Value");
63+
environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR", "Env Var Value");
5664
var propertyObject = new { };
5765
var target = "{env:GIT_VERSION_TEST_VAR ?? fallback}";
5866
var expected = "Env Var Value";
59-
var actual = target.FormatWith(propertyObject);
67+
var actual = target.FormatWith(propertyObject, environment);
6068
Assert.AreEqual(expected, actual);
6169
}
6270

6371
[Test]
6472
public void FormatWithUnsetEnvVarTokenWithFallback()
6573
{
66-
Environment.SetEnvironmentVariable("GIT_VERSION_UNSET_TEST_VAR", null);
74+
environment.SetEnvironmentVariable("GIT_VERSION_UNSET_TEST_VAR", null);
6775
var propertyObject = new { };
6876
var target = "{env:GIT_VERSION_UNSET_TEST_VAR ?? fallback}";
6977
var expected = "fallback";
70-
var actual = target.FormatWith(propertyObject);
78+
var actual = target.FormatWith(propertyObject, environment);
7179
Assert.AreEqual(expected, actual);
7280
}
7381

7482
[Test]
7583
public void FormatWithMultipleEnvVars()
7684
{
77-
Environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR_1", "Val-1");
78-
Environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR_2", "Val-2");
85+
environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR_1", "Val-1");
86+
environment.SetEnvironmentVariable("GIT_VERSION_TEST_VAR_2", "Val-2");
7987
var propertyObject = new { };
8088
var target = "{env:GIT_VERSION_TEST_VAR_1} and {env:GIT_VERSION_TEST_VAR_2}";
8189
var expected = "Val-1 and Val-2";
82-
var actual = target.FormatWith(propertyObject);
90+
var actual = target.FormatWith(propertyObject, environment);
8391
Assert.AreEqual(expected, actual);
8492
}
8593

@@ -90,7 +98,7 @@ public void FormatWithMultipleEnvChars()
9098
//Test the greediness of the regex in matching env: char
9199
var target = "{env:env:GIT_VERSION_TEST_VAR_1} and {env:DUMMY_VAR ?? fallback}";
92100
var expected = "{env:env:GIT_VERSION_TEST_VAR_1} and fallback";
93-
var actual = target.FormatWith(propertyObject);
101+
var actual = target.FormatWith(propertyObject, environment);
94102
Assert.AreEqual(expected, actual);
95103
}
96104

@@ -100,18 +108,18 @@ public void FormatWithMultipleFallbackChars()
100108
var propertyObject = new { };
101109
//Test the greediness of the regex in matching env: and ?? chars
102110
var target = "{env:env:GIT_VERSION_TEST_VAR_1} and {env:DUMMY_VAR ??? fallback}";
103-
var actual = target.FormatWith(propertyObject);
111+
var actual = target.FormatWith(propertyObject, environment);
104112
Assert.AreEqual(target, actual);
105113
}
106114

107115
[Test]
108116
public void FormatWithSingleFallbackChar()
109117
{
110-
Environment.SetEnvironmentVariable("DUMMY_ENV_VAR", "Dummy-Val");
118+
environment.SetEnvironmentVariable("DUMMY_ENV_VAR", "Dummy-Val");
111119
var propertyObject = new { };
112120
//Test the sanity of the regex when there is a grammar mismatch
113121
var target = "{en:DUMMY_ENV_VAR} and {env:DUMMY_ENV_VAR??fallback}";
114-
var actual = target.FormatWith(propertyObject);
122+
var actual = target.FormatWith(propertyObject, environment);
115123
Assert.AreEqual(target, actual);
116124
}
117125

@@ -121,7 +129,7 @@ public void FormatWIthNullPropagationWithMultipleSpaces()
121129
var propertyObject = new { SomeProperty = "Some Value" };
122130
var target = "{SomeProperty} and {env:DUMMY_ENV_VAR ?? fallback}";
123131
var expected = "Some Value and fallback";
124-
var actual = target.FormatWith(propertyObject);
132+
var actual = target.FormatWith(propertyObject, environment);
125133
Assert.AreEqual(expected, actual);
126134
}
127135
}

‎src/GitVersionCore.Tests/VariableProviderTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void Setup()
2424
var baseVersionCalculator = new BaseVersionCalculator(log, null);
2525
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
2626
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
27-
variableProvider = new VariableProvider(nextVersionCalculator);
27+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
2828
}
2929

3030
[Test]

‎src/GitVersionCore.Tests/WixFileTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void UpdateWixVersionFile()
5353
var baseVersionCalculator = new BaseVersionCalculator(log, null);
5454
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
5555
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
56-
var variableProvider = new VariableProvider(nextVersionCalculator);
56+
var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
5757
var vars = variableProvider.GetVariablesFor(semVer, config, false);
5858

5959
using var wixVersionFileUpdater = new WixVersionFileUpdater(workingDir, vars, fileSystem, log);

‎src/GitVersionCore/Authentication.cs

-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ namespace GitVersion
22
{
33
public class Authentication
44
{
5-
public Authentication()
6-
{
7-
Username = System.Environment.GetEnvironmentVariable("GITVERSION_REMOTE_USERNAME");
8-
Password = System.Environment.GetEnvironmentVariable("GITVERSION_REMOTE_PASSWORD");
9-
}
105
public string Username;
116
public string Password;
127
}

‎src/GitVersionCore/GitPreparer.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@ namespace GitVersion
1111
public class GitPreparer : IGitPreparer
1212
{
1313
private readonly ILog log;
14+
private readonly IEnvironment environment;
1415
private readonly string dynamicRepositoryLocation;
1516
private readonly AuthenticationInfo authentication;
1617
private readonly bool noFetch;
1718

1819
private const string DefaultRemoteName = "origin";
1920
private string dynamicGitRepositoryPath;
2021

21-
public GitPreparer(ILog log, IOptions<Arguments> options)
22+
public GitPreparer(ILog log, IEnvironment environment, IOptions<Arguments> options)
2223
{
2324
this.log = log ?? throw new ArgumentNullException(nameof(log));
25+
this.environment = environment;
2426
var arguments = options.Value;
2527

2628
TargetUrl = arguments.TargetUrl;
@@ -47,7 +49,7 @@ public void Prepare(bool normalizeGitDirectory, string currentBranch, bool shoul
4749
{
4850
CleanupDuplicateOrigin();
4951
}
50-
GitRepositoryHelper.NormalizeGitDirectory(log, GetDotGitDirectory(), authentication, noFetch, currentBranch, IsDynamicGitRepository());
52+
GitRepositoryHelper.NormalizeGitDirectory(log, environment, GetDotGitDirectory(), authentication, noFetch, currentBranch, IsDynamicGitRepository());
5153
}
5254
return;
5355
}
@@ -180,7 +182,7 @@ private string CreateDynamicRepository(string targetPath, AuthenticationInfo aut
180182
log.Info("Git repository already exists");
181183
using (log.IndentLog($"Normalizing git directory for branch '{targetBranch}'"))
182184
{
183-
GitRepositoryHelper.NormalizeGitDirectory(log, gitDirectory, auth, noFetch, targetBranch, true);
185+
GitRepositoryHelper.NormalizeGitDirectory(log, environment, gitDirectory, auth, noFetch, targetBranch, true);
184186
}
185187

186188
return gitDirectory;
@@ -191,7 +193,7 @@ private string CreateDynamicRepository(string targetPath, AuthenticationInfo aut
191193
using (log.IndentLog($"Normalizing git directory for branch '{targetBranch}'"))
192194
{
193195
// Normalize (download branches) before using the branch
194-
GitRepositoryHelper.NormalizeGitDirectory(log, gitDirectory, auth, noFetch, targetBranch, true);
196+
GitRepositoryHelper.NormalizeGitDirectory(log, environment, gitDirectory, auth, noFetch, targetBranch, true);
195197
}
196198

197199
return gitDirectory;

‎src/GitVersionCore/Helpers/GitRepositoryHelper.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public static class GitRepositoryHelper
1313
/// Normalisation of a git directory turns all remote branches into local branches, turns pull request refs into a real branch and a few other things. This is designed to be run *only on the build server* which checks out repositories in different ways.
1414
/// It is not recommended to run normalisation against a local repository
1515
/// </summary>
16-
public static void NormalizeGitDirectory(ILog log, string gitDirectory, AuthenticationInfo authentication,
16+
public static void NormalizeGitDirectory(ILog log, IEnvironment environment, string gitDirectory, AuthenticationInfo authentication,
1717
bool noFetch, string currentBranch, bool isDynamicRepository)
1818
{
1919
using var repo = new Repository(gitDirectory);
@@ -120,7 +120,7 @@ public static void NormalizeGitDirectory(ILog log, string gitDirectory, Authenti
120120
{
121121
if (repo.Head.Tip.Sha != expectedSha)
122122
{
123-
if (System.Environment.GetEnvironmentVariable("IGNORE_NORMALISATION_GIT_HEAD_MOVE") != "1")
123+
if (environment.GetEnvironmentVariable("IGNORE_NORMALISATION_GIT_HEAD_MOVE") != "1")
124124
{
125125
// Whoa, HEAD has moved, it shouldn't have. We need to blow up because there is a bug in normalisation
126126
throw new BugException($@"GitVersion has a bug, your HEAD has moved after repo normalisation.

‎src/GitVersionCore/Helpers/StringFormatWith.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ internal static class StringFormatWithExtension
1818
/// </summary>
1919
/// <param name="template" this="true">The template to be replaced with values from the source object. The template can contain expressions wrapped in curly braces, that point to properties or fields on the source object to be used as a substitute, e.g '{Foo.Bar.CurrencySymbol} foo {Foo.Bar.Price}'.</param>
2020
/// <param name="source">The source object to apply to format</param>
21-
public static string FormatWith<T>(this string template, T source)
21+
/// <param name="environment"></param>
22+
public static string FormatWith<T>(this string template, T source, IEnvironment environment)
2223
{
2324
if (template == null)
2425
{
@@ -46,7 +47,7 @@ public static string FormatWith<T>(this string template, T source)
4647
fallback = components[1].Trim();
4748
}
4849

49-
propertyValue = System.Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process);
50+
propertyValue = environment.GetEnvironmentVariable(envVar);
5051
if (propertyValue == null)
5152
{
5253
if (fallback != null)

‎src/GitVersionCore/OutputVariables/VariableProvider.cs

+8-6
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ namespace GitVersion.OutputVariables
1111
public class VariableProvider : IVariableProvider
1212
{
1313
private readonly INextVersionCalculator nextVersionCalculator;
14+
private readonly IEnvironment environment;
1415

15-
public VariableProvider(INextVersionCalculator nextVersionCalculator)
16+
public VariableProvider(INextVersionCalculator nextVersionCalculator, IEnvironment environment)
1617
{
1718
this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
19+
this.environment = environment;
1820
}
1921

2022
public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, EffectiveConfiguration config, bool isCurrentCommitTagged)
@@ -54,13 +56,13 @@ public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, Effecti
5456
var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, config);
5557

5658
var informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues,
57-
semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion");
59+
environment, semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion");
5860

5961
var assemblyFileSemVer = CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues,
60-
semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat");
62+
environment, semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat");
6163

6264
var assemblySemVer = CheckAndFormatString(config.AssemblyVersioningFormat, semverFormatValues,
63-
semverFormatValues.AssemblySemVer, "AssemblyVersioningFormat");
65+
environment, semverFormatValues.AssemblySemVer, "AssemblyVersioningFormat");
6466

6567
var variables = new VersionVariables(
6668
semverFormatValues.Major,
@@ -105,7 +107,7 @@ private static void PromoteNumberOfCommitsToTagNumber(SemanticVersion semanticVe
105107
semanticVersion.BuildMetaData.CommitsSinceTag = null;
106108
}
107109

108-
private static string CheckAndFormatString<T>(string formatString, T source, string defaultValue, string formatVarName)
110+
private static string CheckAndFormatString<T>(string formatString, T source, IEnvironment environment, string defaultValue, string formatVarName)
109111
{
110112
string formattedString;
111113

@@ -117,7 +119,7 @@ private static string CheckAndFormatString<T>(string formatString, T source, st
117119
{
118120
try
119121
{
120-
formattedString = formatString.FormatWith(source);
122+
formattedString = formatString.FormatWith(source, environment);
121123
}
122124
catch (ArgumentException formex)
123125
{

‎src/GitVersionExe.Tests/ArgumentParserTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using GitVersion.Exceptions;
55
using GitVersion.Logging;
66
using GitVersion.OutputFormatters;
7+
using GitVersionExe.Tests.Helpers;
78

89
namespace GitVersionExe.Tests
910
{
@@ -15,7 +16,7 @@ public class ArgumentParserTests
1516
[SetUp]
1617
public void SetUp()
1718
{
18-
argumentParser = new ArgumentParser();
19+
argumentParser = new ArgumentParser(new TestEnvironment());
1920
}
2021

2122
[Test]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System.Collections.Generic;
2+
using GitVersion;
3+
4+
namespace GitVersionExe.Tests.Helpers
5+
{
6+
public class TestEnvironment : IEnvironment
7+
{
8+
private readonly IDictionary<string, string> map;
9+
10+
public TestEnvironment()
11+
{
12+
map = new Dictionary<string, string>();
13+
}
14+
15+
public string GetEnvironmentVariable(string variableName)
16+
{
17+
return map.TryGetValue(variableName, out var val) ? val : null;
18+
}
19+
20+
public void SetEnvironmentVariable(string variableName, string value)
21+
{
22+
map[variableName] = value;
23+
}
24+
}
25+
}

‎src/GitVersionExe/ArgumentParser.cs

+26
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ namespace GitVersion
1414
{
1515
public class ArgumentParser : IArgumentParser
1616
{
17+
private readonly IEnvironment environment;
18+
19+
public ArgumentParser(IEnvironment environment)
20+
{
21+
this.environment = environment;
22+
}
23+
1724
public Arguments ParseArguments(string commandLineArguments)
1825
{
1926
var arguments = commandLineArguments
@@ -54,6 +61,8 @@ public Arguments ParseArguments(string[] commandLineArguments)
5461

5562
var arguments = new Arguments();
5663

64+
AddAuthentication(arguments);
65+
5766
var switchesAndValues = CollectSwitchesAndValuesFromArguments(commandLineArguments, out var firstArgumentIsSwitch);
5867

5968
for (var i = 0; i < switchesAndValues.AllKeys.Length; i++)
@@ -399,6 +408,23 @@ public Arguments ParseArguments(string[] commandLineArguments)
399408
return arguments;
400409
}
401410

411+
private void AddAuthentication(Arguments arguments)
412+
{
413+
var username = environment.GetEnvironmentVariable("GITVERSION_REMOTE_USERNAME");
414+
if (!string.IsNullOrWhiteSpace(username))
415+
{
416+
if (arguments.Authentication == null) arguments.Authentication = new Authentication();
417+
arguments.Authentication.Username = username;
418+
}
419+
420+
var password = environment.GetEnvironmentVariable("GITVERSION_REMOTE_PASSWORD");
421+
if (!string.IsNullOrWhiteSpace(password))
422+
{
423+
if (arguments.Authentication == null) arguments.Authentication = new Authentication();
424+
arguments.Authentication.Username = password;
425+
}
426+
}
427+
402428
private static void EnsureArgumentValueCount(string[] values, int maxArguments = 1)
403429
{
404430
if (values != null && values.Length > maxArguments)

‎src/GitVersionTask.Tests/GitVersionTaskDirectoryTests.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class GitVersionTaskDirectoryTests : TestBase
2626
private IGitVersionFinder gitVersionFinder;
2727
private IFileSystem testFileSystem;
2828
private IConfigInitWizard configInitWizard;
29+
private IEnvironment environment;
2930

3031
[SetUp]
3132
public void CreateTemporaryRepository()
@@ -35,6 +36,7 @@ public void CreateTemporaryRepository()
3536

3637
testFileSystem = new TestFileSystem();
3738
log = new NullLog();
39+
environment = new TestEnvironment();
3840
var stepFactory = new ConfigInitStepFactory();
3941
configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory);
4042
configFileLocator = new DefaultConfigFileLocator(testFileSystem, log);
@@ -67,13 +69,13 @@ public void FindsGitDirectory()
6769
var arguments = new Arguments { TargetPath = workDirectory, NoFetch = true };
6870
var options = Options.Create(arguments);
6971

70-
var gitPreparer = new GitPreparer(log, options);
72+
var gitPreparer = new GitPreparer(log, new TestEnvironment(), options);
7173
var configurationProvider = new ConfigProvider(testFileSystem, log, configFileLocator, gitPreparer, configInitWizard);
7274

7375
var baseVersionCalculator = new BaseVersionCalculator(log, null);
7476
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
7577
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
76-
var variableProvider = new VariableProvider(nextVersionCalculator);
78+
var variableProvider = new VariableProvider(nextVersionCalculator, environment);
7779

7880
var gitVersionCalculator = new GitVersionCalculator(testFileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options);
7981

@@ -99,12 +101,12 @@ public void FindsGitDirectoryInParent()
99101
var arguments = new Arguments { TargetPath = childDir, NoFetch = true };
100102
var options = Options.Create(arguments);
101103

102-
var gitPreparer = new GitPreparer(log, options);
104+
var gitPreparer = new GitPreparer(log, environment, options);
103105
var configurationProvider = new ConfigProvider(testFileSystem, log, configFileLocator, gitPreparer, configInitWizard);
104106
var baseVersionCalculator = new BaseVersionCalculator(log, null);
105107
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
106108
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
107-
var variableProvider = new VariableProvider(nextVersionCalculator);
109+
var variableProvider = new VariableProvider(nextVersionCalculator, environment);
108110

109111
var gitVersionCalculator = new GitVersionCalculator(testFileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options);
110112

0 commit comments

Comments
 (0)
Please sign in to comment.