Skip to content

Commit

Permalink
[GH-139] - test infrastructure cleanup (#140)
Browse files Browse the repository at this point in the history
  • Loading branch information
tpodolak authored Mar 15, 2020
1 parent 2faefe7 commit 6309ff7
Show file tree
Hide file tree
Showing 102 changed files with 1,033 additions and 1,044 deletions.
34 changes: 34 additions & 0 deletions tests/NSubstitute.Analyzers.Tests.CSharp/CSharpProjectOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using System.Collections.Immutable;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using NSubstitute.Analyzers.Tests.Shared;

namespace NSubstitute.Analyzers.Tests.CSharp
{
public class CSharpProjectOptions : ProjectOptions
{
public static CSharpProjectOptions Default { get; } = new CSharpProjectOptions(
RuntimeMetadataReference.Default,
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

private CSharpProjectOptions(
ImmutableArray<MetadataReference> metadataReferences,
CompilationOptions compilationOptions)
: base(metadataReferences, compilationOptions)
{
}

public CSharpProjectOptions WithWarningLevel(int warningLevel)
{
var compilationOptions = (CSharpCompilationOptions)CompilationOptions;
return new CSharpProjectOptions(
MetadataReferences,
new CSharpCompilationOptions(compilationOptions.OutputKind, warningLevel: warningLevel));
}

public CSharpProjectOptions WithAdditionalMetadataReferences(MetadataReference[] metadataReferences)
{
return new CSharpProjectOptions(MetadataReferences.AddRange(metadataReferences), CompilationOptions);
}
}
}
33 changes: 33 additions & 0 deletions tests/NSubstitute.Analyzers.Tests.CSharp/CSharpWorkspaceFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Microsoft.CodeAnalysis;
using NSubstitute.Analyzers.Tests.Shared;

namespace NSubstitute.Analyzers.Tests.CSharp
{
public class CSharpWorkspaceFactory : WorkspaceFactory
{
public static CSharpWorkspaceFactory Default { get; } = new CSharpWorkspaceFactory(CSharpProjectOptions.Default);

protected override string DocumentExtension { get; } = "cs";

protected override string Language { get; } = LanguageNames.CSharp;

protected override ProjectOptions ProjectOptions { get; }

private CSharpProjectOptions CSharpProjectOptions => (CSharpProjectOptions)ProjectOptions;

public CSharpWorkspaceFactory WithWarningLevel(int warningLevel)
{
return new CSharpWorkspaceFactory(CSharpProjectOptions.WithWarningLevel(warningLevel));
}

public CSharpWorkspaceFactory WithAdditionalMetadataReferences(MetadataReference[] metadataReferences)
{
return new CSharpWorkspaceFactory(CSharpProjectOptions.WithAdditionalMetadataReferences(metadataReferences));
}

private CSharpWorkspaceFactory(CSharpProjectOptions projectOptions)
{
ProjectOptions = projectOptions;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests
{
public abstract class CSharpCodeFixActionsVerifier : CodeFixCodeActionsVerifier
{
protected override string Language { get; } = LanguageNames.CSharp;

protected override string FileExtension { get; } = "cs";
protected CSharpCodeFixActionsVerifier()
: this(CSharpWorkspaceFactory.Default)
{
}

protected override CompilationOptions GetCompilationOptions()
protected CSharpCodeFixActionsVerifier(CSharpWorkspaceFactory factory)
: base(factory)
{
return new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests
{
public abstract class CSharpCodeFixVerifier : CodeFixVerifier
{
protected override string Language { get; } = LanguageNames.CSharp;

protected override string FileExtension { get; } = "cs";
protected CSharpCodeFixVerifier()
: this(CSharpWorkspaceFactory.Default)
{
}

protected override CompilationOptions GetCompilationOptions()
protected CSharpCodeFixVerifier(CSharpWorkspaceFactory workspaceFactory)
: base(workspaceFactory)
{
return new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests
{
public abstract class CSharpSuppressDiagnosticSettingsVerifier : SuppressDiagnosticSettingsVerifier
{
protected override string Language { get; } = LanguageNames.CSharp;

protected override string FileExtension { get; } = "cs";

protected override CompilationOptions GetCompilationOptions()
protected CSharpSuppressDiagnosticSettingsVerifier()
: base(CSharpWorkspaceFactory.Default)
{
return new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.ConstructorArg
{
public class ConstructorArgumentsForInterfaceCodeFixProviderTests : CSharpCodeFixVerifier, IConstructorArgumentsForInterfaceCodeFixVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new SubstituteAnalyzer();

protected override CodeFixProvider CodeFixProvider { get; } = new ConstructorArgumentsForInterfaceCodeFixProvider();

[Fact]
public async Task RemovesInvocationArguments_WhenGenericFor_UsedWithParametersForInterface()
{
Expand Down Expand Up @@ -126,15 +130,5 @@ public void Test()
}";
await VerifyFix(source, newSource);
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new SubstituteAnalyzer();
}

protected override CodeFixProvider GetCodeFixProvider()
{
return new ConstructorArgumentsForInterfaceCodeFixProvider();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
Expand All @@ -10,13 +9,26 @@
using NSubstitute.Analyzers.CSharp.CodeFixProviders;
using NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers;
using NSubstitute.Analyzers.Tests.Shared.CodeFixProviders;
using NSubstitute.Analyzers.Tests.Shared.Extensibility;
using Xunit;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupSpecificationCodeFixProviderTests
{
public class InternalSetupSpecificationCodeFixActionsTests : CSharpCodeFixActionsVerifier, IInternalSetupSpecificationCodeFixActionsVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberAnalyzer();

protected override CodeFixProvider CodeFixProvider { get; } = new InternalSetupSpecificationCodeFixProvider();

private static readonly MetadataReference[] AdditionalMetadataReferences =
{
GetInternalLibraryMetadataReference()
};

public InternalSetupSpecificationCodeFixActionsTests()
: base(CSharpWorkspaceFactory.Default.WithAdditionalMetadataReferences(AdditionalMetadataReferences))
{
}

[Fact]
public async Task CreateCodeActions_InProperOrder()
{
Expand Down Expand Up @@ -65,26 +77,11 @@ public void Test()
await VerifyCodeActions(source);
}

protected override IEnumerable<MetadataReference> GetAdditionalMetadataReferences()
{
return new[] { GetInternalLibraryMetadataReference() };
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberAnalyzer();
}

protected override CodeFixProvider GetCodeFixProvider()
{
return new InternalSetupSpecificationCodeFixProvider();
}

private static PortableExecutableReference GetInternalLibraryMetadataReference()
private static MetadataReference GetInternalLibraryMetadataReference()
{
var syntaxTree = CSharpSyntaxTree.ParseText($@"
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo(""{TestProjectName}"")]
[assembly: InternalsVisibleTo(""{Shared.WorkspaceFactory.DefaultProjectName}"")]
namespace ExternalNamespace
{{
public class InternalFoo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupS
{
public abstract class InternalSetupSpecificationCodeFixProviderVerifier : CSharpSuppressDiagnosticSettingsVerifier, IInternalSetupSpecificationCodeFixProviderVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberAnalyzer();

protected override CodeFixProvider CodeFixProvider { get; } = new InternalSetupSpecificationCodeFixProvider();

[CombinatoryTheory]
[InlineData]
public abstract Task ChangesInternalToPublic_ForIndexer_WhenUsedWithInternalMember(string method);
Expand Down Expand Up @@ -40,15 +44,5 @@ public abstract class InternalSetupSpecificationCodeFixProviderVerifier : CSharp
[InlineData(".FooBar()")]
[InlineData("[0]")]
public abstract Task AppendsInternalsVisibleTo_ToTopLevelCompilationUnit_WhenUsedWithInternalMember(string method, string call);

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberAnalyzer();
}

protected override CodeFixProvider GetCodeFixProvider()
{
return new InternalSetupSpecificationCodeFixProvider();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Diagnostics;
using NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers;
using NSubstitute.Analyzers.Tests.CSharp.DiagnosticAnalyzerTests.NonSubstitutableMemberReceivedAnalyzerTests;
using NSubstitute.Analyzers.Tests.CSharp.DiagnosticAnalyzerTests.NonSubstitutableMemberWhenAnalyzerTests;
using NSubstitute.Analyzers.Tests.Shared.Extensibility;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupSpecificationCodeFixProviderTests
{
[CombinatoryData("Received")]
public class ReceivedAsExtensionMethodTests : InternalSetupSpecificationCodeFixProviderVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberReceivedAnalyzer();

public override async Task ChangesInternalToPublic_ForIndexer_WhenUsedWithInternalMember(string method)
{
var oldSource = $@"using NSubstitute;
Expand Down Expand Up @@ -380,10 +380,5 @@ public void Test()
}}";
await VerifyFix(oldSource, newSource, 2);
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberReceivedAnalyzer();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupS
[CombinatoryData("SubstituteExtensions.Received")]
public class ReceivedAsOrdinaryMethodTests : InternalSetupSpecificationCodeFixProviderVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberReceivedAnalyzer();

public override async Task ChangesInternalToPublic_ForIndexer_WhenUsedWithInternalMember(string method)
{
var oldSource = $@"using NSubstitute;
Expand Down Expand Up @@ -378,10 +380,5 @@ public void Test()
}}";
await VerifyFix(oldSource, newSource, 2);
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberReceivedAnalyzer();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Diagnostics;
using NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers;
using NSubstitute.Analyzers.Tests.CSharp.DiagnosticAnalyzerTests.NonSubstitutableMemberWhenAnalyzerTests;
using NSubstitute.Analyzers.Tests.Shared.Extensibility;

namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupSpecificationCodeFixProviderTests
{
[CombinatoryData("When")]
public class WhenAsExtensionMethodTests : InternalSetupSpecificationCodeFixProviderVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberWhenAnalyzer();

public override async Task ChangesInternalToPublic_ForIndexer_WhenUsedWithInternalMember(string method)
{
var oldSource = $@"using NSubstitute;
Expand Down Expand Up @@ -379,10 +380,5 @@ public void Test()
}}";
await VerifyFix(oldSource, newSource, 2);
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberWhenAnalyzer();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.InternalSetupS
[CombinatoryData("SubstituteExtensions.When")]
public class WhenAsOrdinaryMethodTests : InternalSetupSpecificationCodeFixProviderVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberWhenAnalyzer();

public override async Task ChangesInternalToPublic_ForIndexer_WhenUsedWithInternalMember(string method)
{
var oldSource = $@"using NSubstitute;
Expand Down Expand Up @@ -378,10 +380,5 @@ public void Test()
}}";
await VerifyFix(oldSource, newSource, 2);
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberWhenAnalyzer();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ namespace NSubstitute.Analyzers.Tests.CSharp.CodeFixProviderTests.NonSubstitutab
{
public class NonSubstitutableMemberArgumentMatcherSuppressDiagnosticsCodeFixActionsTests : CSharpCodeFixActionsVerifier, INonSubstitutableMemberArgumentMatcherSuppressDiagnosticsCodeFixActionsVerifier
{
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new NonSubstitutableMemberArgumentMatcherAnalyzer();

protected override CodeFixProvider CodeFixProvider { get; } = new NonSubstitutableMemberArgumentMatcherSuppressDiagnosticsCodeFixProvider();

[Fact]
public async Task CreatesCorrectCodeFixActions_ForIndexer()
{
Expand Down Expand Up @@ -115,15 +119,5 @@ public void Test()
}}";
await VerifyCodeActions(source, Array.Empty<string>());
}

protected override DiagnosticAnalyzer GetDiagnosticAnalyzer()
{
return new NonSubstitutableMemberArgumentMatcherAnalyzer();
}

protected override CodeFixProvider GetCodeFixProvider()
{
return new NonSubstitutableMemberArgumentMatcherSuppressDiagnosticsCodeFixProvider();
}
}
}
Loading

0 comments on commit 6309ff7

Please sign in to comment.