Skip to content

Commit a230fd7

Browse files
author
Marcus Markiewicz
committed
Fix CI failures
1 parent 4471485 commit a230fd7

5 files changed

Lines changed: 52 additions & 74 deletions

File tree

Command.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,18 @@ internal virtual void DeleteTempFolder(string tempFolder)
8080
}
8181
}
8282

83-
internal virtual Repository FindRepository()
83+
internal virtual IRepository FindRepository()
8484
{
8585
Repository repo;
8686
try
8787
{
8888
// Traverse up the directory tree to find the Git repository
8989
var repoPath = Repository.Discover(Environment.CurrentDirectory);
90-
if (repoPath == null)
90+
repo = repoPath switch
9191
{
92-
throw new EyePatchException("Not in a Git repository.");
93-
}
94-
95-
repo = new Repository(repoPath);
92+
null => throw new EyePatchException("Not in a Git repository."),
93+
_ => new Repository(repoPath)
94+
};
9695
}
9796
catch (RepositoryNotFoundException e)
9897
{

EyePatch.Tests/DiffTests.cs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using LibGit2Sharp;
22
using Moq;
3+
using System.Reflection;
34

45
namespace EyePatch.Tests
56
{
@@ -140,33 +141,17 @@ public void FilePatchApplier_RemovesAndInsertsBottomLine()
140141

141142
[TestMethod]
142143
public void Diff_ShouldThrowError_WhenNotInGitRepository()
143-
{
144-
Assert.ThrowsException<EyePatchException>(
145-
() =>
146-
{
147-
try
148-
{
149-
var mockSettings = new Mock<Settings>();
150-
151-
new Diff().Execute(mockSettings.Object);
152-
}
153-
catch (EyePatchException ex)
154-
{
155-
Assert.IsInstanceOfType(ex.InnerException, typeof(RepositoryNotFoundException));
156-
throw;
157-
}
158-
});
159-
}
160-
161-
[TestMethod]
162-
public void Diff_ShouldThrowError_WhenPatchFileNotFound()
163144
{
164145
Assert.ThrowsException<EyePatchException>(
165146
() =>
166147
{
167148
var mockSettings = new Mock<Settings>();
168149

169-
new Diff().Execute(mockSettings.Object);
150+
var mockDiff = new Mock<Diff> { CallBase = true };
151+
mockDiff.Setup(d => d.FindRepository())
152+
.Throws(new EyePatchException("Not in a Git repository.", new RepositoryNotFoundException()));
153+
154+
mockDiff.Object.Execute(mockSettings.Object);
170155
});
171156
}
172157

EyePatch.Tests/SaveTests.cs

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,13 @@ public void Save_ShouldWriteError_WhenNotInGitRepository()
1212
Assert.ThrowsException<EyePatchException>(
1313
() =>
1414
{
15-
try
16-
{
17-
var mockSettings = new Mock<Settings>();
18-
19-
new Save().Execute(mockSettings.Object, "test.patch");
20-
}
21-
catch (EyePatchException ex)
22-
{
23-
Assert.IsInstanceOfType(ex.InnerException, typeof(RepositoryNotFoundException));
24-
throw;
25-
}
15+
var mockSettings = new Mock<Settings>();
16+
17+
var saveDiff = new Mock<Save> { CallBase = true };
18+
saveDiff.Setup(d => d.FindRepository())
19+
.Throws(new EyePatchException("Not in a Git repository.", new RepositoryNotFoundException()));
20+
21+
saveDiff.Object.Execute(mockSettings.Object, "test.patch");
2622
});
2723
}
2824

@@ -32,20 +28,21 @@ public void Save_ShouldWriteError_WhenParentCommitNotFound()
3228
Assert.ThrowsException<EyePatchException>(
3329
() =>
3430
{
35-
try
36-
{
37-
var mockSettings = new Mock<Settings>();
38-
39-
var mockRepository = new Mock<IRepository>();
40-
mockRepository.Setup(r => r.Branches["origin/main"].Tip).Returns((Commit)null!);
41-
42-
new Save().Execute(mockSettings.Object, "test.patch");
43-
}
44-
catch (EyePatchException ex)
45-
{
46-
Assert.IsInstanceOfType(ex.InnerException, typeof(RepositoryNotFoundException));
47-
throw;
48-
}
31+
var mockSettings = new Mock<Settings>();
32+
33+
var mockBranch = new Mock<Branch>();
34+
35+
var mockRepository = new Mock<IRepository>();
36+
mockRepository.Setup(r => r.Branches["origin/main"].Tip).Returns((Commit)null!);
37+
mockRepository.Setup(r => r.Head).Returns(mockBranch.Object);
38+
mockRepository.Setup(r => r.ObjectDatabase.FindMergeBase(It.IsAny<Commit>(), It.IsAny<Commit>()))
39+
.Returns((Commit)null);
40+
41+
var saveDiff = new Mock<Save> { CallBase = true };
42+
saveDiff.Setup(d => d.FindRepository())
43+
.Returns(mockRepository.Object);
44+
45+
saveDiff.Object.Execute(mockSettings.Object, "test.patch");
4946
});
5047
}
5148

