Implement Pester tests for Android SDKs (#1221)

* Add Android SDKs tests

* Fix path to android helpers

* Fix path to sdkmanager

* Remove extra and add-ons tests

* Add verbose option to sdkmanager

* Add additional tools test

* Fix extra and addons tests

* Fix extra and addons android packages

* Fix image templates
This commit is contained in:
Vladimir Safonkin
2020-07-17 09:35:46 +00:00
committed by GitHub
parent b47ba413c9
commit 58f3ee85cb
9 changed files with 184 additions and 77 deletions

View File

@@ -509,6 +509,9 @@
},
{
"type": "powershell",
"environment_vars":[
"TOOLSET_JSON_PATH={{user `toolset_json_path`}}"
],
"scripts":[
"{{ template_dir }}/scripts/Installers/Update-AndroidSDK.ps1"
]

View File

@@ -490,6 +490,9 @@
},
{
"type": "powershell",
"environment_vars":[
"TOOLSET_JSON_PATH={{user `toolset_json_path`}}"
],
"scripts":[
"{{ template_dir }}/scripts/Installers/Update-AndroidSDK.ps1"
]

View File

@@ -33,4 +33,5 @@ Export-ModuleMember -Function @(
'Get-WhichTool'
'Get-EnvironmentVariable'
'Invoke-PesterTests'
'Install-AndroidSDKPackages'
)

View File

@@ -463,3 +463,20 @@ function Extract-7Zip {
exit 1
}
}
function Install-AndroidSDKPackages {
Param
(
[Parameter(Mandatory=$true)]
[string]$AndroidSDKManagerPath,
[Parameter(Mandatory=$true)]
[string]$AndroidSDKRootPath,
[Parameter(Mandatory=$true)]
[string[]]$AndroidPackages,
[string] $PrefixPackageName
)
foreach ($package in $AndroidPackages) {
& $AndroidSDKManagerPath --sdk_root=$AndroidSDKRootPath "$PrefixPackageName$package"
}
}

View File

