forked from microsoft/microsoft-ui-xaml
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCreateTestBinariesDirFromLocalBuild.ps1
120 lines (104 loc) · 4.92 KB
/
CreateTestBinariesDirFromLocalBuild.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[CmdletBinding()]
param(
[switch]$NoBuild,
[switch]$Release,
[String]$Flavor = "Debug",
[String]$Platform = "x86"
)
function DoesTaefAppXNeedBuild
{
param(
[System.IO.FileSystemInfo]$MuxDllFile,
[string]$ProjectName,
[string]$Platform,
[string]$Flavor
)
$projectFileName = "$($ProjectName).TAEF"
return DoesAppXNeedBuild -MuxDllFile $MuxDllFile -ProjectName $ProjectName -Platform $Platform -Flavor $Flavor -AppXPath "$projectFileName\AppPackages\$($ProjectName)_Test\$ProjectName.appx" -ExePath "$projectFileName\$ProjectName.exe"
}
function DoesAppXNeedBuild
{
param(
[System.IO.FileSystemInfo]$MuxDllFile,
[string]$AppXPath,
[string]$ExePath,
[string]$ProjectName,
[string]$BuildTarget,
[string]$Platform,
[string]$Flavor
)
$appxFullPath = "$PSScriptRoot\BuildOutput\$Flavor\$Platform\$AppXPath"
$testAppxFile = Get-Item $appxFullPath -ErrorAction Ignore
$testExeFile = Get-Item "$PSScriptRoot\BuildOutput\$Flavor\$Platform\$ExePath" -ErrorAction Ignore
if((!$testAppxFile) -or (!$testExeFile) -or ($testExeFile.LastWriteTime -gt $testAppxFile.LastWriteTime) -or ($muxDllFile.LastWriteTime -gt $testAppxFile.LastWriteTime))
{
if ($testAppxFile)
{
Write-Host "$testAppxFile LastWriteTime = $($testAppxFile.LastWriteTime)"
}
else
{
Write-Host "No appx at $appxFullPath"
}
if ($testExeFile)
{
Write-Host "$testExeFile LastWriteTime = $($testExeFile.LastWriteTime)"
}
Write-Host "$muxDllFile LastWriteTime = $($muxDllFile.LastWriteTime)"
return $true
}
else
{
return $false
}
}
# Clean up artifacts and HelixPayload directories:
$artifactsDropDir = "$PSScriptRoot\Artifacts\drop"
$helixpayloadDir = "$PSScriptRoot\HelixPayload\$Flavor\$Platform"
if(Test-Path $artifactsDropDir)
{
Remove-Item $artifactsDropDir -Force -Recurse
}
if(Test-Path $helixpayloadDir)
{
Remove-Item $helixpayloadDir -Force -Recurse
}
# Determine if we need to build the test binaries:
$muxDllFile = Get-Item "$PSScriptRoot\BuildOutput\$Flavor\$Platform\Microsoft.UI.Xaml\Microsoft.UI.Xaml.dll"
$shouldBuild = $false;
$buildCmd = "";
if(!$Release)
{
$shouldBuild = $shouldBuild -Or (DoesTaefAppXNeedBuild -MuxDllFile $muxDllFile -ProjectName "MUXControlsTestApp" -Platform $Platform -Flavor $Flavor)
$shouldBuild = $shouldBuild -Or (DoesTaefAppXNeedBuild -MuxDllFile $muxDllFile -ProjectName "IXMPTestApp" -Platform $Platform -Flavor $Flavor)
$shouldBuild = $shouldBuild -Or (DoesAppXNeedBuild -MuxDllFile $muxDllFile -ProjectName "MUXControlsTestAppWPFPackage" -Platform $Platform -Flavor $Flavor -AppXPath "MUXControlsTestAppWPFPackage\AppPackages\MUXControlsTestAppWPFPackage_Test\MUXControlsTestAppWPFPackage.appx" -ExePath "MUXControlsTestAppWPF\MUXControlsTestAppWPF.exe" -ProjectPath "MUXControlsTestAppWPFPackage\MUXControlsTestAppWPFPackage.wapproj")
if($shouldBuild)
{
$buildCmd = "$PSScriptRoot\build.cmd $($Platform.ToLower()) $($Flavor.ToLower()) /target test\MUXControlsTestApp\MUXControlsTestApp_TAEF:Publish /target test\IXMPTestApp\IXMPTestApp_TAEF:Publish /target test\MUXControlsTestAppWPF\MUXControlsTestAppWPFPackage:Publish"
}
}
else
{
$shouldBuild = $shouldBuild -Or (DoesAppXNeedBuild -MuxDllFile $muxDllFile -ProjectName "NugetPackageTestApp" -Platform $Platform -Flavor $Flavor -AppXPath "NugetPackageTestApp\AppPackages\NugetPackageTestApp_Test\NugetPackageTestApp.appx" -ExePath "NugetPackageTestApp\NugetPackageTestApp.exe" -ProjectPath "MUXControlsReleaseTest\NugetPackageTestApp\NugetPackageTestApp.csproj")
$shouldBuild = $shouldBuild -Or (DoesAppXNeedBuild -MuxDllFile $muxDllFile -ProjectName "NugetPackageTestAppCX" -Platform $Platform -Flavor $Flavor -AppXPath "NugetPackageTestAppCX\AppPackages\NugetPackageTestAppCX_Test\NugetPackageTestAppCX.appx" -ExePath "NugetPackageTestAppCX\NugetPackageTestAppCX.exe" -ProjectPath "MUXControlsReleaseTest\NugetPackageTestAppCX\NugetPackageTestAppCX.csproj")
if($shouldBuild)
{
$buildCmd = "$PSScriptRoot\build.cmd $($Platform.ToLower()) $($Flavor.ToLower()) /project D:\microsoft-ui-xaml\test\MUXControlsReleaseTest\MUXControlsReleaseTest.sln"
}
}
if($shouldBuild)
{
if(!$NoBuild)
{
Write-Host $buildCmd
Invoke-Expression $buildCmd
}
else
{
Write-Warning "Test binaries are out of date, but -NoBuild flag was specified so skipping build"
}
}
& .\build\CopyFilesToStagingDir.ps1 -BuildOutputDir "$PSScriptRoot\BuildOutput\" -PublishDir $artifactsDropDir -Platform $Platform -Configuration $Flavor -PublishAppxFiles
& .\Tools\NugetWrapper.cmd restore build\Helix\packages.config -PackagesDirectory build\Helix\packages
& .\build\Helix\PrepareHelixPayload.ps1 -Platform $Platform -Configuration $Flavor
Write-Host "Test binaries dir created in $helixpayloadDir"