Skip to content

Commit fd8336c

Browse files
pjcollinsjonpryor
authored andcommitted
[tests] Add .apk test job to azure-pipelines.yaml (#3042)
Adds a `Test` stage to `build-tools/automation/azure-pipelines.yaml`. At present, this stage only contains one test job, which builds and runs the following emulator tests: * Mono.Android_Tests * Mono.Android-Tests (AOT + LLVM) * Mono.Android-Tests (Bundle) * Mono.Android-Tests (Profiled AOT) * Mono.Android_TestsAppBundle * Mono.Android_TestsMultiDex * Xamarin.Android.JcwGen_Tests * Xamarin.Android.Locale_Tests * Xamarin.Android.Locale-Tests (AOT) * Xamarin.Android.Locale-Tests (Profiled AOT) * Xamarin.Android.EmbeddedDSO_Test * Xamarin.Forms.Performance.Integration.Droid * Xamarin.Forms.Performance.Integration.Droid (AOT) * Xamarin.Forms.Performance.Integration.Droid (Profiled AOT) * Xamarin.Forms.Performance.Integration.Droid (Bundle) Note in particular that the BCL tests are currently absent. Execution of the BCL Test suite will also need to be added to the `Test` stage in the future. Other Fixes: * Introductory support has been added for running `.apk` tests against a *system* Xamarin.Android installation. We can now build and run `Xamarin.Android.JcwGen_Tests`, `Mono.Android_Tests`, and `Xamarin.Forms.Performance.Integration.Droid` tests against a system installation of Xamarin.Android. * Produce an error when any test failures occur during instrumentation. The instrumentation exit code value of `-1` indicates success, and any other values returned here should be reported as errors. A non `-1` value indicates that crash or test failure occurred. * Produce an error if `adb logcat` timing data can't be parsed. We'll now error out when parsing `adb logcat` for timing data if the running application died, or if we fail to detect application startup. * Don't always report `adb logcat` stderr as a warning `adb` invocations are prone to returning non zero exit codes even when they are successful. This can make our MSBuild output a bit noisy [^0] when they are invoked using the `<Adb/>` task. The new optional `Adb.WriteOutputAsMessage` property can now be provided to the adb task, so that we don't always write messages coming from stderr as MSBuild warnings. This is used in our targets which wait for emulator startup to make it easier to detect real failures in test instrumentation and emulator startup. [^0]: Example warnings: …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_trace.cpp:192] Android Debug Bridge version 1.0.40 …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_trace.cpp:192] Version 28.0.2-5303910 …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_trace.cpp:192] Installed as /Users/peter/android-toolchain/sdk/platform-tools/adb …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_trace.cpp:192] …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_client.cpp:287] adb_query: host-serial:emulator-5570:features …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_client.cpp:137] _adb_connect: host:version …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_io.cpp:107] writex: fd=3 len=16 30303063686f73743a76657273696f6e 000chost:version …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_io.cpp:81] readx: fd=3 wanted=4 …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_io.cpp:97] readx: fd=3 wanted=4 got=4 4f4b4159 OKAY …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_client.cpp:165] _adb_connect: return fd 3 …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_client.cpp:197] adb_connect: service host-serial:emulator-5570:features …/xamarin-android/build-tools/scripts/TestApks.targets(68,5): warning : adb D 04-29 15:10:48 3527 42649 adb_io.cpp:81] readx: fd=3 wanted=4
1 parent fc27101 commit fd8336c

File tree

13 files changed

+306
-20
lines changed

13 files changed

+306
-20
lines changed

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Adb.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ protected class CommandInfo
4343
public bool IgnoreExitCode { get; set; }
4444
public int Timeout { get; set; } = -1;
4545
public string[] EnvironmentVariables { get; set; }
46+
public bool WriteOutputAsMessage { get; set; } = false;
4647

4748
[Required]
4849
public string ToolPath { get; set; }
@@ -147,7 +148,7 @@ void OnOutput (string line, bool isStdout, CommandInfo info)
147148
lock (linesLock) lines.Add (line);
148149

