xref: /aosp_15_r20/build/soong/java/jacoco_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2017 Google Inc. All rights reserved.
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage java
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport "testing"
18*333d2b36SAndroid Build Coastguard Worker
19*333d2b36SAndroid Build Coastguard Workerfunc TestJacocoFilterToSpecs(t *testing.T) {
20*333d2b36SAndroid Build Coastguard Worker	testCases := []struct {
21*333d2b36SAndroid Build Coastguard Worker		name, in, out string
22*333d2b36SAndroid Build Coastguard Worker	}{
23*333d2b36SAndroid Build Coastguard Worker		{
24*333d2b36SAndroid Build Coastguard Worker			name: "class",
25*333d2b36SAndroid Build Coastguard Worker			in:   "package.Class",
26*333d2b36SAndroid Build Coastguard Worker			out:  "package/Class.class",
27*333d2b36SAndroid Build Coastguard Worker		},
28*333d2b36SAndroid Build Coastguard Worker		{
29*333d2b36SAndroid Build Coastguard Worker			name: "class wildcard",
30*333d2b36SAndroid Build Coastguard Worker			in:   "package.Class*",
31*333d2b36SAndroid Build Coastguard Worker			out:  "package/Class*.class",
32*333d2b36SAndroid Build Coastguard Worker		},
33*333d2b36SAndroid Build Coastguard Worker		{
34*333d2b36SAndroid Build Coastguard Worker			name: "package wildcard",
35*333d2b36SAndroid Build Coastguard Worker			in:   "package.*",
36*333d2b36SAndroid Build Coastguard Worker			out:  "package/*.class",
37*333d2b36SAndroid Build Coastguard Worker		},
38*333d2b36SAndroid Build Coastguard Worker		{
39*333d2b36SAndroid Build Coastguard Worker			name: "package recursive wildcard",
40*333d2b36SAndroid Build Coastguard Worker			in:   "package.**",
41*333d2b36SAndroid Build Coastguard Worker			out:  "package/**/*.class",
42*333d2b36SAndroid Build Coastguard Worker		},
43*333d2b36SAndroid Build Coastguard Worker		{
44*333d2b36SAndroid Build Coastguard Worker			name: "recursive wildcard only",
45*333d2b36SAndroid Build Coastguard Worker			in:   "**",
46*333d2b36SAndroid Build Coastguard Worker			out:  "**/*.class",
47*333d2b36SAndroid Build Coastguard Worker		},
48*333d2b36SAndroid Build Coastguard Worker		{
49*333d2b36SAndroid Build Coastguard Worker			name: "single wildcard only",
50*333d2b36SAndroid Build Coastguard Worker			in:   "*",
51*333d2b36SAndroid Build Coastguard Worker			out:  "*.class",
52*333d2b36SAndroid Build Coastguard Worker		},
53*333d2b36SAndroid Build Coastguard Worker	}
54*333d2b36SAndroid Build Coastguard Worker
55*333d2b36SAndroid Build Coastguard Worker	for _, testCase := range testCases {
56*333d2b36SAndroid Build Coastguard Worker		t.Run(testCase.name, func(t *testing.T) {
57*333d2b36SAndroid Build Coastguard Worker			got, err := jacocoFilterToSpec(testCase.in)
58*333d2b36SAndroid Build Coastguard Worker			if err != nil {
59*333d2b36SAndroid Build Coastguard Worker				t.Error(err)
60*333d2b36SAndroid Build Coastguard Worker			}
61*333d2b36SAndroid Build Coastguard Worker			if got != testCase.out {
62*333d2b36SAndroid Build Coastguard Worker				t.Errorf("expected %q got %q", testCase.out, got)
63*333d2b36SAndroid Build Coastguard Worker			}
64*333d2b36SAndroid Build Coastguard Worker		})
65*333d2b36SAndroid Build Coastguard Worker	}
66*333d2b36SAndroid Build Coastguard Worker}
67*333d2b36SAndroid Build Coastguard Worker
68*333d2b36SAndroid Build Coastguard Workerfunc TestJacocoFiltersToZipCommand(t *testing.T) {
69*333d2b36SAndroid Build Coastguard Worker	testCases := []struct {
70*333d2b36SAndroid Build Coastguard Worker		name               string
71*333d2b36SAndroid Build Coastguard Worker		includes, excludes []string
72*333d2b36SAndroid Build Coastguard Worker		out                string
73*333d2b36SAndroid Build Coastguard Worker	}{
74*333d2b36SAndroid Build Coastguard Worker		{
75*333d2b36SAndroid Build Coastguard Worker			name:     "implicit wildcard",
76*333d2b36SAndroid Build Coastguard Worker			includes: []string{},
77*333d2b36SAndroid Build Coastguard Worker			out:      "'**/*.class'",
78*333d2b36SAndroid Build Coastguard Worker		},
79*333d2b36SAndroid Build Coastguard Worker		{
80*333d2b36SAndroid Build Coastguard Worker			name:     "only include",
81*333d2b36SAndroid Build Coastguard Worker			includes: []string{"package/Class.class"},
82*333d2b36SAndroid Build Coastguard Worker			out:      "package/Class.class",
83*333d2b36SAndroid Build Coastguard Worker		},
84*333d2b36SAndroid Build Coastguard Worker		{
85*333d2b36SAndroid Build Coastguard Worker			name:     "multiple includes",
86*333d2b36SAndroid Build Coastguard Worker			includes: []string{"package/Class.class", "package2/Class.class"},
87*333d2b36SAndroid Build Coastguard Worker			out:      "package/Class.class package2/Class.class",
88*333d2b36SAndroid Build Coastguard Worker		},
89*333d2b36SAndroid Build Coastguard Worker		{
90*333d2b36SAndroid Build Coastguard Worker			name:     "excludes",
91*333d2b36SAndroid Build Coastguard Worker			includes: []string{"package/**/*.class"},
92*333d2b36SAndroid Build Coastguard Worker			excludes: []string{"package/Class.class"},
93*333d2b36SAndroid Build Coastguard Worker			out:      "-x package/Class.class package/**/*.class",
94*333d2b36SAndroid Build Coastguard Worker		},
95*333d2b36SAndroid Build Coastguard Worker	}
96*333d2b36SAndroid Build Coastguard Worker
97*333d2b36SAndroid Build Coastguard Worker	for _, testCase := range testCases {
98*333d2b36SAndroid Build Coastguard Worker		t.Run(testCase.name, func(t *testing.T) {
99*333d2b36SAndroid Build Coastguard Worker			got := jacocoFiltersToZipCommand(testCase.includes, testCase.excludes)
100*333d2b36SAndroid Build Coastguard Worker			if got != testCase.out {
101*333d2b36SAndroid Build Coastguard Worker				t.Errorf("expected %q got %q", testCase.out, got)
102*333d2b36SAndroid Build Coastguard Worker			}
103*333d2b36SAndroid Build Coastguard Worker		})
104*333d2b36SAndroid Build Coastguard Worker	}
105*333d2b36SAndroid Build Coastguard Worker}
106