tests(git-provider): Add try .. finally to tests

This commit is contained in:
Scott 2026-09-06 08:38:28 +10:00
commit adb3efc217

View file

@ -23,50 +23,61 @@ public class AddRegistrationTests
public Task BasicRepoRegistration((int testId, string path) testData) public Task BasicRepoRegistration((int testId, string path) testData)
{ {
Settings.UseFileName($"{nameof(BasicRepoRegistration)}_{testData.testId}"); Settings.UseFileName($"{nameof(BasicRepoRegistration)}_{testData.testId}");
var gitManager = GitManager.InternalFreshInstance(nameof(BasicRepoRegistration)); var gitManager = GitManager.InternalFreshInstance(nameof(BasicRepoRegistration));
try
{
var repoRegistration = gitManager.RegisterRepo("Test:/some/test/repo", testData.path); var repoRegistration = gitManager.RegisterRepo("Test:/some/test/repo", testData.path);
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine($"Attempted to register: {testData.path}") sb.AppendLine($"Attempted to register: {testData.path}")
.AppendLine($"Registration result: {repoRegistration}"); .AppendLine($"Registration result: {repoRegistration}");
gitManager.DeleteDatabase();
return Verify(sb, Settings); return Verify(sb, Settings);
} }
finally
{
gitManager.DeleteDatabase();
}
}
[Fact] [Fact]
public void RepoRegistrationWithEmptyName() public void RepoRegistrationWithEmptyName()
{ {
Settings.UseFileName(nameof(RepoRegistrationWithEmptyName)); Settings.UseFileName(nameof(RepoRegistrationWithEmptyName));
var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithEmptyName)); var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithEmptyName));
var testRepoAbsolutePath = "Test:/some/test/repo"; var testRepoAbsolutePath = "Test:/some/test/repo";
try
{
var emptyName = gitManager.RegisterRepo(testRepoAbsolutePath, ""); var emptyName = gitManager.RegisterRepo(testRepoAbsolutePath, "");
gitManager.DeleteDatabase();
Assert.Equal("repo", emptyName); Assert.Equal("repo", emptyName);
} }
finally
{
gitManager.DeleteDatabase();
}
}
[Fact] [Fact]
public void RepoRegistrationWithNullName() public void RepoRegistrationWithNullName()
{ {
Settings.UseFileName(nameof(RepoRegistrationWithNullName)); Settings.UseFileName(nameof(RepoRegistrationWithNullName));
var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithNullName)); var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithNullName));
var testRepoAbsolutePath = "Test:/some/test/repo"; var testRepoAbsolutePath = "Test:/some/test/repo";
try
{
// Name is technically not-nullable, but string is a reference type so null can be passed in so we should test // Name is technically not-nullable, but string is a reference type so null can be passed in so we should test
// it regardless // it regardless
var nullName = gitManager.RegisterRepo(testRepoAbsolutePath, null!); var nullName = gitManager.RegisterRepo(testRepoAbsolutePath, null!);
gitManager.DeleteDatabase();
Assert.Equal("repo", nullName); Assert.Equal("repo", nullName);
} }
finally
{
gitManager.DeleteDatabase();
}
}
[Fact] [Fact]
public void RepoRegistrationWithWhitespaceName() public void RepoRegistrationWithWhitespaceName()
@ -75,24 +86,29 @@ public class AddRegistrationTests
var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName)); var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName));
var testRepoAbsolutePath = "Test:/some/test/repo"; var testRepoAbsolutePath = "Test:/some/test/repo";
try
{
var whitespaceName = gitManager.RegisterRepo(testRepoAbsolutePath, " "); var whitespaceName = gitManager.RegisterRepo(testRepoAbsolutePath, " ");
gitManager.DeleteDatabase();
Assert.Equal("repo", whitespaceName); Assert.Equal("repo", whitespaceName);
} }
finally
{
gitManager.DeleteDatabase();
}
}
[Fact] [Fact]
public void DuplicateRepoRegistrationShouldFail() public void DuplicateRepoRegistrationShouldFail()
{ {
Settings.UseFileName(nameof(RepoRegistrationWithWhitespaceName)); Settings.UseFileName(nameof(RepoRegistrationWithWhitespaceName));
var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName)); var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName));
var testRepoAbsolutePath = "Test:/some/test/repo"; var testRepoAbsolutePath = "Test:/some/test/repo";
string[] paths = ["test", "nested", "path"]; string[] paths = ["test", "nested", "path"];
var names = (NormalSeparator: string.Join(Path.DirectorySeparatorChar, paths), AltSeparator: string.Join(Path.AltDirectorySeparatorChar, paths)); var names = (NormalSeparator: string.Join(Path.DirectorySeparatorChar, paths), AltSeparator: string.Join(Path.AltDirectorySeparatorChar, paths));
try
{
var firstRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.NormalSeparator); var firstRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.NormalSeparator);
// TODO: make nested registrations fail in both directions and test // TODO: make nested registrations fail in both directions and test
var secondRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1])); var secondRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1]));
@ -101,29 +117,36 @@ public class AddRegistrationTests
Assert.Equal(Path.Combine(paths[..1]), secondRegistration); Assert.Equal(Path.Combine(paths[..1]), secondRegistration);
Assert.Throws<Exception>(() => gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1]))); Assert.Throws<Exception>(() => gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1])));
}
finally
{
gitManager.DeleteDatabase(); gitManager.DeleteDatabase();
} }
}
[Fact] [Fact]
public void DuplicateRepoRegistrationDifferentSlashShouldNotFail() public void DuplicateRepoRegistrationDifferentSlashShouldNotFail()
{ {
Settings.UseFileName(nameof(RepoRegistrationWithWhitespaceName)); Settings.UseFileName(nameof(RepoRegistrationWithWhitespaceName));
var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName)); var gitManager = GitManager.InternalFreshInstance(nameof(RepoRegistrationWithWhitespaceName));
var testRepoAbsolutePath = "Test:/some/test/repo"; var testRepoAbsolutePath = "Test:/some/test/repo";
string[] paths = ["test", "nested", "path"]; string[] paths = ["test", "nested", "path"];
var names = (NormalSeparator: string.Join(Path.DirectorySeparatorChar, paths), AltSeparator: string.Join(Path.AltDirectorySeparatorChar, paths)); var names = (NormalSeparator: string.Join(Path.DirectorySeparatorChar, paths), AltSeparator: string.Join(Path.AltDirectorySeparatorChar, paths));
try
{
var firstRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.NormalSeparator); var firstRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.NormalSeparator);
// TODO: make nested registrations fail in both directions and test // TODO: make nested registrations fail in both directions and test
var secondRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1])); var secondRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, Path.Combine(paths[..1]));
var differentPathSeparatorRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.AltSeparator); var differentPathSeparatorRegistration = gitManager.RegisterRepo(testRepoAbsolutePath, names.AltSeparator);
gitManager.DeleteDatabase();
Assert.Equal(Path.Combine(paths), firstRegistration); Assert.Equal(Path.Combine(paths), firstRegistration);
Assert.Equal(Path.Combine(paths[..1]), secondRegistration); Assert.Equal(Path.Combine(paths[..1]), secondRegistration);
Assert.Equal(names.AltSeparator, differentPathSeparatorRegistration); Assert.Equal(names.AltSeparator, differentPathSeparatorRegistration);
} }
finally
{
gitManager.DeleteDatabase();
}
}
} }