149150
if (!info.SuppressMSbuildLog) {
150-
if (isStdout)
151+
if (isStdout || WriteOutputAsMessage)
151152
Log.LogMessage (MessageImportance.Low, line);
152153
else
153154
Log.LogWarning (line);

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/RenameTestCases.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ string GetFixedUpPath (string source, string testNameSuffix)
7474
{
7575
var destFilename = Path.GetFileNameWithoutExtension (source) +
7676
(string.IsNullOrWhiteSpace (Configuration) ? "" : "-" + Configuration) +
77+
(string.IsNullOrWhiteSpace (TestsFlavor) ? "" : TestsFlavor) +
7778
Path.GetExtension (source);
7879
var dest = Path.Combine (DestinationFolder, destFilename);
7980
return dest;

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/RunInstrumentationTests.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class RunInstrumentationTests : Adb
1414
const string TestResultsPathResult = "INSTRUMENTATION_RESULT: nunit2-results-path=";
1515
internal const string AdbRestartText = "daemon not running; starting now at tcp:";
1616
internal const string AdbCrashErrorText = "The adb might have crashed and was restarted. ";
17+
const string InstrumentationExitCodeName = "INSTRUMENTATION_CODE: ";
1718
const int StateRunInstrumentation = 0;
1819
const int StateGetLogcat = 1;
1920
const int StateClearLogcat = 2;
@@ -41,6 +42,7 @@ public class RunInstrumentationTests : Adb
4142
public string LogLevel { get; set; }
4243

4344
int currentState = -1;
45+
int instrumentationExitCode = 99;
4446
string targetTestResultsPath;
4547

4648
bool adbRestarted;
@@ -68,6 +70,14 @@ public override bool Execute ()
6870
return false;
6971
}
7072

73+
if (instrumentationExitCode != -1) {
74+
FailedToRun = Component;
75+
Log.LogError (
76+
$"Instrumentation for component `{Component}` did not exit successfully. " +
77+
"Process crashed or test failures occurred!");
78+
return false;
79+
}
80+
7181
return !Log.HasLoggedErrors;
7282
}
7383

@@ -134,11 +144,15 @@ protected override void ProcessStdout (string line)
134144
if (currentState != StateRunInstrumentation || String.IsNullOrEmpty (line))
135145
return;
136146

137-
int i = line.IndexOf (TestResultsPathResult, StringComparison.OrdinalIgnoreCase);
138-
if (i < 0)
139-
return;
147+
int testResultIndex = line.IndexOf (TestResultsPathResult, StringComparison.OrdinalIgnoreCase);
148+
int exitCodeIndex = line.IndexOf (InstrumentationExitCodeName, StringComparison.OrdinalIgnoreCase);
140149

141-
targetTestResultsPath = line.Substring (i + TestResultsPathResult.Length).Trim ();
150+
if (testResultIndex < 0 && exitCodeIndex < 0)
151+
return;
152+
else if (testResultIndex >= 0)
153+
targetTestResultsPath = line.Substring (testResultIndex + TestResultsPathResult.Length).Trim ();
154+
else if (exitCodeIndex >= 0)
155+
instrumentationExitCode = int.Parse (line.Substring (exitCodeIndex + InstrumentationExitCodeName.Length).Trim ());
142156
}
143157
}
144158
}

build-tools/Xamarin.Android.Tools.BootstrapTasks/result-packaging.targets

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)Configuration.OperatingSystem.props" Condition="Exists('$(XamarinAndroidSourcePath)Configuration.OperatingSystem.props')" />
77
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)Configuration.Override.props" Condition="Exists('$(XamarinAndroidSourcePath)Configuration.Override.props')" />
88
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\XABuildConfig.cs" Condition="Exists('$(XamarinAndroidSourcePath)bin\Build$(Configuration)\XABuildConfig.cs')" />
9-
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\msbuild*.binlog" />
10-
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\bootstrap*.binlog" />
9+
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\*.binlog" />
1110
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\prepare*.log" />
1211
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\*.mk" />
1312
<_BuildStatusFiles Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\*.projitems" />
@@ -27,7 +26,7 @@
2726
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\*.log" />
2827
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\compatibility\*" />
2928
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\logcat*" />
30-
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\msbuild*.binlog*" />
29+
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\*.binlog" />
3130
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\temp\**\*.binlog" />
3231
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\temp\**\*.log" />
3332
<_TestResultFiles Include="$(XamarinAndroidSourcePath)bin\Test$(Configuration)\EmbeddedDSO\EmbeddedDSO.build\**\*" />

