Browse Source

Updated dotmemory

pull/916/merge
Nikita Tsukanov 9 years ago
parent
commit
c4aae602e8
  1. 2
      appveyor.yml
  2. 48
      build.cake
  3. 9
      tests/Avalonia.LeakTests/toolproject/tool.csproj

2
appveyor.yml

@ -27,7 +27,7 @@ before_build:
build_script: build_script:
- ps: .\build.ps1 -Target "AppVeyor" -Platform "$env:platform" -Configuration "$env:configuration" - ps: .\build.ps1 -Target "AppVeyor" -Platform "$env:platform" -Configuration "$env:configuration"
after_build: after_build:
- tools\JetBrains.dotMemoryUnit\tools\dotMemoryUnit.exe -targetExecutable="%xunit20%\xunit.console.x86.exe" -returnTargetExitCode --"tests\Avalonia.LeakTests\bin\Release\Avalonia.LeakTests.dll" - tests\Avalonia.LeakTests\bin\Release\dotMemoryUnit.exe -targetExecutable="%xunit20%\xunit.console.x86.exe" -returnTargetExitCode --"tests\Avalonia.LeakTests\bin\Release\Avalonia.LeakTests.dll"
- "SET PATH=C:\\Python34;C:\\Python34\\Scripts;%PATH%" - "SET PATH=C:\\Python34;C:\\Python34\\Scripts;%PATH%"
- pip install codecov - pip install codecov
- codecov -f "./artifacts/coverage.xml" - codecov -f "./artifacts/coverage.xml"

48
build.cake

@ -4,8 +4,8 @@
#addin "nuget:?package=Polly&version=4.2.0" #addin "nuget:?package=Polly&version=4.2.0"
#addin "nuget:?package=NuGet.Core&version=2.12.0" #addin "nuget:?package=NuGet.Core&version=2.12.0"
#tool "nuget:?package=xunit.runner.console&version=2.2.0"
#tool "nuget:https://dotnet.myget.org/F/nuget-build/?package=NuGet.CommandLine&version=4.3.0-preview1-3980&prerelease" #tool "nuget:https://dotnet.myget.org/F/nuget-build/?package=NuGet.CommandLine&version=4.3.0-preview1-3980&prerelease"
#tool "nuget:?package=JetBrains.dotMemoryUnit&version=2.3.20160517.113140"
#tool "JetBrains.ReSharper.CommandLineTools" #tool "JetBrains.ReSharper.CommandLineTools"
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// TOOLS // TOOLS
@ -194,6 +194,7 @@ Task("Run-Net-Core-Unit-Tests")
Task("Run-Unit-Tests") Task("Run-Unit-Tests")
.IsDependentOn("Run-Net-Core-Unit-Tests") .IsDependentOn("Run-Net-Core-Unit-Tests")
.IsDependentOn("Build") .IsDependentOn("Build")
.IsDependentOn("Run-Leak-Tests")
.WithCriteria(() => !parameters.SkipTests) .WithCriteria(() => !parameters.SkipTests)
.Does(() => .Does(() =>
{ {
@ -206,13 +207,6 @@ Task("Run-Unit-Tests")
.Select(name => MakeAbsolute(File("./tests/" + name + "/bin/" + parameters.DirSuffix + "/" + name + ".dll"))) .Select(name => MakeAbsolute(File("./tests/" + name + "/bin/" + parameters.DirSuffix + "/" + name + ".dll")))
.ToList(); .ToList();
if (parameters.IsRunningOnWindows)
{
var leakTests = GetFiles("./tests/Avalonia.LeakTests/bin/" + parameters.DirSuffix + "/*.LeakTests.dll");
unitTests.AddRange(leakTests);
}
var toolPath = (parameters.IsPlatformAnyCPU || parameters.IsPlatformX86) ? var toolPath = (parameters.IsPlatformAnyCPU || parameters.IsPlatformX86) ?
"./tools/xunit.runner.console/tools/xunit.console.x86.exe" : "./tools/xunit.runner.console/tools/xunit.console.x86.exe" :
"./tools/xunit.runner.console/tools/xunit.console.exe"; "./tools/xunit.runner.console/tools/xunit.console.exe";
@ -365,6 +359,44 @@ Task("Publish-NuGet")
Information("Publish-NuGet Task failed, but continuing with next Task..."); Information("Publish-NuGet Task failed, but continuing with next Task...");
}); });
Task("Run-Leak-Tests")
.WithCriteria(parameters.IsRunningOnWindows)
.IsDependentOn("Build")
.Does(() =>
{
DotNetCoreRestore("tests\\Avalonia.LeakTests\\toolproject\\tool.csproj");
DotNetBuild("tests\\Avalonia.LeakTests\\toolproject\\tool.csproj", settings => settings.SetConfiguration("Release"));
var report = "tests\\Avalonia.LeakTests\\bin\\Release\\report.xml";
if(System.IO.File.Exists(report))
System.IO.File.Delete(report);
var proc = System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName="tests\\Avalonia.LeakTests\\toolproject\\bin\\Release\\net461\\dotMemoryUnit.exe",
Arguments="-targetExecutable=\"tools\\xunit.runner.console\\tools\\xunit.console.x86.exe\" -returnTargetExitCode -- tests\\Avalonia.LeakTests\\bin\\Release\\Avalonia.LeakTests.dll -xml tests\\Avalonia.LeakTests\\bin\\Release\\report.xml ",
UseShellExecute = false,
});
var st = System.Diagnostics.Stopwatch.StartNew();
while(!proc.HasExited && !System.IO.File.Exists(report))
{
if(st.Elapsed.TotalSeconds>60)
{
Error("Timed out, probably a bug in dotMemoryUnit");
proc.Kill();
throw new Exception("dotMemory issue");
}
proc.WaitForExit(100);
}
try{
proc.Kill();
}catch{}
var doc = System.Xml.Linq.XDocument.Load(report);
if(doc.Root.Descendants("assembly").Any(x=>x.Attribute("failed").Value.ToString() != "0"))
{
throw new Exception("Tests failed");
}
});
Task("Inspect") Task("Inspect")
.WithCriteria(parameters.IsRunningOnWindows) .WithCriteria(parameters.IsRunningOnWindows)
.IsDependentOn("Restore-NuGet-Packages") .IsDependentOn("Restore-NuGet-Packages")

9
tests/Avalonia.LeakTests/toolproject/tool.csproj

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup>
<TargetFrameworks>net461</TargetFrameworks>
<OutputType>Library</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="JetBrains.dotMemory.Unit" Version="109.0.20170720.104130-eap09" />
</ItemGroup>
</Project>
Loading…
Cancel
Save