[release/7.0.1xx] SDK diff exclusions - backport (#15670)
This commit is contained in:
parent
df0fc12896
commit
c964d85026
3 changed files with 62 additions and 1157 deletions
|
@ -5,6 +5,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.IO.Enumeration;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
@ -27,15 +28,15 @@ public class SdkContentTests : SmokeTests
|
||||||
{
|
{
|
||||||
const string msftFileListingFileName = "msftSdkFiles.txt";
|
const string msftFileListingFileName = "msftSdkFiles.txt";
|
||||||
const string sbFileListingFileName = "sbSdkFiles.txt";
|
const string sbFileListingFileName = "sbSdkFiles.txt";
|
||||||
WriteTarballFileList(Config.MsftSdkTarballPath, msftFileListingFileName, isPortable: true);
|
WriteTarballFileList(Config.MsftSdkTarballPath, msftFileListingFileName, isPortable: true, "msft");
|
||||||
WriteTarballFileList(Config.SdkTarballPath, sbFileListingFileName, isPortable: false);
|
WriteTarballFileList(Config.SdkTarballPath, sbFileListingFileName, isPortable: false, "sb");
|
||||||
|
|
||||||
string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper);
|
string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper);
|
||||||
diff = RemoveDiffMarkers(diff);
|
diff = RemoveDiffMarkers(diff);
|
||||||
BaselineHelper.CompareContents("MsftToSbSdk.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs);
|
BaselineHelper.CompareContents("MsftToSbSdk.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable)
|
private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable, string sdkType)
|
||||||
{
|
{
|
||||||
if (!File.Exists(tarballPath))
|
if (!File.Exists(tarballPath))
|
||||||
{
|
{
|
||||||
|
@ -46,10 +47,32 @@ public class SdkContentTests : SmokeTests
|
||||||
fileListing = BaselineHelper.RemoveRids(fileListing, isPortable);
|
fileListing = BaselineHelper.RemoveRids(fileListing, isPortable);
|
||||||
fileListing = BaselineHelper.RemoveVersions(fileListing);
|
fileListing = BaselineHelper.RemoveVersions(fileListing);
|
||||||
IEnumerable<string> files = fileListing.Split(Environment.NewLine).OrderBy(path => path);
|
IEnumerable<string> files = fileListing.Split(Environment.NewLine).OrderBy(path => path);
|
||||||
|
files = RemoveExclusions(
|
||||||
|
files,
|
||||||
|
GetExclusionFilters(
|
||||||
|
Path.Combine(BaselineHelper.GetAssetsDirectory(), "SdkDiffExclusions.txt"),
|
||||||
|
sdkType));
|
||||||
|
|
||||||
File.WriteAllLines(outputFileName, files);
|
File.WriteAllLines(outputFileName, files);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<string> RemoveExclusions(IEnumerable<string> files, IEnumerable<string> exclusions) =>
|
||||||
|
files.Where(item => !exclusions.Any(p => FileSystemName.MatchesSimpleExpression(p, item)));
|
||||||
|
|
||||||
|
private static IEnumerable<string> GetExclusionFilters(string exclusionsFilePath, string sdkType)
|
||||||
|
{
|
||||||
|
int prefixSkip = sdkType.Length + 1;
|
||||||
|
return File.ReadAllLines(exclusionsFilePath)
|
||||||
|
.Where(line => line.StartsWith(sdkType + ",")) // process only specific sdk exclusions
|
||||||
|
.Select(line =>
|
||||||
|
{
|
||||||
|
// Ignore comments
|
||||||
|
var index = line.IndexOf('#');
|
||||||
|
return index >= 0 ? line[prefixSkip..index].TrimEnd() : line[prefixSkip..];
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
private static string RemoveDiffMarkers(string source)
|
private static string RemoveDiffMarkers(string source)
|
||||||
{
|
{
|
||||||
Regex indexRegex = new("^index .*", RegexOptions.Multiline);
|
Regex indexRegex = new("^index .*", RegexOptions.Multiline);
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# This list is processed using FileSystemName.MatchesSimpleExpression
|
||||||
|
#
|
||||||
|
# Format
|
||||||
|
# {msft|sb},<path> [# comment]
|
||||||
|
# msft = Microsoft built SDK
|
||||||
|
# sb = source-built SDK
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
# 'folder/*' matches 'folder/' and 'folder/abc'
|
||||||
|
# 'folder/?*' matches 'folder/abc' but not 'folder/'
|
||||||
|
#
|
||||||
|
# We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*'
|
||||||
|
|
||||||
|
msft,./sdk/x.y.z/TestHostNetFramework/?* # Intentional - MSFT build includes test-host that targets netcoreapp3.1
|
||||||
|
msft,./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/?* # Intentional - source-build includes SDK Publishing package that target latest .NET TFM
|
||||||
|
msft,./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/?* # Intentional - explicitly excluded from source-build
|
||||||
|
sb,./sdk/x.y.z/TestHost/?* # Intentional - source-build includes test-host that targets latest .NET TFM
|
||||||
|
|
||||||
|
# vstest localization is disabled in Linux builds - https://github.com/microsoft/vstest/issues/4305
|
||||||
|
msft,./sdk/x.y.z/*?/Microsoft.CodeCoverage.IO.resources.dll
|
||||||
|
msft,./sdk/x.y.z/*?/Microsoft.TestPlatform.*?.resources.dll
|
||||||
|
msft,./sdk/x.y.z/*?/Microsoft.VisualStudio.TestPlatform.*?.resources.dll
|
||||||
|
msft,./sdk/x.y.z/*?/Test.Utility.resources.dll
|
||||||
|
msft,./sdk/x.y.z/*?/vstest.console.resources.dll
|
||||||
|
msft,./sdk/x.y.z/Extensions/*?/Microsoft.TestPlatform.*?.resources.dll
|
||||||
|
msft,./sdk/x.y.z/Extensions/*?/Microsoft.VisualStudio.TestPlatform.*?.resources.dll
|
||||||
|
|
||||||
|
# nuget localization is not available for Linux builds - https://github.com/NuGet/Home/issues/12440
|
||||||
|
msft,./sdk/x.y.z/*?/NuGet.*?.resources.dll
|
||||||
|
msft,./sdk/x.y.z/*?/Microsoft.Build.NuGetSdkResolver.resources.dll
|
||||||
|
|
||||||
|
# ILMerge is not supported in Linux builds - excluding the whole NuGet.Build.Tasks.Pack directory, to avoid a noisy diff
|
||||||
|
msft,./sdk/x.y.z/Sdks/NuGet.Build.Tasks.Pack/*?
|
||||||
|
sb,./sdk/x.y.z/Sdks/NuGet.Build.Tasks.Pack/*?
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue