mirror of
				https://github.com/Tyrrrz/CliFx.git
				synced 2025-10-25 15:19:17 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			cfbd8f9e76
			...
			078ddeaf07
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 078ddeaf07 | ||
|  | c79a8c6502 | 
| @@ -9,15 +9,15 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Basic.Reference.Assemblies.Net80" Version="1.7.9" /> |     <PackageReference Include="Basic.Reference.Assemblies.Net80" Version="1.8.0" /> | ||||||
|     <PackageReference Include="coverlet.collector" Version="6.0.3" PrivateAssets="all" /> |     <PackageReference Include="coverlet.collector" Version="6.0.4" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="GitHubActionsTestLogger" Version="2.4.1" PrivateAssets="all" /> |     <PackageReference Include="GitHubActionsTestLogger" Version="2.4.1" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="FluentAssertions" Version="7.0.0" /> |     <PackageReference Include="FluentAssertions" Version="8.0.1" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> | ||||||
|     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" /> |     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.9.2" /> |     <PackageReference Include="xunit" Version="2.9.3" /> | ||||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="3.0.0" PrivateAssets="all" /> |     <PackageReference Include="xunit.runner.visualstudio" Version="3.0.1" PrivateAssets="all" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   | |||||||
| @@ -13,9 +13,11 @@ using Microsoft.CodeAnalysis.Text; | |||||||
|  |  | ||||||
| namespace CliFx.Analyzers.Tests.Utils; | namespace CliFx.Analyzers.Tests.Utils; | ||||||
|  |  | ||||||
| internal class AnalyzerAssertions(DiagnosticAnalyzer analyzer) | internal class AnalyzerAssertions(DiagnosticAnalyzer analyzer, AssertionChain assertionChain) | ||||||
|     : ReferenceTypeAssertions<DiagnosticAnalyzer, AnalyzerAssertions>(analyzer) |     : ReferenceTypeAssertions<DiagnosticAnalyzer, AnalyzerAssertions>(analyzer, assertionChain) | ||||||
| { | { | ||||||
|  |     private readonly AssertionChain _assertionChain = assertionChain; | ||||||
|  |  | ||||||
|     protected override string Identifier => "analyzer"; |     protected override string Identifier => "analyzer"; | ||||||
|  |  | ||||||
|     private Compilation Compile(string sourceCode) |     private Compilation Compile(string sourceCode) | ||||||
| @@ -102,8 +104,8 @@ internal class AnalyzerAssertions(DiagnosticAnalyzer analyzer) | |||||||
|             expectedDiagnosticIds.Intersect(producedDiagnosticIds).Count() |             expectedDiagnosticIds.Intersect(producedDiagnosticIds).Count() | ||||||
|             == expectedDiagnosticIds.Length; |             == expectedDiagnosticIds.Length; | ||||||
|  |  | ||||||
|         Execute |         _assertionChain | ||||||
|             .Assertion.ForCondition(isSuccessfulAssertion) |             .ForCondition(isSuccessfulAssertion) | ||||||
|             .FailWith(() => |             .FailWith(() => | ||||||
|             { |             { | ||||||
|                 var buffer = new StringBuilder(); |                 var buffer = new StringBuilder(); | ||||||
| @@ -146,8 +148,8 @@ internal class AnalyzerAssertions(DiagnosticAnalyzer analyzer) | |||||||
|         var producedDiagnostics = GetProducedDiagnostics(sourceCode); |         var producedDiagnostics = GetProducedDiagnostics(sourceCode); | ||||||
|         var isSuccessfulAssertion = !producedDiagnostics.Any(); |         var isSuccessfulAssertion = !producedDiagnostics.Any(); | ||||||
|  |  | ||||||
|         Execute |         _assertionChain | ||||||
|             .Assertion.ForCondition(isSuccessfulAssertion) |             .ForCondition(isSuccessfulAssertion) | ||||||
|             .FailWith(() => |             .FailWith(() => | ||||||
|             { |             { | ||||||
|                 var buffer = new StringBuilder(); |                 var buffer = new StringBuilder(); | ||||||
| @@ -170,5 +172,6 @@ internal class AnalyzerAssertions(DiagnosticAnalyzer analyzer) | |||||||
|  |  | ||||||
| internal static class AnalyzerAssertionsExtensions | internal static class AnalyzerAssertionsExtensions | ||||||
| { | { | ||||||
|     public static AnalyzerAssertions Should(this DiagnosticAnalyzer analyzer) => new(analyzer); |     public static AnalyzerAssertions Should(this DiagnosticAnalyzer analyzer) => | ||||||
|  |         new(analyzer, AssertionChain.GetOrCreate()); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <!-- Make sure to target the lowest possible version of the compiler for wider support --> |     <!-- Make sure to target the lowest possible version of the compiler for wider support --> | ||||||
|     <PackageReference Include="Microsoft.CodeAnalysis" Version="3.0.0" PrivateAssets="all" /> |     <PackageReference Include="Microsoft.CodeAnalysis" Version="3.0.0" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.0.0" PrivateAssets="all" /> |     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.0.0" PrivateAssets="all" /> | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ | |||||||
|     <PackageReference Include="clipr" Version="1.6.1" /> |     <PackageReference Include="clipr" Version="1.6.1" /> | ||||||
|     <PackageReference Include="Cocona" Version="2.2.0" /> |     <PackageReference Include="Cocona" Version="2.2.0" /> | ||||||
|     <PackageReference Include="CommandLineParser" Version="2.9.1" /> |     <PackageReference Include="CommandLineParser" Version="2.9.1" /> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="4.1.1" /> |     <PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="4.1.1" /> | ||||||
|     <PackageReference Include="PowerArgs" Version="4.0.3" /> |     <PackageReference Include="PowerArgs" Version="4.0.3" /> | ||||||
|     <PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" /> |     <PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" /> | ||||||
|   | |||||||
| @@ -7,8 +7,8 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" /> |     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.1" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   | |||||||
| @@ -9,18 +9,18 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Basic.Reference.Assemblies.Net80" Version="1.7.9" /> |     <PackageReference Include="Basic.Reference.Assemblies.Net80" Version="1.8.0" /> | ||||||
|     <PackageReference Include="CliWrap" Version="3.7.0" /> |     <PackageReference Include="CliWrap" Version="3.7.1" /> | ||||||
|     <PackageReference Include="coverlet.collector" Version="6.0.3" PrivateAssets="all" /> |     <PackageReference Include="coverlet.collector" Version="6.0.4" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="FluentAssertions" Version="7.0.0" /> |     <PackageReference Include="FluentAssertions" Version="8.0.1" /> | ||||||
|     <PackageReference Include="GitHubActionsTestLogger" Version="2.4.1" PrivateAssets="all" /> |     <PackageReference Include="GitHubActionsTestLogger" Version="2.4.1" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" /> |     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" /> |     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.1" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> | ||||||
|     <PackageReference Include="PolyShim" Version="1.14.0" PrivateAssets="all" /> |     <PackageReference Include="PolyShim" Version="1.14.0" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="xunit" Version="2.9.2" /> |     <PackageReference Include="xunit" Version="2.9.3" /> | ||||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="3.0.0" PrivateAssets="all" /> |     <PackageReference Include="xunit.runner.visualstudio" Version="3.0.1" PrivateAssets="all" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using FluentAssertions; | using FluentAssertions; | ||||||
| using FluentAssertions.Execution; |  | ||||||
| using FluentAssertions.Primitives; | using FluentAssertions.Primitives; | ||||||
|  |  | ||||||
| namespace CliFx.Tests.Utils.Extensions; | namespace CliFx.Tests.Utils.Extensions; | ||||||
| @@ -13,7 +12,7 @@ internal static class AssertionExtensions | |||||||
|         params IEnumerable<string> lines |         params IEnumerable<string> lines | ||||||
|     ) => |     ) => | ||||||
|         assertions |         assertions | ||||||
|             .Subject.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) |             .Subject.Split(['\n', '\r'], StringSplitOptions.RemoveEmptyEntries) | ||||||
|             .Should() |             .Should() | ||||||
|             .Equal(lines); |             .Equal(lines); | ||||||
|  |  | ||||||
| @@ -30,7 +29,7 @@ internal static class AssertionExtensions | |||||||
|  |  | ||||||
|             if (index < 0) |             if (index < 0) | ||||||
|             { |             { | ||||||
|                 Execute.Assertion.FailWith( |                 assertions.CurrentAssertionChain.FailWith( | ||||||
|                     $"Expected string '{assertions.Subject}' to contain '{value}' after position {lastIndex}." |                     $"Expected string '{assertions.Subject}' to contain '{value}' after position {lastIndex}." | ||||||
|                 ); |                 ); | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="CSharpier.MsBuild" Version="0.30.4" PrivateAssets="all" /> |     <PackageReference Include="CSharpier.MsBuild" Version="0.30.6" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="all" /> |     <PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="PolyShim" Version="1.14.0" PrivateAssets="all" /> |     <PackageReference Include="PolyShim" Version="1.14.0" PrivateAssets="all" /> | ||||||
|     <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.6.0" Condition="'$(TargetFramework)' == 'netstandard2.0'" /> |     <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.6.0" Condition="'$(TargetFramework)' == 'netstandard2.0'" /> | ||||||
|   | |||||||
| @@ -6,12 +6,11 @@ namespace CliFx.Utils; | |||||||
|  |  | ||||||
| internal static class EnvironmentEx | internal static class EnvironmentEx | ||||||
| { | { | ||||||
|     private static readonly Lazy<string?> ProcessPathLazy = |     private static readonly Lazy<string?> ProcessPathLazy = new(() => | ||||||
|         new(() => |     { | ||||||
|         { |         using var process = Process.GetCurrentProcess(); | ||||||
|             using var process = Process.GetCurrentProcess(); |         return process.MainModule?.FileName; | ||||||
|             return process.MainModule?.FileName; |     }); | ||||||
|         }); |  | ||||||
|  |  | ||||||
|     public static string? ProcessPath => ProcessPathLazy.Value; |     public static string? ProcessPath => ProcessPathLazy.Value; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -38,43 +38,42 @@ internal partial class StackFrame | |||||||
|     private const string NotSpace = @"[^\x20\t]"; |     private const string NotSpace = @"[^\x20\t]"; | ||||||
|  |  | ||||||
|     // Taken from https://github.com/atifaziz/StackTraceParser |     // Taken from https://github.com/atifaziz/StackTraceParser | ||||||
|     private static readonly Regex Pattern = |     private static readonly Regex Pattern = new( | ||||||
|         new( |         $$""" | ||||||
|             $$""" |         ^ | ||||||
|             ^ |         {{Space}}* | ||||||
|             {{Space}}* |         \w+ {{Space}}+ | ||||||
|             \w+ {{Space}}+ |         (?<frame> | ||||||
|             (?<frame> |             (?<type> {{NotSpace}}+ ) \. | ||||||
|                 (?<type> {{NotSpace}}+ ) \. |             (?<method> {{NotSpace}}+? ) {{Space}}* | ||||||
|                 (?<method> {{NotSpace}}+? ) {{Space}}* |             (?<params>  \( ( {{Space}}* \) | ||||||
|                 (?<params>  \( ( {{Space}}* \) |                            |                    (?<pt> .+?) {{Space}}+ (?<pn> .+?) | ||||||
|                                |                    (?<pt> .+?) {{Space}}+ (?<pn> .+?) |                              (, {{Space}}* (?<pt> .+?) {{Space}}+ (?<pn> .+?) )* \) ) ) | ||||||
|                                  (, {{Space}}* (?<pt> .+?) {{Space}}+ (?<pn> .+?) )* \) ) ) |             ( {{Space}}+ | ||||||
|                 ( {{Space}}+ |                 ( # Microsoft .NET stack traces | ||||||
|                     ( # Microsoft .NET stack traces |                 \w+ {{Space}}+ | ||||||
|                     \w+ {{Space}}+ |                 (?<file> ( [a-z] \: # Windows rooted path starting with a drive letter | ||||||
|                     (?<file> ( [a-z] \: # Windows rooted path starting with a drive letter |                          | / )      # Unix rooted path starting with a forward-slash | ||||||
|                              | / )      # Unix rooted path starting with a forward-slash |                          .+? ) | ||||||
|                              .+? ) |                 \: \w+ {{Space}}+ | ||||||
|                     \: \w+ {{Space}}+ |                 (?<line> [0-9]+ ) \p{P}? | ||||||
|                     (?<line> [0-9]+ ) \p{P}? |                 | # Mono stack traces | ||||||
|                     | # Mono stack traces |                 \[0x[0-9a-f]+\] {{Space}}+ \w+ {{Space}}+ | ||||||
|                     \[0x[0-9a-f]+\] {{Space}}+ \w+ {{Space}}+ |                 <(?<file> [^>]+ )> | ||||||
|                     <(?<file> [^>]+ )> |                 :(?<line> [0-9]+ ) | ||||||
|                     :(?<line> [0-9]+ ) |                 ) | ||||||
|                     ) |             )? | ||||||
|                 )? |         ) | ||||||
|             ) |         \s* | ||||||
|             \s* |         $ | ||||||
|             $ |         """, | ||||||
|             """, |         RegexOptions.IgnoreCase | ||||||
|             RegexOptions.IgnoreCase |             | RegexOptions.Multiline | ||||||
|                 | RegexOptions.Multiline |             | RegexOptions.ExplicitCapture | ||||||
|                 | RegexOptions.ExplicitCapture |             | RegexOptions.CultureInvariant | ||||||
|                 | RegexOptions.CultureInvariant |             | RegexOptions.IgnorePatternWhitespace, | ||||||
|                 | RegexOptions.IgnorePatternWhitespace, |         TimeSpan.FromSeconds(5) | ||||||
|             TimeSpan.FromSeconds(5) |     ); | ||||||
|         ); |  | ||||||
|  |  | ||||||
|     public static IEnumerable<StackFrame> ParseTrace(string stackTrace) |     public static IEnumerable<StackFrame> ParseTrace(string stackTrace) | ||||||
|     { |     { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user