Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/linker.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateo Torres-Ruiz <mateoatr@users.noreply.github.com>2021-03-27 00:57:49 +0300
committerGitHub <noreply@github.com>2021-03-27 00:57:49 +0300
commit8fe27d6fa8f0e4d17e48ae92d185d7e9a10bb27d (patch)
tree29d4f8644fc01be3fa028d3974cfff9a7221efea /test/ILLink.RoslynAnalyzer.Tests
parent000432728ae8603d7ac0519d844bc260eee4910e (diff)
Compile roslyn analyzer tests using repo's assembly refs (#1922)
* Used repo's dotnet bits * Remove unused assembly * Just reference SPCL * Simplify * Remove using
Diffstat (limited to 'test/ILLink.RoslynAnalyzer.Tests')
-rw-r--r--test/ILLink.RoslynAnalyzer.Tests/RequiresAssemblyFilesAnalyzerTests.cs79
-rw-r--r--test/ILLink.RoslynAnalyzer.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs9
2 files changed, 42 insertions, 46 deletions
diff --git a/test/ILLink.RoslynAnalyzer.Tests/RequiresAssemblyFilesAnalyzerTests.cs b/test/ILLink.RoslynAnalyzer.Tests/RequiresAssemblyFilesAnalyzerTests.cs
index c1b083c5b..07f1aa2b6 100644
--- a/test/ILLink.RoslynAnalyzer.Tests/RequiresAssemblyFilesAnalyzerTests.cs
+++ b/test/ILLink.RoslynAnalyzer.Tests/RequiresAssemblyFilesAnalyzerTests.cs
@@ -11,23 +11,6 @@ namespace ILLink.RoslynAnalyzer.Tests
{
static Task VerifyRequiresAssemblyFilesAnalyzer (string source, params DiagnosticResult[] expected)
{
- // TODO: Remove this once we have the new attribute in the runtime.
- source = @"namespace System.Diagnostics.CodeAnalysis
-{
-#nullable enable
- [AttributeUsage(AttributeTargets.Constructor |
- AttributeTargets.Event |
- AttributeTargets.Method |
- AttributeTargets.Property,
- Inherited = false,
- AllowMultiple = false)]
- public sealed class RequiresAssemblyFilesAttribute : Attribute
- {
- public RequiresAssemblyFilesAttribute() { }
- public string? Message { get; set; }
- public string? Url { get; set; }
- }
-}" + Environment.NewLine + source;
return VerifyCS.VerifyAnalyzerAsync (source,
TestCaseUtils.UseMSBuildProperties (MSBuildPropertyOptionNames.EnableSingleFileAnalyzer),
expected);
@@ -37,9 +20,12 @@ namespace ILLink.RoslynAnalyzer.Tests
public Task SimpleDiagnosticOnEvent ()
{
var TestRequiresAssemblyFieldsOnEvent = @"
+#nullable enable
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles]
+ [RequiresAssemblyFiles]
event System.EventHandler? E;
void M()
@@ -48,17 +34,19 @@ class C
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestRequiresAssemblyFieldsOnEvent,
- // (25,17): warning IL3002: Using member 'C.E' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
- VerifyCS.Diagnostic ().WithSpan (25, 17, 25, 18).WithArguments ("C.E", "", ""));
+ // (12,17): warning IL3002: Using member 'C.E' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
+ VerifyCS.Diagnostic ().WithSpan (12, 17, 12, 18).WithArguments ("C.E", "", ""));
}
[Fact]
public Task SimpleDiagnosticOnMethod ()
{
var TestRequiresAssemblyFilesOnMethod = @"
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles]
+ [RequiresAssemblyFiles]
void M1()
{
}
@@ -69,39 +57,44 @@ class C
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestRequiresAssemblyFilesOnMethod,
- // (27,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
- VerifyCS.Diagnostic ().WithSpan (27, 3, 27, 7).WithArguments ("C.M1()", "", ""));
+ // (13,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
+ VerifyCS.Diagnostic ().WithSpan (13, 3, 13, 7).WithArguments ("C.M1()", "", ""));
}
[Fact]
public Task SimpleDiagnosticOnProperty ()
{
var TestRequiresAssemblyFilesOnProperty = @"
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles]
+ [RequiresAssemblyFiles]
bool P { get; set; }
void M()
{
P = false;
- bool b = P;
+ List<bool> b = new List<bool> { P };
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestRequiresAssemblyFilesOnProperty,
- // (25,3): warning IL3002: Using member 'C.P' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
- VerifyCS.Diagnostic ().WithSpan (25, 3, 25, 4).WithArguments ("C.P", "", ""),
- // (26,12): warning IL3002: Using member 'C.P' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
- VerifyCS.Diagnostic ().WithSpan (26, 12, 26, 13).WithArguments ("C.P", "", ""));
+ // (11,3): warning IL3002: Using member 'C.P' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
+ VerifyCS.Diagnostic ().WithSpan (12, 3, 12, 4).WithArguments ("C.P", "", ""),
+ // (13,12): warning IL3002: Using member 'C.P' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app.
+ VerifyCS.Diagnostic ().WithSpan (13, 35, 13, 36).WithArguments ("C.P", "", ""));
}
[Fact]
public Task RequiresAssemblyFilesWithMessageAndUrl ()
{
var TestRequiresAssemblyFilesWithMessageAndUrl = @"
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles (Message = ""Message from attribute"", Url = ""https://helpurl"")]
+ [RequiresAssemblyFiles (Message = ""Message from attribute"", Url = ""https://helpurl"")]
void M1()
{
}
@@ -112,17 +105,19 @@ class C
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestRequiresAssemblyFilesWithMessageAndUrl,
- // (27,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. Message from attribute. https://helpurl
- VerifyCS.Diagnostic ().WithSpan (27, 3, 27, 7).WithArguments ("C.M1()", " Message from attribute.", " https://helpurl"));
+ // (13,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. Message from attribute. https://helpurl
+ VerifyCS.Diagnostic ().WithSpan (13, 3, 13, 7).WithArguments ("C.M1()", " Message from attribute.", " https://helpurl"));
}
[Fact]
public Task RequiresAssemblyFilesWithUrlOnly ()
{
var TestRequiresAssemblyFilesWithMessageAndUrl = @"
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles (Url = ""https://helpurl"")]
+ [RequiresAssemblyFiles (Url = ""https://helpurl"")]
void M1()
{
}
@@ -133,17 +128,19 @@ class C
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestRequiresAssemblyFilesWithMessageAndUrl,
- // (27,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. https://helpurl
- VerifyCS.Diagnostic ().WithSpan (27, 3, 27, 7).WithArguments ("C.M1()", "", " https://helpurl"));
+ // (13,3): warning IL3002: Using member 'C.M1()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. https://helpurl
+ VerifyCS.Diagnostic ().WithSpan (13, 3, 13, 7).WithArguments ("C.M1()", "", " https://helpurl"));
}
[Fact]
public Task NoDiagnosticIfMethodNotCalled ()
{
var TestNoDiagnosticIfMethodNotCalled = @"
+using System.Diagnostics.CodeAnalysis;
+
class C
{
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles]
+ [RequiresAssemblyFiles]
void M() { }
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestNoDiagnosticIfMethodNotCalled);
@@ -153,6 +150,8 @@ class C
public Task NoDiagnosticIsProducedIfCallerIsAnnotated ()
{
var TestNoDiagnosticIsProducedIfCallerIsAnnotated = @"
+using System.Diagnostics.CodeAnalysis;
+
class C
{
void M1()
@@ -160,20 +159,20 @@ class C
M2();
}
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles (Message = ""Warn from M2"")]
+ [RequiresAssemblyFiles (Message = ""Warn from M2"")]
void M2()
{
M3();
}
- [System.Diagnostics.CodeAnalysis.RequiresAssemblyFiles (Message = ""Warn from M3"")]
+ [RequiresAssemblyFiles (Message = ""Warn from M3"")]
void M3()
{
}
}";
return VerifyRequiresAssemblyFilesAnalyzer (TestNoDiagnosticIsProducedIfCallerIsAnnotated,
- // (22,3): warning IL3002: Using member 'C.M2()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. Warn from M2.
- VerifyCS.Diagnostic ().WithSpan (22, 3, 22, 7).WithArguments ("C.M2()", " Warn from M2.", ""));
+ // (8,3): warning IL3002: Using member 'C.M2()' which has 'RequiresAssemblyFilesAttribute' can break functionality when embedded in a single-file app. Warn from M2.
+ VerifyCS.Diagnostic ().WithSpan (8, 3, 8, 7).WithArguments ("C.M2()", " Warn from M2.", ""));
}
}
}
diff --git a/test/ILLink.RoslynAnalyzer.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs b/test/ILLink.RoslynAnalyzer.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs
index feb14d342..5eae9acf3 100644
--- a/test/ILLink.RoslynAnalyzer.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs
+++ b/test/ILLink.RoslynAnalyzer.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs
@@ -42,15 +42,12 @@ namespace ILLink.RoslynAnalyzer.Tests
SyntaxTree src,
(string, string)[]? globalAnalyzerOptions = null)
{
- TestCaseUtils.GetDirectoryPaths (out _, out string testAssemblyPath);
- var expectationsPath = Path.Combine (testAssemblyPath, "Mono.Linker.Tests.Cases.Expectations.dll");
-
- var mdRef = MetadataReference.CreateFromFile (expectationsPath);
-
var comp = CSharpCompilation.Create (
assemblyName: Guid.NewGuid ().ToString ("N"),
syntaxTrees: new SyntaxTree[] { src },
- references: (await ReferenceAssemblies.Net.Net50.ResolveAsync (null, default)).Add (mdRef),
+ references: await Task.Run (() => new List<MetadataReference> {
+ MetadataReference.CreateFromFile (typeof (int).Assembly.Location)
+ }),
new CSharpCompilationOptions (OutputKind.DynamicallyLinkedLibrary));
var analyzerOptions = new AnalyzerOptions (