mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
C#: Implement support for path transformers
This commit is contained in:
45
csharp/extractor/Semmle.Extraction.Tests/PathTransformer.cs
Normal file
45
csharp/extractor/Semmle.Extraction.Tests/PathTransformer.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using Semmle.Util;
|
||||
using Xunit;
|
||||
|
||||
namespace Semmle.Extraction.Tests
|
||||
{
|
||||
class PathCacheStub : IPathCache
|
||||
{
|
||||
public string GetCanonicalPath(string path) => path;
|
||||
}
|
||||
|
||||
public class PathTransformerTests
|
||||
{
|
||||
[Fact]
|
||||
public void TestTransformerFile()
|
||||
{
|
||||
var spec = new string[]
|
||||
{
|
||||
@"#D:\src",
|
||||
@"C:\agent*\src//",
|
||||
@"-C:\agent*\src\external",
|
||||
@"",
|
||||
@"#empty",
|
||||
@"",
|
||||
@"#src2",
|
||||
@"/agent*//src",
|
||||
@"",
|
||||
@"#optsrc",
|
||||
@"opt/src//"
|
||||
};
|
||||
|
||||
var pathTransformer = new PathTransformer(new PathCacheStub(), spec);
|
||||
|
||||
// Windows-style matching
|
||||
Assert.Equal(@"C:\bar.cs", pathTransformer.Transform(@"C:\bar.cs").Value);
|
||||
Assert.Equal("D:/src/file.cs", pathTransformer.Transform(@"C:\agent42\src\file.cs").Value);
|
||||
Assert.Equal("D:/src/file.cs", pathTransformer.Transform(@"C:\agent43\src\file.cs").Value);
|
||||
Assert.Equal(@"C:\agent43\src\external\file.cs", pathTransformer.Transform(@"C:\agent43\src\external\file.cs").Value);
|
||||
|
||||
// Linux-style matching
|
||||
Assert.Equal(@"src2/src/file.cs", pathTransformer.Transform(@"/agent/src/file.cs").Value);
|
||||
Assert.Equal(@"src2/src/file.cs", pathTransformer.Transform(@"/agent42/src/file.cs").Value);
|
||||
Assert.Equal(@"optsrc/file.cs", pathTransformer.Transform(@"/opt/src/file.cs").Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user