@@ -11,11 +11,14 @@ import (
11
11
"github.com/bitrise-io/go-utils/pathutil"
12
12
"github.com/bitrise-io/go-utils/sliceutil"
13
13
"github.com/bitrise-steplib/bitrise-step-android-unit-test/cache"
14
+ "github.com/bitrise-steplib/bitrise-step-android-unit-test/testaddon"
14
15
"github.com/bitrise-tools/go-android/gradle"
15
16
"github.com/bitrise-tools/go-steputils/stepconf"
16
17
shellquote "github.com/kballard/go-shellquote"
17
18
)
18
19
20
+ const resultArtifactPathPattern = "*TEST*.xml"
21
+
19
22
// Configs ...
20
23
type Configs struct {
21
24
ProjectLocation string `env:"project_location,dir"`
@@ -32,9 +35,13 @@ func failf(f string, args ...interface{}) {
32
35
os .Exit (1 )
33
36
}
34
37
35
- func getArtifacts (gradleProject gradle.Project , started time.Time , pattern string ) (artifacts []gradle.Artifact , err error ) {
38
+ func getArtifacts (gradleProject gradle.Project , started time.Time , pattern string , includeModuleName bool , isDirectoryMode bool ) (artifacts []gradle.Artifact , err error ) {
36
39
for _ , t := range []time.Time {started , time.Time {}} {
37
- artifacts , err = gradleProject .FindDirs (t , pattern , true )
40
+ if isDirectoryMode {
41
+ artifacts , err = gradleProject .FindDirs (t , pattern , includeModuleName )
42
+ } else {
43
+ artifacts , err = gradleProject .FindArtifacts (t , pattern , includeModuleName )
44
+ }
38
45
if err != nil {
39
46
return
40
47
}
@@ -173,7 +180,7 @@ func main() {
173
180
log .Infof ("Export reports:" )
174
181
fmt .Println ()
175
182
176
- reports , err := getArtifacts (gradleProject , started , config .ReportPathPattern )
183
+ reports , err := getArtifacts (gradleProject , started , config .ReportPathPattern , true , true )
177
184
if err != nil {
178
185
failf ("Failed to find reports, error: %v" , err )
179
186
}
@@ -187,7 +194,7 @@ func main() {
187
194
log .Infof ("Export results:" )
188
195
fmt .Println ()
189
196
190
- results , err := getArtifacts (gradleProject , started , config .ResultPathPattern )
197
+ results , err := getArtifacts (gradleProject , started , config .ResultPathPattern , true , true )
191
198
if err != nil {
192
199
failf ("Failed to find results, error: %v" , err )
193
200
}
@@ -196,6 +203,30 @@ func main() {
196
203
failf ("Failed to export results, error: %v" , err )
197
204
}
198
205
206
+ log .Infof ("Export test results for test addon:" )
207
+ fmt .Println ()
208
+
209
+ resultXMLs , err := getArtifacts (gradleProject , started , resultArtifactPathPattern , false , false )
210
+ if err != nil {
211
+ log .Warnf ("Failed to find test result XMLs, error: %s" , err )
212
+ } else {
213
+ if baseDir := os .Getenv ("BITRISE_TEST_RESULT_DIR" ); baseDir != "" {
214
+ for _ , artifact := range resultXMLs {
215
+ uniqueDir , err := getUniqueDir (artifact .Path )
216
+ if err != nil {
217
+ log .Warnf ("Failed to export test results for test addon: cannot get export directory for artifact (%s): %s" , err )
218
+ continue
219
+ }
220
+
221
+ if err := testaddon .ExportArtifact (artifact .Path , baseDir , uniqueDir ); err != nil {
222
+ log .Warnf ("Failed to export test results for test addon: %s" , err )
223
+ }
224
+ }
225
+ log .Printf (" Exporting test results to test addon successful [ %s ] " , baseDir )
226
+ }
227
+ }
228
+
229
+
199
230
if testErr != nil {
200
231
os .Exit (1 )
201
232
}
@@ -206,4 +237,4 @@ func main() {
206
237
log .Warnf ("%s" , warning )
207
238
}
208
239
log .Donef (" Done" )
209
- }
240
+ }
0 commit comments