blob: bcdb95118577579d9f7891969ceab9f0c900a497 [file] [log] [blame]
Damien Martin-Guillerezf88f4d82015-09-25 13:56:55 +00001// Copyright 2015 The Bazel Authors. All rights reserved.
Ulf Adams89179252015-04-23 18:48:39 +00002//
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.
14package com.google.devtools.build.lib.analysis;
15
16import com.google.common.testing.EqualsTester;
17import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
Florian Weikertcca703a2015-12-07 09:56:38 +000018import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
Luis Fernando Pino Duquee82713d2016-04-26 16:22:38 +000019import com.google.devtools.build.lib.analysis.util.TestAspects;
Dmitry Lomov8ff06452015-10-21 19:16:30 +000020import com.google.devtools.build.lib.analysis.util.TestAspects.AttributeAspect;
21import com.google.devtools.build.lib.analysis.util.TestAspects.ExtraAttributeAspect;
Lukacs Berki6e91eb92015-09-21 09:12:37 +000022import com.google.devtools.build.lib.cmdline.Label;
Marian Lobur702cad72015-09-02 09:53:58 +000023import com.google.devtools.build.lib.packages.AspectParameters;
Ulf Adams89179252015-04-23 18:48:39 +000024import com.google.devtools.build.lib.skyframe.AspectValue;
Ulf Adams89179252015-04-23 18:48:39 +000025
Ulf Adams89179252015-04-23 18:48:39 +000026import org.junit.Test;
27import org.junit.runner.RunWith;
28import org.junit.runners.JUnit4;
29
30/**
31 * Tests for {@link com.google.devtools.build.lib.skyframe.AspectValue}.
32 */
33@RunWith(JUnit4.class)
Florian Weikertcca703a2015-12-07 09:56:38 +000034public class AspectValueTest extends AnalysisTestCase {
Ulf Adams89179252015-04-23 18:48:39 +000035
36 @Test
Michael Staib04f6f242016-03-01 15:40:29 +000037 public void keyEquality() throws Exception {
Ulf Adams89179252015-04-23 18:48:39 +000038 update();
39 BuildConfiguration c1 = getTargetConfiguration();
40 BuildConfiguration c2 = getHostConfiguration();
41 Label l1 = Label.parseAbsolute("//a:l1");
42 Label l1b = Label.parseAbsolute("//a:l1");
43 Label l2 = Label.parseAbsolute("//a:l2");
Marian Lobur702cad72015-09-02 09:53:58 +000044 AspectParameters i1 = new AspectParameters.Builder()
45 .addAttribute("foo", "bar")
46 .build();
Michael Staib04f6f242016-03-01 15:40:29 +000047 AspectParameters i1b = new AspectParameters.Builder()
48 .addAttribute("foo", "bar")
49 .build();
Marian Lobur702cad72015-09-02 09:53:58 +000050 AspectParameters i2 = new AspectParameters.Builder()
51 .addAttribute("foo", "baz")
52 .build();
Luis Fernando Pino Duquee82713d2016-04-26 16:22:38 +000053 AttributeAspect a1 = TestAspects.ATTRIBUTE_ASPECT;
54 AttributeAspect a1b = TestAspects.ATTRIBUTE_ASPECT;
55 ExtraAttributeAspect a2 = TestAspects.EXTRA_ATTRIBUTE_ASPECT;
Michael Staib04f6f242016-03-01 15:40:29 +000056
57 // label: //a:l1 or //a:l2
58 // aspectConfiguration: target or host
59 // baseConfiguration: target or host
60 // aspect: Attribute or ExtraAttribute
61 // parameters: bar or baz
Ulf Adams89179252015-04-23 18:48:39 +000062
63 new EqualsTester()
Michael Staib04f6f242016-03-01 15:40:29 +000064 .addEqualityGroup(
65 AspectValue.key(l1, c1, c1, a1, i1),
66 AspectValue.key(l1, c1, c1, a1, i1b),
67 AspectValue.key(l1, c1, c1, a1b, i1),
68 AspectValue.key(l1, c1, c1, a1b, i1b),
69 AspectValue.key(l1b, c1, c1, a1, i1),
70 AspectValue.key(l1b, c1, c1, a1, i1b),
71 AspectValue.key(l1b, c1, c1, a1b, i1),
72 AspectValue.key(l1b, c1, c1, a1b, i1b))
73 .addEqualityGroup(
74 AspectValue.key(l1, c1, c1, a1, i2),
75 AspectValue.key(l1, c1, c1, a1b, i2),
76 AspectValue.key(l1b, c1, c1, a1, i2),
77 AspectValue.key(l1b, c1, c1, a1b, i2))
78 .addEqualityGroup(
79 AspectValue.key(l1, c1, c1, a2, i1),
80 AspectValue.key(l1, c1, c1, a2, i1b),
81 AspectValue.key(l1b, c1, c1, a2, i1),
82 AspectValue.key(l1b, c1, c1, a2, i1b))
83 .addEqualityGroup(
84 AspectValue.key(l1, c1, c1, a2, i2),
85 AspectValue.key(l1b, c1, c1, a2, i2))
86 .addEqualityGroup(
87 AspectValue.key(l1, c1, c2, a1, i1),
88 AspectValue.key(l1, c1, c2, a1, i1b),
89 AspectValue.key(l1, c1, c2, a1b, i1),
90 AspectValue.key(l1, c1, c2, a1b, i1b),
91 AspectValue.key(l1b, c1, c2, a1, i1),
92 AspectValue.key(l1b, c1, c2, a1, i1b),
93 AspectValue.key(l1b, c1, c2, a1b, i1),
94 AspectValue.key(l1b, c1, c2, a1b, i1b))
95 .addEqualityGroup(
96 AspectValue.key(l1, c1, c2, a1, i2),
97 AspectValue.key(l1, c1, c2, a1b, i2),
98 AspectValue.key(l1b, c1, c2, a1, i2),
99 AspectValue.key(l1b, c1, c2, a1b, i2))
100 .addEqualityGroup(
101 AspectValue.key(l1, c1, c2, a2, i1),
102 AspectValue.key(l1, c1, c2, a2, i1b),
103 AspectValue.key(l1b, c1, c2, a2, i1),
104 AspectValue.key(l1b, c1, c2, a2, i1b))
105 .addEqualityGroup(
106 AspectValue.key(l1, c1, c2, a2, i2),
107 AspectValue.key(l1b, c1, c2, a2, i2))
108 .addEqualityGroup(
109 AspectValue.key(l1, c2, c1, a1, i1),
110 AspectValue.key(l1, c2, c1, a1, i1b),
111 AspectValue.key(l1, c2, c1, a1b, i1),
112 AspectValue.key(l1, c2, c1, a1b, i1b),
113 AspectValue.key(l1b, c2, c1, a1, i1),
114 AspectValue.key(l1b, c2, c1, a1, i1b),
115 AspectValue.key(l1b, c2, c1, a1b, i1),
116 AspectValue.key(l1b, c2, c1, a1b, i1b))
117 .addEqualityGroup(
118 AspectValue.key(l1, c2, c1, a1, i2),
119 AspectValue.key(l1, c2, c1, a1b, i2),
120 AspectValue.key(l1b, c2, c1, a1, i2),
121 AspectValue.key(l1b, c2, c1, a1b, i2))
122 .addEqualityGroup(
123 AspectValue.key(l1, c2, c1, a2, i1),
124 AspectValue.key(l1, c2, c1, a2, i1b),
125 AspectValue.key(l1b, c2, c1, a2, i1),
126 AspectValue.key(l1b, c2, c1, a2, i1b))
127 .addEqualityGroup(
128 AspectValue.key(l1, c2, c1, a2, i2),
129 AspectValue.key(l1b, c2, c1, a2, i2))
130 .addEqualityGroup(
131 AspectValue.key(l1, c2, c2, a1, i1),
132 AspectValue.key(l1, c2, c2, a1, i1b),
133 AspectValue.key(l1, c2, c2, a1b, i1),
134 AspectValue.key(l1, c2, c2, a1b, i1b),
135 AspectValue.key(l1b, c2, c2, a1, i1),
136 AspectValue.key(l1b, c2, c2, a1, i1b),
137 AspectValue.key(l1b, c2, c2, a1b, i1),
138 AspectValue.key(l1b, c2, c2, a1b, i1b))
139 .addEqualityGroup(
140 AspectValue.key(l1, c2, c2, a1, i2),
141 AspectValue.key(l1, c2, c2, a1b, i2),
142 AspectValue.key(l1b, c2, c2, a1, i2),
143 AspectValue.key(l1b, c2, c2, a1b, i2))
144 .addEqualityGroup(
145 AspectValue.key(l1, c2, c2, a2, i1),
146 AspectValue.key(l1, c2, c2, a2, i1b),
147 AspectValue.key(l1b, c2, c2, a2, i1),
148 AspectValue.key(l1b, c2, c2, a2, i1b))
149 .addEqualityGroup(
150 AspectValue.key(l1, c2, c2, a2, i2),
151 AspectValue.key(l1b, c2, c2, a2, i2))
152 .addEqualityGroup(
153 AspectValue.key(l2, c1, c1, a1, i1),
154 AspectValue.key(l2, c1, c1, a1, i1b),
155 AspectValue.key(l2, c1, c1, a1b, i1),
156 AspectValue.key(l2, c1, c1, a1b, i1b))
157 .addEqualityGroup(
158 AspectValue.key(l2, c1, c1, a1, i2),
159 AspectValue.key(l2, c1, c1, a1b, i2))
160 .addEqualityGroup(
161 AspectValue.key(l2, c1, c1, a2, i1),
162 AspectValue.key(l2, c1, c1, a2, i1b))
163 .addEqualityGroup(
164 AspectValue.key(l2, c1, c1, a2, i2))
165 .addEqualityGroup(
166 AspectValue.key(l2, c1, c2, a1, i1),
167 AspectValue.key(l2, c1, c2, a1, i1b),
168 AspectValue.key(l2, c1, c2, a1b, i1),
169 AspectValue.key(l2, c1, c2, a1b, i1b))
170 .addEqualityGroup(
171 AspectValue.key(l2, c1, c2, a1, i2),
172 AspectValue.key(l2, c1, c2, a1b, i2))
173 .addEqualityGroup(
174 AspectValue.key(l2, c1, c2, a2, i1),
175 AspectValue.key(l2, c1, c2, a2, i1b))
176 .addEqualityGroup(
177 AspectValue.key(l2, c1, c2, a2, i2))
178 .addEqualityGroup(
179 AspectValue.key(l2, c2, c1, a1, i1),
180 AspectValue.key(l2, c2, c1, a1, i1b),
181 AspectValue.key(l2, c2, c1, a1b, i1),
182 AspectValue.key(l2, c2, c1, a1b, i1b))
183 .addEqualityGroup(
184 AspectValue.key(l2, c2, c1, a1, i2),
185 AspectValue.key(l2, c2, c1, a1b, i2))
186 .addEqualityGroup(
187 AspectValue.key(l2, c2, c1, a2, i1),
188 AspectValue.key(l2, c2, c1, a2, i1b))
189 .addEqualityGroup(
190 AspectValue.key(l2, c2, c1, a2, i2))
191 .addEqualityGroup(
192 AspectValue.key(l2, c2, c2, a1, i1),
193 AspectValue.key(l2, c2, c2, a1, i1b),
194 AspectValue.key(l2, c2, c2, a1b, i1),
195 AspectValue.key(l2, c2, c2, a1b, i1b))
196 .addEqualityGroup(
197 AspectValue.key(l2, c2, c2, a1, i2),
198 AspectValue.key(l2, c2, c2, a1b, i2))
199 .addEqualityGroup(
200 AspectValue.key(l2, c2, c2, a2, i1),
201 AspectValue.key(l2, c2, c2, a2, i1b))
202 .addEqualityGroup(
203 AspectValue.key(l2, c2, c2, a2, i2))
Ulf Adams89179252015-04-23 18:48:39 +0000204 .testEquals();
205 }
206}