@@ -34,82 +34,49 @@ Expand-Archive -Path .\android-sdk-licenses.zip -DestinationPath 'C:\Program Fil
# run the updates.
# keep newer versions in descending order
$sdk_root = "C:\Program Files (x86)\Android\android-sdk"
# Get android content from toolset
$androidToolset = (Get-ToolsetContent).android
Push-Location -Path $sdk.FullName
$sdkRoot = "C:\Program Files (x86)\Android\android-sdk"
$sdkManager = "$sdkRoot\tools\bin\sdkmanager.bat"
& '.\tools\bin\sdkmanager.bat' --sdk_root=$sdk_root `
"platform-tools" `
"platforms;android-30" `
"platforms;android-29" `
"platforms;android-28" `
"platforms;android-27" `
"platforms;android-26" `
"platforms;android-25" `
"platforms;android-24" `
"platforms;android-23" `
"platforms;android-22" `
"platforms;android-21" `
"platforms;android-19" `
"build-tools;30.0.0" `
"build-tools;29.0.3" `
"build-tools;29.0.2" `
"build-tools;29.0.1" `
"build-tools;29.0.0" `
"build-tools;28.0.3" `
"build-tools;28.0.2" `
"build-tools;28.0.1" `
"build-tools;28.0.0" `
"build-tools;27.0.3" `
"build-tools;27.0.2" `
"build-tools;27.0.1" `
"build-tools;27.0.0" `
"build-tools;26.0.3" `
"build-tools;26.0.2" `
"build-tools;26.0.1" `
"build-tools;26.0.0" `
"build-tools;25.0.3" `
"build-tools;25.0.2" `
"build-tools;25.0.1" `
"build-tools;25.0.0" `
"build-tools;24.0.3" `
"build-tools;24.0.2" `
"build-tools;24.0.1" `
"build-tools;24.0.0" `
"build-tools;23.0.3" `
"build-tools;23.0.2" `
"build-tools;23.0.1" `
"build-tools;22.0.1" `
"build-tools;21.1.2" `
"build-tools;20.0.0" `
"build-tools;19.1.0" `
"extras;android;m2repository" `
"extras;google;m2repository" `
"extras;google;google_play_services" `
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" `
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1" `
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" `
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1" `
"add-ons;addon-google_apis-google-24" `
"add-ons;addon-google_apis-google-23" `
"add-ons;addon-google_apis-google-22" `
"add-ons;addon-google_apis-google-21" `
"cmake;3.6.4111459" `
"cmake;3.10.2.4988404" `
"patcher;v4" `
"ndk-bundle"
& $sdkManager --sdk_root=$sdkRoot "platform-tools"
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.platform_list `
-PrefixPackageName "platforms;"
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.build_tools `
-PrefixPackageName "build-tools;"
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.extra_list `
-PrefixPackageName "extras;"
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.addon_list `
-PrefixPackageName "add-ons;"
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.additional_tools
# Android NDK root path.
$ndk_root = "C:\Program Files (x86)\Android\android-sdk\ndk-bundle"
$ndkRoot = "C:\Program Files (x86)\Android\android-sdk\ndk-bundle"
if (Test-Path $ndk_root){
setx ANDROID_HOME $sdk_root /M
setx ANDROID_NDK_HOME $ndk_root /M
setx ANDROID_NDK_PATH $ndk_root /M
if (Test-Path $ndkRoot) {
setx ANDROID_HOME $sdkRoot /M
setx ANDROID_NDK_HOME $ndkRoot /M
setx ANDROID_NDK_PATH $ndkRoot /M
} else {
Write-Host "NDK is not installed at path $ndk_root"
exit 1
}
Pop-Location
Invoke-PesterTests -TestFile "Android"

View File

@@ -25,12 +25,12 @@ function Create-AndroidTableObject {
}
function Get-AndroidSDKManagerPath {
return Join-Path $env:ANDROID_HOME "tools" "bin" "sdkmanager.bat"
return Join-Path $env:ANDROID_HOME "tools\bin\sdkmanager.bat"
}
function Get-AndroidInstalledPackages {
$androidSDKManagerPath = Get-AndroidSDKManagerPath
$androidSDKManagerList = & $androidSDKManagerPath --list --include_obsolete
$androidSDKManagerList = & $androidSDKManagerPath --list --include_obsolete --verbose
$androidInstalledPackages = @()
foreach($packageInfo in $androidSDKManagerList) {
if($packageInfo -Match "Available Packages:") {

View File

@@ -0,0 +1,58 @@
Import-Module (Join-Path $PSScriptRoot "..\SoftwareReport\SoftwareReport.Android.psm1") -DisableNameChecking
Describe "Android SDK" {
$androidToolset = (Get-ToolsetContent).android
$androidInstalledPackages = Get-AndroidInstalledPackages
$platformTestCases = @()
$platformList = $androidToolset.platform_list
$platformList | ForEach-Object {
$platformTestCases += @{ platformVersion = $_; installedPackages = $androidInstalledPackages }
}
$buildToolsTestCases = @()
$buildToolsList = $androidToolset.build_tools
$buildToolsList | ForEach-Object {
$buildToolsTestCases += @{ buildToolsVersion = $_; installedPackages = $androidInstalledPackages }
}
$extraPackagesTestCases = @()
$extraPackageList = $androidToolset.extra_list
$extraPackageList | ForEach-Object {
$extraPackagesTestCases += @{ extraPackage = $_; installedPackages = $androidInstalledPackages }
}
$addonsTestCases = @()
$addonsPackageList = $androidToolset.addon_list
$addonsPackageList | ForEach-Object {
$addonsTestCases += @{ addonPackage = $_; installedPackages = $androidInstalledPackages }
}
$additionalToolsTestCases = @()
$additionalToolsList = $androidToolset.additional_tools
$additionalToolsList | ForEach-Object {
$additionalToolsTestCases += @{ additionalToolVersion = $_; installedPackages = $androidInstalledPackages }
}
It "Platform version <platformVersion> is installed" -TestCases $platformTestCases {
"$installedPackages" | Should -Match "platforms;$platformVersion"
}
It "Platform build tools <buildToolsVersion> is installed" -TestCases $buildToolsTestCases {
"$installedPackages" | Should -Match "build-tools;$buildToolsVersion"
}
if (Test-isWin19) {
It "Extra package <extraPackage> is installed" -TestCases $extraPackagesTestCases {
"$installedPackages" | Should -Match "extras;$extraPackage"
}
It "Addon package <addonPackage> is installed" -TestCases $addonsTestCases {
"$installedPackages" | Should -Match "add-ons;$addonPackage"
}
}
It "Additional tool <additionalToolVersion> is installed" -TestCases $additionalToolsTestCases {
"$installedPackages" | Should -Match $additionalToolVersion
}
}

View File

@@ -113,5 +113,34 @@
"4.4.0"
]
}
],
"android": {
"platform_list": [
"android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-19"
],
"build_tools": [
"30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "22.0.1", "21.1.2", "20.0.0", "19.1.0"
],
"extra_list": [
"android;m2repository",
"google;m2repository",
"google;google_play_services",
"m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2",
"m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1",
"m2repository;com;android;support;constraint;constraint-layout;1.0.2",
"m2repository;com;android;support;constraint;constraint-layout;1.0.1"
],
"addon_list": [
"addon-google_apis-google-24",
"addon-google_apis-google-23",
"addon-google_apis-google-22",
"addon-google_apis-google-21"
],
"additional_tools": [
"cmake;3.6.4111459",
"cmake;3.10.2.4988404",
"patcher;v4",
"ndk-bundle"
]
}
}

View File

@@ -122,5 +122,34 @@
"4.4.0"
]
}
],
"android": {
"platform_list": [
"android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-19"
],
"build_tools": [
"30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "22.0.1", "21.1.2", "20.0.0", "19.1.0"
],
"extra_list": [
"android;m2repository",
"google;m2repository",
"google;google_play_services",
"m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2",
"m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1",
"m2repository;com;android;support;constraint;constraint-layout;1.0.2",
"m2repository;com;android;support;constraint;constraint-layout;1.0.1"
],
"addon_list": [
"addon-google_apis-google-24",
"addon-google_apis-google-23",
"addon-google_apis-google-22",
"addon-google_apis-google-21"
],
"additional_tools": [
"cmake;3.6.4111459",
"cmake;3.10.2.4988404",
"patcher;v4",
"ndk-bundle"
]
}
}