blob: b5323e8af87318b4947744dff8fa79f162990fc6 [file] [log] [blame]
Colin Crossaede88c2020-08-11 12:17:01 -07001// Copyright 2020 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package android
16
17import (
18 "reflect"
19 "testing"
20)
21
22func Test_mergeApexVariations(t *testing.T) {
Paul Duffin064b70c2020-11-02 17:32:38 +000023 const (
24 ForPrebuiltApex = true
25 NotForPrebuiltApex = false
26 )
Colin Crossaede88c2020-08-11 12:17:01 -070027 tests := []struct {
28 name string
29 in []ApexInfo
30 wantMerged []ApexInfo
31 wantAliases [][2]string
32 }{
33 {
34 name: "single",
35 in: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000036 {"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070037 },
38 wantMerged: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000039 {"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070040 },
41 wantAliases: [][2]string{
42 {"foo", "apex10000"},
43 },
44 },
45 {
46 name: "merge",
47 in: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000048 {"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
49 {"bar", "current", false, SdkRefs{{"baz", "1"}}, []string{"bar"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070050 },
51 wantMerged: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000052 {"apex10000_baz_1", "current", false, SdkRefs{{"baz", "1"}}, []string{"bar", "foo"}, nil, false}},
Colin Crossaede88c2020-08-11 12:17:01 -070053 wantAliases: [][2]string{
54 {"bar", "apex10000_baz_1"},
55 {"foo", "apex10000_baz_1"},
56 },
57 },
58 {
59 name: "don't merge version",
60 in: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000061 {"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
62 {"bar", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070063 },
64 wantMerged: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000065 {"apex30", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
66 {"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070067 },
68 wantAliases: [][2]string{
69 {"bar", "apex30"},
70 {"foo", "apex10000"},
71 },
72 },
73 {
74 name: "merge updatable",
75 in: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000076 {"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
77 {"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070078 },
79 wantMerged: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000080 {"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070081 },
82 wantAliases: [][2]string{
83 {"bar", "apex10000"},
84 {"foo", "apex10000"},
85 },
86 },
87 {
88 name: "don't merge sdks",
89 in: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000090 {"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
91 {"bar", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070092 },
93 wantMerged: []ApexInfo{
Paul Duffin064b70c2020-11-02 17:32:38 +000094 {"apex10000_baz_2", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
95 {"apex10000_baz_1", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
Colin Crossaede88c2020-08-11 12:17:01 -070096 },
97 wantAliases: [][2]string{
98 {"bar", "apex10000_baz_2"},
99 {"foo", "apex10000_baz_1"},
100 },
101 },
Paul Duffin064b70c2020-11-02 17:32:38 +0000102 {
103 name: "don't merge when for prebuilt_apex",
104 in: []ApexInfo{
105 {"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
106 {"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
107 // This one should not be merged in with the others because it is for
108 // a prebuilt_apex.
109 {"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
110 },
111 wantMerged: []ApexInfo{
112 {"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
113 {"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
114 },
115 wantAliases: [][2]string{
116 {"bar", "apex10000"},
117 {"foo", "apex10000"},
118 },
119 },
Colin Crossaede88c2020-08-11 12:17:01 -0700120 }
Paul Duffin064b70c2020-11-02 17:32:38 +0000121
Colin Crossaede88c2020-08-11 12:17:01 -0700122 for _, tt := range tests {
123 t.Run(tt.name, func(t *testing.T) {
Paul Duffind210afa2021-03-16 17:31:20 +0000124 config := TestConfig(t.TempDir(), nil, "", nil)
Colin Cross9f720ce2020-10-02 10:26:04 -0700125 ctx := &configErrorWrapper{config: config}
126 gotMerged, gotAliases := mergeApexVariations(ctx, tt.in)
Colin Crossaede88c2020-08-11 12:17:01 -0700127 if !reflect.DeepEqual(gotMerged, tt.wantMerged) {
128 t.Errorf("mergeApexVariations() gotMerged = %v, want %v", gotMerged, tt.wantMerged)
129 }
130 if !reflect.DeepEqual(gotAliases, tt.wantAliases) {
131 t.Errorf("mergeApexVariations() gotAliases = %v, want %v", gotAliases, tt.wantAliases)
132 }
133 })
134 }
135}