$ErrorActionPreference = 'Stop' $taskRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path $taskBuild = Join-Path $taskRoot 'app/build/workspace-verification' $taskJava = 'C:/Program Files/Android/Android Studio/jbr/bin/java.exe' $taskKotlin = 'C:/Program Files/Android/Android Studio/plugins/Kotlin/kotlinc/lib' $taskArgs = @(Get-Content (Join-Path $taskBuild 'test-current.args') | Where-Object { $_ -notmatch '^".*\.(kt|java)"$' } | ForEach-Object { $_.Trim('"') }) $taskJars = @(Get-ChildItem 'C:/Users/COMPUTER1/.gradle/caches' -Filter 'classes.jar' -Recurse | Where-Object { $_.FullName -match 'transformed[\\/](ui-test-release|ui-test-junit4-release|monitor-1.6.1|espresso-core-3.5.1|runner-1.5.2)[\\/]' } | Group-Object { $_.Directory.Parent.Name } | ForEach-Object { $_.Group[0].FullName.Replace('\', '/') }) $taskClasspathIndex = [Array]::IndexOf($taskArgs, '-classpath') + 1 if ($taskClasspathIndex -le 0 -or $taskJars.Count -lt 5) { throw 'UI test compiler dependencies unavailable' } $taskArgs[$taskClasspathIndex] += ';' + ($taskJars -join ';') $taskOutputIndex = [Array]::IndexOf($taskArgs, '-d') + 1 if ($taskOutputIndex -le 0) { throw 'Missing Kotlin output argument' } $taskArgs[$taskOutputIndex] = (Join-Path $taskBuild 'androidTest-ui').Replace('\', '/') $taskArgs += '-Xplugin=' + $taskKotlin + '/compose-compiler-plugin.jar' $taskArgs += @(Get-ChildItem (Join-Path $taskRoot 'app/src/androidTest/java') -Filter '*.kt' -Recurse | ForEach-Object { $_.FullName.Replace('\', '/') }) $taskArgsFile = Join-Path $taskBuild 'ui-current.args' [System.IO.File]::WriteAllLines($taskArgsFile, @($taskArgs | ForEach-Object { '"' + $_ + '"' })) & $taskJava '-cp' ($taskKotlin + '/*') 'org.jetbrains.kotlin.cli.jvm.K2JVMCompiler' ('@' + $taskArgsFile) 2>&1 | Tee-Object (Join-Path $taskBuild 'ui-current.log') exit $LASTEXITCODE