Files
runner-images/images/linux/scripts/tests/Android.Tests.ps1
Mikhail Timofeev f1ab1bd12f [Ubuntu] Switch android tools installation to use sdkmanager from command-line tools (#3650)
* Switch android tools installation to cmdline-tools
* Replace deprecated sdkmanger from sdk-tools to the one from cmdline tools
* Remove patcherv4 from toolsets as it's included in m2repository extras

* Add tests to make sure both sdkmanagers exist

* Return cmdline-tools to software readme
* Get-AndroidInstalledPackages function now use list_installed param
* Create a function to get sdkmanager version = cmdline tools version

* Get rid of hardcoded path to ANDROID_HOME
* Add reloadEtcEnvironment call to installation script
* Use env variable ANDROID_HOME in tests

* Modify software report to output any version

* Change regex pattern to output the group
* Currently the function returns 4. instead of 4.0, this change fixes it
2021-07-07 15:16:46 +03:00

76 lines
3.4 KiB
PowerShell

Describe "Android" {
$androidSdkManagerPackages = Get-AndroidPackages
[int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version"
[version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version"
[string]$ndkLTSVersion = Get-ToolsetValue "android.ndk.lts"
$ndkLTSFullVersion = (Get-ChildItem "/usr/local/lib/android/sdk/ndk/$ndkLTSVersion.*" | Select-Object -Last 1).Name
$platformVersionsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;android-', ''
$platformNumericList = $platformVersionsList | Where-Object { $_ -match "\d+" } | Where-Object { [int]$_ -ge $platformMinVersion } | Sort-Object -Unique
$platformLetterList = $platformVersionsList | Where-Object { $_ -match "\D+" } | Sort-Object -Unique
$platforms = $platformNumericList + $platformLetterList | ForEach-Object { "platforms/android-${_}" }
$buildToolsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("build-tools;") }) -replace 'build-tools;', ''
$buildTools = $buildToolsList | Where-Object { $_ -match "\d+(\.\d+){2,}$"} | Where-Object { [version]$_ -ge $buildToolsMinVersion } | Sort-Object -Unique |
ForEach-Object { "build-tools/${_}" }
$androidPackages = @(
$platforms,
$buildTools,
(Get-ToolsetValue "android.extra_list" | ForEach-Object { "extras/${_}" }),
(Get-ToolsetValue "android.addon_list" | ForEach-Object { "add-ons/${_}" }),
(Get-ToolsetValue "android.additional_tools" | ForEach-Object { "${_}" }),
"ndk/$ndkLTSFullVersion"
)
[string]$ndkLatestVersion = Get-ToolsetValue "android.ndk.latest"
if ($ndkLatestVersion) {
$ndkLatestFullVersion = (Get-ChildItem "/usr/local/lib/android/sdk/ndk/$ndkLatestVersion.*" | Select-Object -Last 1).Name
$androidPackages += @("ndk/$ndkLatestFullVersion")
}
$androidPackages = $androidPackages | ForEach-Object { $_ }
BeforeAll {
function Validate-AndroidPackage {
param (
[Parameter(Mandatory=$true)]
[string]$PackageName
)
# Convert 'm2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1' ->
# 'm2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta1'
# 'cmake;3.6.4111459' -> 'cmake/3.6.4111459'
# 'patcher;v4' -> 'patcher/v4'
$PackageName = $PackageName.Replace(";", "/")
$targetPath = Join-Path $env:ANDROID_HOME $PackageName
$targetPath | Should -Exist
}
}
Context "SDKManagers" {
$testCases = @(
@{
PackageName = "SDK tools"
Sdkmanager = "$env:ANDROID_HOME/tools/bin/sdkmanager"
},
@{
PackageName = "Command-line tools"
Sdkmanager = "$env:ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
}
)
It "Sdkmanager from <PackageName> is available" -TestCases $testCases {
"$Sdkmanager --version" | Should -ReturnZeroExitCode
}
}
Context "Packages" {
$testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } }
It "<PackageName>" -TestCases $testCases {
param ([string] $PackageName)
Validate-AndroidPackage $PackageName
}
}
}