build-tools/automation/azure-pipelines.yaml

Lines changed: 205 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ trigger:
99
# Global variables
1010
variables:
1111
BundleArtifactName: bundle
12+
InstallerArtifactName: unsigned-installers
1213
AutoProvisionArgs: /p:AutoProvision=True /p:AutoProvisionUsesSudo=True /p:IgnoreMaxMonoVersion=False
1314
AndroidTargetAbiArgs: >-
1415
/p:AndroidSupportedTargetJitAbis=armeabi-v7a:arm64-v8a:x86:x86_64
@@ -122,7 +123,7 @@ stages:
122123
- task: PublishPipelineArtifact@0
123124
displayName: upload unsigned installers
124125
inputs:
125-
artifactName: unsigned
126+
artifactName: $(InstallerArtifactName)
126127
targetPath: bin/Build$(XA.Build.Configuration)/unsigned-installers
127128

128129
- task: MSBuild@1
@@ -215,7 +216,6 @@ stages:
215216
testResultsFormat: NUnit
216217
testResultsFiles: TestResult-*.xml
217218
testRunTitle: xamarin-android
218-
failTaskOnFailedTests: true
219219
condition: succeededOrFailed()
220220

221221
- task: MSBuild@1
@@ -232,3 +232,206 @@ stages:
232232
artifactName: win-build-test-results
233233
targetPath: $(Build.ArtifactStagingDirectory)
234234
condition: always()
235+
236+
- stage: test
237+
displayName: Test
238+
dependsOn: mac_build
239+
jobs:
240+
- job: mac_apk_tests
241+
displayName: APK Instrumentation
242+
pool: $(XA.Build.Mac.Pool)
243+
timeoutInMinutes: 240
244+
cancelTimeoutInMinutes: 5
245+
workspace:
246+
clean: all
247+
variables:
248+
ApkTestConfiguration: Release
249+
steps:
250+
- task: DownloadPipelineArtifact@1
251+
inputs:
252+
artifactName: $(InstallerArtifactName)
253+
itemPattern: "*.pkg"
254+
downloadPath: $(System.DefaultWorkingDirectory)
255+
256+
- template: yaml-templates/run-installer.yaml
257+
258+
- task: MSBuild@1
259+
displayName: build xaprepare
260+
inputs:
261+
solution: build-tools/xaprepare/xaprepare.sln
262+
configuration: $(ApkTestConfiguration)
263+
msbuildArguments: /t:Restore,Build
264+
265+
- script: |
266+
mono build-tools/xaprepare/xaprepare/bin/$(ApkTestConfiguration)/xaprepare.exe --s=UpdateMono --auto-provision=yes --auto-provision-uses-sudo=yes --no-emoji --run-mode=CI
267+
mono build-tools/xaprepare/xaprepare/bin/$(ApkTestConfiguration)/xaprepare.exe --s=Required --auto-provision=yes --auto-provision-uses-sudo=yes --no-emoji --run-mode=CI
268+
mono build-tools/xaprepare/xaprepare/bin/$(ApkTestConfiguration)/xaprepare.exe --s=AndroidToolchain --no-emoji --run-mode=CI
269+
displayName: provision dependencies
270+
271+
- task: NuGetCommand@2
272+
displayName: nuget restore Xamarin.Android.Tools.sln
273+
inputs:
274+
restoreSolution: external/xamarin-android-tools/Xamarin.Android.Tools.sln
275+
276+
- task: MSBuild@1
277+
displayName: build Xamarin.Android.Tools.BootstrapTasks.csproj
278+
inputs:
279+
solution: build-tools/xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj
280+
configuration: $(ApkTestConfiguration)
281+
msbuildArguments: /bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/BootstrapTasks.binlog
282+
283+
- task: NuGetCommand@2
284+
displayName: nuget restore Xamarin.Android-Tests.sln
285+
inputs:
286+
restoreSolution: Xamarin.Android-Tests.sln
287+
288+
- template: yaml-templates/apk-instrumentation.yaml
289+
parameters:
290+
configuration: $(ApkTestConfiguration)
291+
testName: Mono.Android_Tests
292+
project: src/Mono.Android/Test/Mono.Android-Tests.csproj
293+
testResultsFiles: TestResult-Mono.Android_Tests-$(ApkTestConfiguration).xml
294+
295+
- template: yaml-templates/apk-instrumentation.yaml
296+
parameters:
297+
configuration: $(ApkTestConfiguration)
298+
testName: Mono.Android_Tests-Aot
299+
project: src/Mono.Android/Test/Mono.Android-Tests.csproj
300+
testResultsFiles: TestResult-Mono.Android_Tests-$(ApkTestConfiguration)-Aot.xml
301+
extraBuildArgs: /p:AotAssemblies=True /p:EnableLlvm=True
302+
303+
- template: yaml-templates/apk-instrumentation.yaml
304+
parameters:
305+
configuration: $(ApkTestConfiguration)
306+
testName: Mono.Android_Tests-Profiled
307+
project: src/Mono.Android/Test/Mono.Android-Tests.csproj
308+
testResultsFiles: TestResult-Mono.Android_Tests-$(ApkTestConfiguration)-Profiled.xml
309+
extraBuildArgs: /p:AndroidEnableProfiledAot=true
310+
311+
- template: yaml-templates/apk-instrumentation.yaml
312+
parameters:
313+
configuration: $(ApkTestConfiguration)
314+
testName: Mono.Android_Tests-Bundle
315+
project: src/Mono.Android/Test/Mono.Android-Tests.csproj
316+
testResultsFiles: TestResult-Mono.Android_Tests-$(ApkTestConfiguration)-Bundle.xml
317+
extraBuildArgs: /p:BundleAssemblies=true
318+
319+
- template: yaml-templates/apk-instrumentation.yaml
320+
parameters:
321+
configuration: $(ApkTestConfiguration)
322+
testName: Mono.Android_TestsAppBundle
323+
project: tests/Runtime-AppBundle/Mono.Android-TestsAppBundle.csproj
324+
testResultsFiles: TestResult-Mono.Android_TestsAppBundle-$(ApkTestConfiguration).xml
325+
packageType: Aab
326+
327+
- template: yaml-templates/apk-instrumentation.yaml
328+
parameters:
329+
configuration: $(ApkTestConfiguration)
330+
testName: Mono.Android_TestsMultiDex
331+
project: tests/Runtime-MultiDex/Mono.Android-TestsMultiDex.csproj
332+
testResultsFiles: TestResult-Mono.Android_TestsMultiDex-$(ApkTestConfiguration).xml
333+
334+
- template: yaml-templates/apk-instrumentation.yaml
335+
parameters:
336+
configuration: $(ApkTestConfiguration)
337+
testName: Xamarin.Android.JcwGen_Tests
338+
project: tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/Xamarin.Android.JcwGen-Tests.csproj
339+
testResultsFiles: TestResult-Xamarin.Android.JcwGen_Tests-$(ApkTestConfiguration).xml
340+
341+
- template: yaml-templates/apk-instrumentation.yaml
342+
parameters:
343+
configuration: $(ApkTestConfiguration)
344+
testName: Xamarin.Android.Locale_Tests
345+
project: tests/locales/Xamarin.Android.Locale-Tests/Xamarin.Android.Locale-Tests.csproj
346+
testResultsFiles: TestResult-Xamarin.Android.Locale_Tests-$(ApkTestConfiguration).xml
347+
348+
- template: yaml-templates/apk-instrumentation.yaml
349+
parameters:
350+
configuration: $(ApkTestConfiguration)
351+
testName: Xamarin.Android.Locale_Tests-Aot
352+
project: tests/locales/Xamarin.Android.Locale-Tests/Xamarin.Android.Locale-Tests.csproj
353+
testResultsFiles: TestResult-Xamarin.Android.Locale_Tests-$(ApkTestConfiguration)-Aot.xml
354+
extraBuildArgs: /p:AotAssemblies=True
355+
356+
- template: yaml-templates/apk-instrumentation.yaml
357+
parameters:
358+
configuration: $(ApkTestConfiguration)
359+
testName: Xamarin.Android.Locale_Tests-Profiled
360+
project: tests/locales/Xamarin.Android.Locale-Tests/Xamarin.Android.Locale-Tests.csproj
361+
testResultsFiles: TestResult-Xamarin.Android.Locale_Tests-$(ApkTestConfiguration)-Profiled.xml
362+
extraBuildArgs: /p:AndroidEnableProfiledAot=true
363+
364+
- template: yaml-templates/apk-instrumentation.yaml
365+
parameters:
366+
configuration: $(ApkTestConfiguration)
367+
testName: Xamarin.Android.EmbeddedDSO_Test
368+
project: tests/EmbeddedDSOs/EmbeddedDSO/EmbeddedDSO.csproj
369+
testResultsFiles: TestResult-Xamarin.Android.EmbeddedDSO_Test.nunit-$(ApkTestConfiguration).xml
370+
371+
- task: MSBuild@1
372+
displayName: run Xamarin.Forms-Performance-Integration
373+
inputs:
374+
solution: tests/Xamarin.Forms-Performance-Integration/Droid/Xamarin.Forms.Performance.Integration.Droid.csproj
375+
configuration: $(ApkTestConfiguration)
376+
msbuildArguments: >
377+
/t:AcquireAndroidTarget,SignAndroidPackage,UndeployTestApks,DeployTestApks,RunTestApks,ReportComponentFailures
378+
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/XamarinFormsPerf.binlog
379+
condition: succeededOrFailed()
380+
381+
- task: MSBuild@1
382+
displayName: run Xamarin.Forms-Performance-Integration-Aot
383+
inputs:
384+
solution: tests/Xamarin.Forms-Performance-Integration/Droid/Xamarin.Forms.Performance.Integration.Droid.csproj
385+
configuration: $(ApkTestConfiguration)
386+
msbuildArguments: >
387+
/t:AcquireAndroidTarget,SignAndroidPackage,UndeployTestApks,DeployTestApks,RunTestApks,ReportComponentFailures
388+
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/XamarinFormsPerf-Aot.binlog
389+
/p:AotAssemblies=true
390+
condition: succeededOrFailed()
391+
392+
- task: MSBuild@1
393+
displayName: run Xamarin.Forms-Performance-Integration-Profiled
394+
inputs:
395+
solution: tests/Xamarin.Forms-Performance-Integration/Droid/Xamarin.Forms.Performance.Integration.Droid.csproj
396+
configuration: $(ApkTestConfiguration)
397+
msbuildArguments: >
398+
/t:AcquireAndroidTarget,SignAndroidPackage,UndeployTestApks,DeployTestApks,RunTestApks,ReportComponentFailures
399+
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/XamarinFormsPerf-Profiled.binlog
400+
/p:AndroidEnableProfiledAot=true
401+
condition: succeededOrFailed()
402+
403+
- task: MSBuild@1
404+
displayName: run Xamarin.Forms-Performance-Integration-Bundle
405+
inputs:
406+
solution: tests/Xamarin.Forms-Performance-Integration/Droid/Xamarin.Forms.Performance.Integration.Droid.csproj
407+
configuration: $(ApkTestConfiguration)
408+
msbuildArguments: >
409+
/t:AcquireAndroidTarget,SignAndroidPackage,UndeployTestApks,DeployTestApks,RunTestApks,ReportComponentFailures
410+
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/XamarinFormsPerf-Bundle.binlog
411+
/p:BundleAssemblies=true
412+
condition: succeededOrFailed()
413+
414+
- task: MSBuild@1
415+
displayName: shut down emulator
416+
inputs:
417+
solution: src/Mono.Android/Test/Mono.Android-Tests.csproj
418+
configuration: $(ApkTestConfiguration)
419+
msbuildArguments: >
420+
/t:AcquireAndroidTarget,ReleaseAndroidTarget
421+
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(ApkTestConfiguration)/shutdown-emulator.binlog
422+
condition: always()
423+
424+
- task: MSBuild@1
425+
displayName: package results
426+
inputs:
427+
solution: build-tools/xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj
428+
configuration: $(ApkTestConfiguration)
429+
msbuildArguments: /t:ZipBuildStatus;ZipTestResults /p:BuildStatusZipOutputPath=$(Build.ArtifactStagingDirectory) /p:TestResultZipOutputPath=$(Build.ArtifactStagingDirectory)
430+
condition: always()
431+
432+
- task: PublishPipelineArtifact@0
433+
displayName: upload artifacts
434+
inputs:
435+
artifactName: mac-apk-test-results
436+
targetPath: $(Build.ArtifactStagingDirectory)
437+
condition: always()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
parameters:
2+
configuration: []
3+
testName: []
4+
project: []
5+
testResultsFiles: []
6+
extraBuildArgs: ""
7+
testResultsFormat: NUnit
8+
packageType: Apk
9+
10+
steps:
11+
- task: MSBuild@1
12+
displayName: run ${{ parameters.testName }}
13+
inputs:
14+
solution: ${{ parameters.project }}
15+
configuration: ${{ parameters.configuration }}
16+
msbuildArguments: >
17+
/t:AcquireAndroidTarget,SignAndroidPackage,UndeployTestApks,DeployTest${{ parameters.packageType }}s,RunTestApks,RenameApkTestCases,ReportComponentFailures
18+
/bl:$(System.DefaultWorkingDirectory)/bin/Test${{ parameters.configuration }}/run${{ parameters.testName }}.binlog
19+
${{ parameters.extraBuildArgs }}
20+
condition: succeededOrFailed()
21+
22+
- task: PublishTestResults@2
23+
displayName: publish ${{ parameters.testName }} results
24+
inputs:
25+
testResultsFormat: ${{ parameters.testResultsFormat }}
26+
testResultsFiles: ${{ parameters.testResultsFiles }}
27+
testRunTitle: ${{ parameters.testName }}
28+
condition: succeededOrFailed()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
parameters:
2+
artifactDirectory: $(System.DefaultWorkingDirectory)
3+
4+
steps:
5+
- powershell: |
6+
if ([Environment]::OSVersion.Platform -eq "Unix") {
7+
$installer = Get-ChildItem -Path "${{ parameters.artifactDirectory }}/*" -Include *.pkg -File
8+
} else {
9+
$installer = Get-ChildItem -Path "${{ parameters.artifactDirectory }}\*" -Include *.vsix -File
10+
}
11+
if (![System.IO.File]::Exists($installer)) {
12+
throw [System.IO.FileNotFoundException] "Installer not found in $artifactDirectory."
13+
}
14+
Write-Host "##vso[task.setvariable variable=XA.Provisionator.Args]$installer"
15+
displayName: find installer and set provisionator variable
16+
17+
- task: provisionator@2
18+
inputs:
19+
provisionator_uri: $(provisionator-uri)
20+
github_token: $(GitHub.Token)
21+
provisioning_script: $(XA.Provisionator.Args)
22+
provisioning_extra_args: -vv

build-tools/scripts/Jar.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<_JavacSourceVersion Condition=" '$(_JavacSourceVersion)' == '' ">1.5</_JavacSourceVersion>
88
<_JavacTargetVersion Condition="$(_JdkVersion.StartsWith ('9'))">1.8</_JavacTargetVersion>
99
<_JavacTargetVersion Condition=" '$(_JavacTargetVersion)' == '' ">1.6</_JavacTargetVersion>
10+
<JarPath Condition=" '$(JarPath)' == '' ">$(JavaSdkDirectory)\bin\jar</JarPath>
11+
<JavaCPath Condition=" '$(JavaCPath)' == '' ">$(JavaSdkDirectory)\bin\javac</JavaCPath>
1012
</PropertyGroup>
1113
</Target>
1214
<Target Name="BuildTestJarFile"

0 commit comments

Comments
 (0)