mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
96 lines
3.4 KiB
C#
96 lines
3.4 KiB
C#
using Xunit;
|
|
using Semmle.BuildAnalyser;
|
|
using Semmle.Util.Logging;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Semmle.Extraction.Tests
|
|
{
|
|
|
|
internal class LoggerStub : ILogger
|
|
{
|
|
public void Log(Severity severity, string message) { }
|
|
|
|
public void Dispose() { }
|
|
}
|
|
|
|
internal class UnsafeFileReaderStub : IUnsafeFileReader
|
|
{
|
|
private readonly List<string> lines;
|
|
|
|
public UnsafeFileReaderStub(List<string> lines)
|
|
{
|
|
this.lines = lines;
|
|
}
|
|
|
|
public IEnumerable<string> ReadLines(string file)
|
|
{
|
|
foreach (var line in lines)
|
|
{
|
|
yield return line;
|
|
}
|
|
}
|
|
}
|
|
|
|
internal class TestFileContent : FileContent
|
|
{
|
|
public TestFileContent(List<string> lines) : base(() => new HashSet<string>(),
|
|
new ProgressMonitor(new LoggerStub()),
|
|
() => new List<string>() { "test1.cs" },
|
|
new UnsafeFileReaderStub(lines))
|
|
{ }
|
|
}
|
|
|
|
public class FileContentTests
|
|
{
|
|
[Fact]
|
|
public void TestFileContent1()
|
|
{
|
|
// Setup
|
|
var lines = new List<string>()
|
|
{
|
|
"<Project Sdk=\"Microsoft.NET.Sdk\">",
|
|
"<PackageReference Include=\"DotNetAnalyzers.DocumentationAnalyzers\" Version=\"1.0.0-beta.59\" PrivateAssets=\"all\" />",
|
|
"<PackageReference Version=\"7.0.0\" Include=\"Microsoft.CodeAnalysis.NetAnalyzers\"PrivateAssets=\"all\" />",
|
|
"<PackageReference Include=\"StyleCop.Analyzers\" Version=\"1.2.0-beta.406\">",
|
|
"<FrameworkReference Include=\"My.Framework\"/>"
|
|
};
|
|
var fileContent = new TestFileContent(lines);
|
|
|
|
// Execute
|
|
var notYetDownloadedPackages = fileContent.NotYetDownloadedPackages;
|
|
var useAspNetDlls = fileContent.UseAspNetDlls;
|
|
|
|
// Verify
|
|
Assert.False(useAspNetDlls);
|
|
Assert.Equal(3, notYetDownloadedPackages.Count);
|
|
Assert.Contains("DotNetAnalyzers.DocumentationAnalyzers".ToLowerInvariant(), notYetDownloadedPackages);
|
|
Assert.Contains("Microsoft.CodeAnalysis.NetAnalyzers".ToLowerInvariant(), notYetDownloadedPackages);
|
|
Assert.Contains("StyleCop.Analyzers".ToLowerInvariant(), notYetDownloadedPackages);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestFileContent2()
|
|
{
|
|
// Setup
|
|
var lines = new List<string>()
|
|
{
|
|
"<Project Sdk=\"Microsoft.NET.Sdk.Web\">",
|
|
"<FrameworkReference Include=\"My.Framework\"/>",
|
|
"<PackageReference Version=\"7.0.0\" Include=\"Microsoft.CodeAnalysis.NetAnalyzers\"PrivateAssets=\"all\" />",
|
|
"<PackageReference Include=\"StyleCop.Analyzers\" Version=\"1.2.0-beta.406\">"
|
|
};
|
|
var fileContent = new TestFileContent(lines);
|
|
|
|
// Execute
|
|
var useAspNetDlls = fileContent.UseAspNetDlls;
|
|
var notYetDownloadedPackages = fileContent.NotYetDownloadedPackages;
|
|
|
|
// Verify
|
|
Assert.True(useAspNetDlls);
|
|
Assert.Equal(2, notYetDownloadedPackages.Count);
|
|
Assert.Contains("Microsoft.CodeAnalysis.NetAnalyzers".ToLowerInvariant(), notYetDownloadedPackages);
|
|
Assert.Contains("StyleCop.Analyzers".ToLowerInvariant(), notYetDownloadedPackages);
|
|
}
|
|
}
|
|
}
|