Import-Module (Join-Path $PSScriptRoot "..\SoftwareReport\SoftwareReport.Android.psm1") -DisableNameChecking Describe "Android SDK" { $androidToolset = (Get-ToolsetContent).android $androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath) $androidInstalledPackages = Get-AndroidInstalledPackages $ndkDefaultMajorVersion = $androidToolset.ndk.default $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultMajorVersion.*" -Name | Select-Object -Last 1 $ndkVersions = $androidToolset.ndk.versions $ndkPackagesTestCases = $ndkVersions | ForEach-Object { @{ ndkPackage = $_; installedPackages = $androidInstalledPackages } } $platformTestCases = @() [int]$platformMinVersion = $androidToolset.platform_min_version $platformListByVersion = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` -PrefixPackageName "platforms;" ` -MinimumVersion $platformMinVersion ` -Delimiter "-" ` -Index 1 $platformListByName = Get-AndroidPackagesByName -AndroidPackages $androidPackages ` -PrefixPackageName "platforms;" | Where-Object {$_ -match "-\D+$"} $platformList = $platformListByVersion + $platformListByName $platformList | ForEach-Object { $platformTestCases += @{ platformVersion = $_; installedPackages = $androidInstalledPackages } } $buildToolsTestCases = @() [version]$buildToolsMinVersion = $androidToolset.build_tools_min_version $buildToolsList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` -PrefixPackageName "build-tools;" ` -MinimumVersion $buildToolsMinVersion ` -Delimiter ";" ` -Index 1 $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 } } Context "SDKManagers" { $testCases = @( @{ PackageName = "SDK tools" Sdkmanager = "$env:ANDROID_HOME\tools\bin\sdkmanager.bat" }, @{ PackageName = "Command-line tools" Sdkmanager = "$env:ANDROID_HOME\cmdline-tools\latest\bin\sdkmanager.bat" } ) It "Sdkmanager from is available" -TestCases $testCases { "$Sdkmanager --list" | Should -ReturnZeroExitCode } } Context "Packages" { It "Platform version is installed" -TestCases $platformTestCases { "$installedPackages" | Should -Match "$platformVersion" } It "Platform build tools is installed" -TestCases $buildToolsTestCases { "$installedPackages" | Should -Match "$buildToolsVersion" } if (Test-IsWin19) { It "Extra package is installed" -TestCases $extraPackagesTestCases { "$installedPackages" | Should -Match "extras;$extraPackage" } It "Addon package is installed" -TestCases $addonsTestCases { "$installedPackages" | Should -Match "add-ons;$addonPackage" } } It "Additional tool is installed" -TestCases $additionalToolsTestCases { "$installedPackages" | Should -Match $additionalToolVersion } It "NDK is installed" -TestCases $ndkPackagesTestCases { "$installedPackages" | Should -Match "ndk;$ndkPackage" } It "ndk-bundle points to the default NDK version" -TestCases @{ ndkDefaultVersion = $ndkDefaultFullVersion } { $ndkLinkTarget = (Get-Item $env:ANDROID_NDK_HOME).Target $ndkVersion = Split-Path -Path $ndkLinkTarget -Leaf $ndkVersion | Should -BeExactly $ndkDefaultVersion } } }