Skip to content

Commit

Permalink
Tests: Recreate RefRepos if reset fails
Browse files Browse the repository at this point in the history
  • Loading branch information
gerhardol committed Feb 13, 2022
1 parent 232207f commit c1fa392
Show file tree
Hide file tree
Showing 20 changed files with 56 additions and 170 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public void OneTimeTearDown()
[SetUp]
public void SetUp()
{
_remoteReferenceRepository ??= new ReferenceRepository();
ReferenceRepository.ResetRepo(ref _remoteReferenceRepository);

// we will be modifying .git/config and need to completely reset each time
_referenceRepository = new ReferenceRepository();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,7 @@ public void OneTimeTearDown()
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}
ReferenceRepository.ResetRepo(ref _referenceRepository);

_commands = new GitUICommands(_referenceRepository.Module);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,10 @@ public class FormCloneTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

[TearDown]
public void TearDown()
{
}

[OneTimeTearDown]
public void OneTimeTearDown()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,7 @@ public class FormCommitTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down Expand Up @@ -228,7 +220,6 @@ public void Should_handle_well_commit_message_in_commit_message_menu()
[Test]
public void Should_stage_only_filtered_on_StageAll()
{
_referenceRepository.Reset();
_referenceRepository.CreateRepoFile("file1A.txt", "Test");
_referenceRepository.CreateRepoFile("file1B.txt", "Test");
_referenceRepository.CreateRepoFile("file2.txt", "Test");
Expand Down Expand Up @@ -272,7 +263,6 @@ public void Should_stage_only_filtered_on_StageAll()
[Test]
public void Should_unstage_only_filtered_on_UnstageAll()
{
_referenceRepository.Reset();
_referenceRepository.CreateRepoFile("file1A-Привет.txt", "Test"); // escaped and not escaped in the same string
_referenceRepository.CreateRepoFile("file1B-두다.txt", "Test"); // escaped octal code points (Korean Hangul in this case)
_referenceRepository.CreateRepoFile("file2.txt", "Test");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,7 @@ public class FormEditorTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
AppSettings.LoadSettings();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,7 @@ public class FormInitTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,7 @@ public void SetUp()
_originalFormPullAction = AppSettings.FormPullAction;
_originalAutoStash = AppSettings.AutoStash;

if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,10 @@ public class FormPushTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

[TearDown]
public void TearDown()
{
}

[OneTimeTearDown]
public void OneTimeTearDown()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,7 @@ public class FormRebaseTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,7 @@ public void OneTimeTearDown()
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
ExportProvider mefExportProvider = TestComposition.Empty.ExportProviderFactory.CreateExportProvider();
ManagedExtensibility.SetTestExportProvider(mefExportProvider);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,7 @@ public void OneTimeTearDown()
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
var composition = TestComposition.Empty
.AddParts(typeof(MockGenericBuildServerAdapter))
.AddParts(typeof(MockGenericBuildServerSettingsUserControl));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,7 @@ public void OneTimeTearDown()
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ public sealed class RunCommandTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
bool first = _referenceRepository is null;
ReferenceRepository.ResetRepo(ref _referenceRepository);

if (first)
{
string cmdPath = (Environment.GetEnvironmentVariable("COMSPEC") ?? "C:/WINDOWS/system32/cmd.exe").ToPosixPath().QuoteNE();
_referenceRepository.Module.GitExecutable.RunCommand($"config --local difftool.cmd.path {cmdPath}").Should().BeTrue();
_referenceRepository.Module.GitExecutable.RunCommand($"config --local mergetool.cmd.path {cmdPath}").Should().BeTrue();
Expand All @@ -41,10 +42,6 @@ public void SetUp()
AppSettings.CloseProcessDialog = true;
AppSettings.UseBrowseForFileHistory.Value = false;
}
else
{
_referenceRepository.Reset();
}

_commands = new GitUICommands(_referenceRepository.Module);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,7 @@ public class ScriptRunnerTests
[SetUp]
public void Setup()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_uiCommands = new GitUICommands(_referenceRepository.Module);

_module = Substitute.For<IGitModule>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,7 @@ public class CommitInfoTests
[SetUp]
public void SetUp()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}

ReferenceRepository.ResetRepo(ref _referenceRepository);
_commands = new GitUICommands(_referenceRepository.Module);

// mock git executable
Expand Down
29 changes: 28 additions & 1 deletion UnitTests/CommonTestUtils/ReferenceRepository.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using GitCommands;
using GitCommands.Config;
using LibGit2Sharp;
Expand All @@ -19,6 +21,31 @@ public ReferenceRepository()
CreateCommit("A commit message", "A");
}

/// <summary>
/// Reset the repo if possible, if it is null or reset throws create a new.
/// </summary>
/// <param name="refRepo">The repo to reset, possibly null.</param>
public static void ResetRepo(ref ReferenceRepository refRepo)
{
if (refRepo is null)
{
refRepo = new ReferenceRepository();
}
else
{
try
{
refRepo.Reset();
}
catch (LibGit2Sharp.LockedFileException)
{
// the index is locked; this might be due to a concurrent or crashed process
refRepo = new ReferenceRepository();
Trace.WriteLine("Repo is locked, creating new");
}
}
}

public GitModule Module => _moduleTestHelper.Module;

public string CommitHash => _commitHash;
Expand Down Expand Up @@ -113,7 +140,7 @@ public void Fetch(string remoteName)
Commands.Fetch(repository, remoteName, Array.Empty<string>(), options, null);
}

public void Reset()
private void Reset()
{
// Undo potential impact from earlier tests
using (LibGit2Sharp.Repository repository = new(Module.WorkingDir))
Expand Down
21 changes: 7 additions & 14 deletions UnitTests/GitCommands.Tests/CommitMessageManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,7 @@ public CommitMessageManagerTests()
[SetUp]
public void Setup()
{
if (_referenceRepository is null)
{
_referenceRepository = new ReferenceRepository();
}
else
{
_referenceRepository.Reset();
}
ReferenceRepository.ResetRepo(ref _referenceRepository);

_file = Substitute.For<FileBase>();
_file.ReadAllText(_commitMessagePath, _encoding).Returns(_commitMessage);
Expand All @@ -71,6 +64,12 @@ public void Setup()
_manager = new CommitMessageManager(_workingDirGitDir, _encoding, _fileSystem, overriddenCommitMessage: null);
}

[TearDown]
public void TearDown()
{
AppSettings.RememberAmendCommitState = _rememberAmendCommitState;
}

[OneTimeTearDown]
public void OneTimeTearDown()
{
Expand All @@ -82,12 +81,6 @@ public void SetupExtra(string overriddenCommitMessage)
_manager = new CommitMessageManager(_workingDirGitDir, _encoding, _fileSystem, overriddenCommitMessage);
}

[TearDown]
public void TearDown()
{
AppSettings.RememberAmendCommitState = _rememberAmendCommitState;
}

[TestCase(null)]
public void Constructor_should_throw(string workingDirGitDir)
{
Expand Down
2 changes: 1 addition & 1 deletion UnitTests/GitCommands.Tests/GitModuleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -776,7 +776,7 @@ public void GetStashesCmd(bool noLocks, string expected)
public void GetTagMessage(string tagMessage, string expectedReturnedMessage)
{
// add initial tag message
ReferenceRepository repo = new();
using ReferenceRepository repo = new();
repo.CreateAnnotatedTag("test_tag", repo.CommitHash, tagMessage);

// execute test look-up
Expand Down
Loading

0 comments on commit c1fa392

Please sign in to comment.