Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -650,16 +650,19 @@ stages:
displayName: Report dotnet SDK versions
- script: .\Build.cmd $(_kind) -pack -c $(_BuildConfig)
displayName: Initial build and prepare packages.
- script: dotnet publish -c $(_BuildConfig) -bl:\"./bin/$(_BuildConfig)/net7.0/win-x64/publish/Trimming.binlog\"
- script: dotnet publish -c Release -f:net472 -bl:"./artifacts/log/Release/AheadOfTime/SelfContained_Trimming_net472.binlog"
displayName: Build and publish a trim test package.
workingDirectory: $(Build.SourcesDirectory)/tests/projects/SelfContained_Trimming_Test
workingDirectory: $(Build.SourcesDirectory)/tests/AheadOfTime/SelfContained_Trimming_Test
- script: dotnet publish -c Release -f:net7.0 -bl:"./artifacts/log/Release/AheadOfTime/SelfContained_Trimming_net7.0.binlog"
displayName: Build and publish a trim test package.
workingDirectory: $(Build.SourcesDirectory)/tests/AheadOfTime/SelfContained_Trimming_Test
- script: .\check.cmd
displayName: Check the state of the trimmed app.
workingDirectory: $(Build.SourcesDirectory)/tests/projects/SelfContained_Trimming_Test
workingDirectory: $(Build.SourcesDirectory)/tests/AheadOfTime/SelfContained_Trimming_Test
- task: PublishPipelineArtifact@1
displayName: Publish Trim Tests Logs
inputs:
targetPath: '$(Build.SourcesDirectory)/tests/projects/SelfContained_Trimming_Test/bin/$(_BuildConfig)/net7.0/win-x64/publish'
targetPath: './artifacts/log/Release/AheadOfTime'
artifactName: 'Trim Test Logs Attempt $(System.JobAttempt) Logs $(_kind)'
continueOnError: true
condition: always()
Expand Down
3 changes: 3 additions & 0 deletions tests/AheadOfTime/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<Project>
<!-- empty to prevent directory crawling -->
</Project>
3 changes: 3 additions & 0 deletions tests/AheadOfTime/Directory.Build.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<Project>
<!-- empty to prevent directory crawling -->
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
</solution>
<packageSources>
<clear />
<add key="localPackages" value="../../../artifacts/packages/Release/Shipping"/>
<add key="localPackages" value="../../artifacts/packages/Release/Shipping"/>
<add key="remote" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
</packageSources>
<disabledPackageSources>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<TargetFrameworks>net472;net7.0</TargetFrameworks>
<LangVersion>preview</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<DotNetBuildOffline>true</DotNetBuildOffline>
Expand All @@ -24,7 +24,7 @@
</PropertyGroup>

<ItemGroup>
<Compile Include="Program.fs" />
<Compile Include="..\Program.fs" />
</ItemGroup>

<Import Project="$(MSBuildThisFileDirectory)../../../eng/Versions.props" />
Expand Down
35 changes: 35 additions & 0 deletions tests/AheadOfTime/SelfContained_Trimming_Test/check.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
function CheckTrim($tfm, $expected_len) {
Write-Host "Verify trimming ${tfm}: Expected length: ${expected_len}"

$cwd = Get-Location
Set-Location (Join-Path $PSScriptRoot "bin\Release\${tfm}\win-x64\publish\")
$output = .\SelfContained_Trimming_Test.exe
Set-Location ${cwd}

# Checking that it is actually running.
if (-not ($LASTEXITCODE -eq 0))
{
Write-Error "Test failed with exit code ${LASTEXITCODE}" -ErrorAction Stop
}

# Checking that the output is as expected.
$expected = "All tests passed"
if (-not ($output -eq $expected))
{
Write-Error "Test failed with unexpected output:`nExpected:`n`t${expected}`nActual`n`t${output}" -ErrorAction Stop
}

# Checking that the trimmed FSharp.Core binary is of expected size (needs adjustments if test is updated).
$file = Get-Item (Join-Path $PSScriptRoot "bin\Release\${tfm}\win-x64\publish\FSharp.Core.dll")
$file_len = $file.Length
if (-not ($file_len -eq $expected_len))
{
Write-Error "Test failed with unexpected ${tfm} - trimmed FSharp.Core length:`nExpected:`n`t${expected_len} Bytes`nActual:`n`t${file_len} Bytes`nEither codegen or trimming logic have changed. Please investigate and update expected dll size or report an issue." -ErrorAction Stop
}
}

# Check net472 trimmed assemblies trimming doesn't work for tfm net472
### CheckTrim -tfm "net472" -expected_len 287744

# Check net7.0 trimmed assemblies
CheckTrim -tfm "net7.0" -expected_len 287744
32 changes: 32 additions & 0 deletions tests/AheadOfTime/buildtools.proj
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<Project>

<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<NoWarn>$(NoWarn);NU1504</NoWarn>
</PropertyGroup>

<ItemGroup>
<Projects Include="SelfContained_Trimming_Test\SelfContained_Trimming_Test.fsproj" />
</ItemGroup>

<Target Name="Build">
<MSBuild Projects="@(Projects)" Targets="Build" Properties="Configuration=$(Configuration)" />
</Target>

<Target Name="Rebuild">
<MSBuild Projects="@(Projects)" Targets="Rebuild" Properties="Configuration=$(Configuration)" />
</Target>

<Target Name="Clean">
<MSBuild Projects="@(Projects)" Targets="Clean" Properties="Configuration=$(Configuration)" />
</Target>

<Target Name="Restore">
<MSBuild Projects="@(Projects)" Targets="Restore" Properties="Configuration=$(Configuration)" />
</Target>

<Target Name="Publish">
<MSBuild Projects="@(Projects)" Targets="Publish" Properties="Configuration=$(Configuration)" />
</Target>

</Project>
23 changes: 0 additions & 23 deletions tests/projects/SelfContained_Trimming_Test/check.ps1

This file was deleted.