EyePatch.Tests/StatusTests.cs

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,13 @@ public void Status_ShouldWriteError_WhenNotInGitRepository()
1212
Assert.ThrowsException<EyePatchException>(
1313
() =>
1414
{
15-
try
16-
{
17-
var mockSettings = new Mock<Settings>();
15+
var mockSettings = new Mock<Settings>();
1816

19-
new Status().Execute(mockSettings.Object);
20-
}
21-
catch (EyePatchException ex)
22-
{
23-
Assert.IsInstanceOfType(ex.InnerException, typeof(RepositoryNotFoundException));
24-
throw;
25-
}
17+
var mockStatus = new Mock<Status> { CallBase = true };
18+
mockStatus.Setup(d => d.FindRepository())
19+
.Throws(new EyePatchException("Not in a Git repository.", new RepositoryNotFoundException()));
20+
21+
mockStatus.Object.Execute(mockSettings.Object);
2622
});
2723
}
2824

@@ -32,20 +28,16 @@ public void Status_ShouldWriteError_WhenMain()
3228
Assert.ThrowsException<EyePatchException>(
3329
() =>
3430
{
35-
try
36-
{
37-
var mockSettings = new Mock<Settings>();
31+
var mockSettings = new Mock<Settings>();
32+
33+
var mockRepository = new Mock<IRepository>();
34+
mockRepository.Setup(r => r.Branches["origin/main"].Tip).Returns((Commit)null!);
3835

39-
var mockRepository = new Mock<IRepository>();
40-
mockRepository.Setup(r => r.Branches["origin/main"].Tip).Returns((Commit)null!);
36+
var mockStatus = new Mock<Status> { CallBase = true };
37+
mockStatus.Setup(d => d.FindRepository())
38+
.Returns(mockRepository.Object);
4139

42-
new Status().Execute(mockSettings.Object, "test.patch");
43-
}
44-
catch (EyePatchException ex)
45-
{
46-
Assert.IsInstanceOfType(ex.InnerException, typeof(RepositoryNotFoundException));
47-
throw;
48-
}
40+
mockStatus.Object.Execute(mockSettings.Object, "test.patch");
4941
});
5042
}
5143
}

Status.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ internal void ExecuteWithRepo(Settings settings, IRepository repo)
1818
IncludeIgnored = false,
1919
IncludeUnaltered = false
2020
};
21+
2122
var repoStatus = repo.RetrieveStatus(statusOptions);
23+
if (repoStatus == null)
24+
{
25+
throw new EyePatchException("No status on repo");
26+
}
2227

2328
TreeChanges? remoteChanges = null;
2429
var mainBranch = repo.Branches["main"];

0 commit comments

Comments
 (0)