Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e9a8194
build(deps): bump actions/setup-dotnet from 4.0.0 to 4.0.1
dependabot[bot] Jul 9, 2024
5ea56d6
homebrew: remove no longer needed workflow
mjcheetham Jul 10, 2024
85d9ee3
homebrew: remove no longer needed workflow (#1659)
mjcheetham Jul 11, 2024
7886272
docs: update generic-oauth.md
eltociear Jul 17, 2024
38df606
docs: update generic-oauth.md (#1664)
Jul 17, 2024
62b9c3d
Add method for sending X5C
Jul 17, 2024
ece4379
Debugging updates
Jul 18, 2024
52c1be9
Revert version change
Jul 18, 2024
55d6262
Apply code review feedback to use more appropriate helper functions i…
Jul 19, 2024
ab05752
Update configuration and environment documentation to document the ne…
Jul 19, 2024
1d06bd5
Add support for sending X5C when using a service principal with certi…
Jul 19, 2024
650f296
build(deps): bump azure/trusted-signing-action from 0.3.20 to 0.4.0
dependabot[bot] Jul 22, 2024
ecfd27c
build(deps): bump azure/trusted-signing-action from 0.3.20 to 0.4.0 (…
migue Jul 24, 2024
986b0d5
build(deps): bump actions/setup-dotnet from 4.0.0 to 4.0.1 (#1658)
migue Jul 24, 2024
e388474
Update SECURITY.md
jeffreyguerra Aug 27, 2024
415adfe
Update SECURITY.md (#1697)
Aug 28, 2024
71b5d06
Make GPG Pass store path configurable by git config
ipitsyn Sep 4, 2024
0b3d846
Changes according to PR review
ipitsyn Sep 9, 2024
4e8e593
Make GPG Pass store path configurable by git config (#1698)
Sep 30, 2024
4a460b4
Fix build in Visual Studio
dscho Sep 30, 2024
a59af02
Update the InnoSetup dependency to v6.3.1
dscho Sep 30, 2024
c6d28d3
installer: do require Windows 7 SP1 or later
dscho Sep 30, 2024
5441da0
installer: avoid using the deprecated `ParseVersion()` function
dscho Sep 30, 2024
cf935a7
installer: avoid running the `UninstallRun` entry more than once
dscho Sep 30, 2024
a749c92
Update the remaining dependencies
dscho Sep 30, 2024
6f13e76
Properly await `Assert.ThrowsAsync()` calls
dscho Sep 30, 2024
da12fc9
Use `Assert.Fail(message)` as appropriate
dscho Sep 30, 2024
48d06a7
Use preferred `Assert.*` patterns
dscho Sep 30, 2024
8bfe765
Use the `Trace2Exception`
dscho Sep 30, 2024
1a774c1
Replace broken `PlatformFact()` constructs
dscho Sep 30, 2024
f4b50c4
Fix the build in Visual Studio (#1711)
Sep 30, 2024
c16a9b7
VERSION: bump version to 2.6.0
mjcheetham Sep 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

<ItemGroup Condition = "'$(TargetFramework)' == 'net472'">
<PackageReference Include="System.Text.Json">
<Version>7.0.2</Version>
<Version>8.0.4</Version>
</PackageReference>
</ItemGroup>

Expand Down
3 changes: 2 additions & 1 deletion Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<Import Project="$(RepoPath)build\GCM.tasks" />

<!-- Use version specified in VERSION file -->
<Target Name="GetVersion" BeforeTargets="BeforeBuild">
<Target Name="GetVersion" BeforeTargets="BeforeBuild;GenerateWindowsAppManifest">
<GetVersion VersionFile="$(RepoPath)VERSION">
<Output TaskParameter="Version" PropertyName="Version" />
<Output TaskParameter="AssemblyVersion" PropertyName="AssemblyVersion" />
Expand All @@ -21,6 +21,7 @@

<!-- Generate the manifest file before we set the win32 manifest properties -->
<Target Name="GenerateWindowsAppManifest"
AfterTargets="GetVersion"
BeforeTargets="SetWin32ManifestProperties"
Condition="'$(GenerateWindowsAppManifest)' != 'false'"
Inputs="$(FileVersion);$(AssemblyName)"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="3.1.0">
<PackageReference Include="coverlet.collector" Version="6.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="ReportGenerator" Version="5.1.9" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="ReportGenerator" Version="5.3.10" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/shared/Core.Tests/ApplicationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ public async Task Application_UnconfigureAsync_EmptyAndGcmWithOthersBefore_Remov

Assert.Single(context.Git.Configuration.Global);
Assert.True(context.Git.Configuration.Global.TryGetValue(key, out var actualValues));
Assert.Equal(1, actualValues.Count);
Assert.Single(actualValues);
Assert.Equal(beforeHelper, actualValues[0]);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ namespace GitCredentialManager.Tests.Authentication
public class BasicAuthenticationTests
{
[Fact]
public void BasicAuthentication_GetCredentials_NullResource_ThrowsException()
public async Task BasicAuthentication_GetCredentials_NullResource_ThrowsException()
{
var context = new TestCommandContext();
var basicAuth = new BasicAuthentication(context);

Assert.ThrowsAsync<ArgumentNullException>(() => basicAuth.GetCredentialsAsync(null));
await Assert.ThrowsAsync<ArgumentNullException>(() => basicAuth.GetCredentialsAsync(null));
}

[Fact]
Expand Down Expand Up @@ -58,7 +58,7 @@ public async Task BasicAuthentication_GetCredentials_NonDesktopSession_Resource_
}

[Fact]
public void BasicAuthentication_GetCredentials_NonDesktopSession_NoTerminalPrompts_ThrowsException()
public async Task BasicAuthentication_GetCredentials_NonDesktopSession_NoTerminalPrompts_ThrowsException()
{
const string testResource = "https://example.com";

Expand All @@ -70,7 +70,7 @@ public void BasicAuthentication_GetCredentials_NonDesktopSession_NoTerminalPromp

var basicAuth = new BasicAuthentication(context);

Assert.ThrowsAsync<InvalidOperationException>(() => basicAuth.GetCredentialsAsync(testResource));
await Assert.ThrowsAsync<GitCredentialManager.Trace2InvalidOperationException>(() => basicAuth.GetCredentialsAsync(testResource));
}

[Fact]
Expand Down
11 changes: 7 additions & 4 deletions src/shared/Core.Tests/Core.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="3.1.0">
<PackageReference Include="coverlet.collector" Version="6.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="ReportGenerator" Version="5.1.9" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="ReportGenerator" Version="5.3.10" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/shared/Core.Tests/CurlCookieTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public void CurlCookieParser_Parse_MissingFields_SkipsInvalidLines()

IList<Cookie> actual = parser.Parse(content);

Assert.Equal(1, actual.Count);
Assert.Single(actual);
AssertCookie(actual[0], ".example.com", "/path/here", true, 0, "cookie1", "value1");
}

Expand Down
22 changes: 11 additions & 11 deletions src/shared/Core.Tests/EnvironmentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class EnvironmentTests
private const string PosixPathVar = "/home/john.doe/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin";
private const string PosixExecName = "foo";

[PlatformFact(Platforms.Windows)]
[WindowsFact]
public void WindowsEnvironment_TryLocateExecutable_NotExists_ReturnFalse()
{
var fs = new TestFileSystem();
Expand All @@ -28,7 +28,7 @@ public void WindowsEnvironment_TryLocateExecutable_NotExists_ReturnFalse()
Assert.Null(actualPath);
}

[PlatformFact(Platforms.Windows)]
[WindowsFact]
public void WindowsEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath()
{
string expectedPath = @"C:\Windows\system32\foo.exe";
Expand All @@ -48,7 +48,7 @@ public void WindowsEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath()
Assert.Equal(expectedPath, actualPath);
}

[PlatformFact(Platforms.Windows)]
[WindowsFact]
public void WindowsEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndFirstPath()
{
string expectedPath = @"C:\Users\john.doe\bin\foo.exe";
Expand All @@ -70,7 +70,7 @@ public void WindowsEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndF
Assert.Equal(expectedPath, actualPath);
}

[PlatformFact(Platforms.Posix)]
[PosixFact]
public void PosixEnvironment_TryLocateExecutable_NotExists_ReturnFalse()
{
var fs = new TestFileSystem();
Expand All @@ -83,7 +83,7 @@ public void PosixEnvironment_TryLocateExecutable_NotExists_ReturnFalse()
Assert.Null(actualPath);
}

[PlatformFact(Platforms.Posix)]
[PosixFact]
public void PosixEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath()
{
string expectedPath = "/usr/local/bin/foo";
Expand All @@ -103,7 +103,7 @@ public void PosixEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath()
Assert.Equal(expectedPath, actualPath);
}

[PlatformFact(Platforms.Posix)]
[PosixFact]
public void PosixEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndFirstPath()
{
string expectedPath = "/home/john.doe/bin/foo";
Expand All @@ -125,7 +125,7 @@ public void PosixEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndFir
Assert.Equal(expectedPath, actualPath);
}

[PlatformFact(Platforms.MacOS)]
[MacOSFact]
public void MacOSEnvironment_TryLocateExecutable_Paths_Are_Ignored()
{
List<string> pathsToIgnore = new List<string>()
Expand All @@ -150,8 +150,8 @@ public void MacOSEnvironment_TryLocateExecutable_Paths_Are_Ignored()
Assert.True(actualResult);
Assert.Equal(expectedPath, actualPath);
}
[PlatformFact(Platforms.Posix)]

[PosixFact]
public void PosixEnvironment_SetEnvironmentVariable_Sets_Expected_Value()
{
var variable = "FOO_BAR";
Expand All @@ -166,8 +166,8 @@ public void PosixEnvironment_SetEnvironmentVariable_Sets_Expected_Value()
Assert.Contains(env.Variables, item
=> item.Key.Equals(variable) && item.Value.Equals(value));
}
[PlatformFact(Platforms.Windows)]

[WindowsFact]
public void WindowsEnvironment_SetEnvironmentVariable_Sets_Expected_Value()
{
var variable = "FOO_BAR";
Expand Down
4 changes: 2 additions & 2 deletions src/shared/Core.Tests/GenericHostProviderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,13 @@ public async Task GenericHostProvider_CreateCredentialAsync_NonHttpProtocol_Retu
basicAuthMock.Verify(x => x.GetCredentialsAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
}

[PlatformFact(Platforms.Posix)]
[PosixFact]
public async Task GenericHostProvider_CreateCredentialAsync_NonWindows_WiaSupported_ReturnsBasicCredential()
{
await TestCreateCredentialAsync_ReturnsBasicCredential(wiaSupported: true);
}

[PlatformFact(Platforms.Windows)]
[WindowsFact]
public async Task GenericHostProvider_CreateCredentialAsync_Windows_WiaSupported_ReturnsEmptyCredential()
{
await TestCreateCredentialAsync_ReturnsEmptyCredential(wiaSupported: true);
Expand Down
8 changes: 4 additions & 4 deletions src/shared/Core.Tests/HostProviderRegistryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ public void HostProviderRegistry_Register_AutoAuthorityId_ThrowException()
}

[Fact]
public void HostProviderRegistry_GetProvider_NoProviders_ThrowException()
public async Task HostProviderRegistry_GetProvider_NoProviders_ThrowException()
{
var context = new TestCommandContext();
var registry = new HostProviderRegistry(context);
var input = new InputArguments(new Dictionary<string, string>());

Assert.ThrowsAsync<Exception>(() => registry.GetProviderAsync(input));
await Assert.ThrowsAsync<GitCredentialManager.Trace2Exception>(() => registry.GetProviderAsync(input));
}

[Fact]
Expand Down Expand Up @@ -119,7 +119,7 @@ public async Task HostProviderRegistry_GetProvider_Auto_HasProviders_DynamicMatc

Assert.Same(providerMock.Object, result);
Assert.True(context.Git.Configuration.Global.TryGetValue(configKey, out IList<string> config));
Assert.Equal(1, config.Count);
Assert.Single(config);
Assert.Equal(providerId, config[0]);
}

Expand Down Expand Up @@ -148,7 +148,7 @@ public async Task HostProviderRegistry_GetProvider_Auto_HasProviders_DynamicMatc

Assert.Same(providerMock.Object, result);
Assert.True(context.Git.Configuration.Global.TryGetValue(configKey, out IList<string> config));
Assert.Equal(1, config.Count);
Assert.Single(config);
Assert.Equal(providerId, config[0]);
}

Expand Down
2 changes: 1 addition & 1 deletion src/shared/Core.Tests/HostProviderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public async Task HostProvider_GetCredentialAsync_CredentialExists_ReturnsExisti
IsSupportedFunc = _ => true,
GenerateCredentialFunc = _ =>
{
Assert.True(false, "Should never be called");
Assert.Fail("Should never be called");
return null;
},
};
Expand Down
6 changes: 3 additions & 3 deletions src/shared/Core.Tests/IniFileTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ recovery tests]
Assert.Equal(6, ini.Sections.Count);

AssertSection(ini, "one", out IniSection one);
Assert.Equal(1, one.Properties.Count);
Assert.Single(one.Properties);
AssertProperty(one, "foo", "123");

AssertSection(ini, "two", out IniSection twoA);
Expand All @@ -88,7 +88,7 @@ recovery tests]
AssertProperty(twoA, "widget", "Hello, World!");

AssertSection(ini, "two", "subsection name", out IniSection twoB);
Assert.Equal(1, twoB.Properties.Count);
Assert.Single(twoB.Properties);
AssertProperty(twoB, "foo", "this is different");

AssertSection(ini, "three", out IniSection three);
Expand All @@ -97,7 +97,7 @@ recovery tests]
AssertProperty(three, "empty", "");

AssertSection(ini, "four", out IniSection four);
Assert.Equal(0, four.Properties.Count);
Assert.Empty(four.Properties);

AssertSection(ini, "five", out IniSection five);
Assert.Equal(3, five.Properties.Count);
Expand Down
12 changes: 6 additions & 6 deletions src/shared/Core.Tests/Interop/Linux/LinuxFileSystemTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace GitCredentialManager.Tests.Interop.Linux
{
public class LinuxFileSystemTests
{
[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_SamePath_ReturnsTrue()
{
var fs = new LinuxFileSystem();
Expand All @@ -18,7 +18,7 @@ public static void LinuxFileSystem_IsSamePath_SamePath_ReturnsTrue()
Assert.True(fs.IsSamePath(fileA, fileA));
}

[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_DifferentFile_ReturnsFalse()
{
var fs = new LinuxFileSystem();
Expand All @@ -31,7 +31,7 @@ public static void LinuxFileSystem_IsSamePath_DifferentFile_ReturnsFalse()
Assert.False(fs.IsSamePath(fileB, fileA));
}

[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_SameFileDifferentCase_ReturnsFalse()
{
var fs = new LinuxFileSystem();
Expand All @@ -44,7 +44,7 @@ public static void LinuxFileSystem_IsSamePath_SameFileDifferentCase_ReturnsFalse
Assert.False(fs.IsSamePath(fileA2, fileA1));
}

[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_SameFileDifferentPathNormalization_ReturnsTrue()
{
var fs = new LinuxFileSystem();
Expand All @@ -58,7 +58,7 @@ public static void LinuxFileSystem_IsSamePath_SameFileDifferentPathNormalization
Assert.True(fs.IsSamePath(fileA2, fileA1));
}

[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_SameFileViaSymlink_ReturnsTrue()
{
var fs = new LinuxFileSystem();
Expand All @@ -71,7 +71,7 @@ public static void LinuxFileSystem_IsSamePath_SameFileViaSymlink_ReturnsTrue()
Assert.True(fs.IsSamePath(fileA2, fileA1));
}

[PlatformFact(Platforms.Linux)]
[LinuxFact]
public static void LinuxFileSystem_IsSamePath_SameFileRelativePath_ReturnsTrue()
{
var fs = new LinuxFileSystem();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class SecretServiceCollectionTests
{
private const string TestNamespace = "git-test";

[PlatformFact(Platforms.Linux, Skip = "Cannot run headless")]
[LinuxFact(Skip = "Cannot run headless")]
public void SecretServiceCollection_ReadWriteDelete()
{
var collection = new SecretServiceCollection(TestNamespace);
Expand Down Expand Up @@ -37,7 +37,7 @@ public void SecretServiceCollection_ReadWriteDelete()
}
}

[PlatformFact(Platforms.Linux, Skip = "Cannot run headless")]
[LinuxFact(Skip = "Cannot run headless")]
public void SecretServiceCollection_Get_NotFound_ReturnsNull()
{
var collection = new SecretServiceCollection(TestNamespace);
Expand All @@ -49,7 +49,7 @@ public void SecretServiceCollection_Get_NotFound_ReturnsNull()
Assert.Null(credential);
}

[PlatformFact(Platforms.Linux, Skip = "Cannot run headless")]
[LinuxFact(Skip = "Cannot run headless")]
public void SecretServiceCollection_Remove_NotFound_ReturnsFalse()
{
var collection = new SecretServiceCollection(TestNamespace);
Expand Down
Loading
Loading