| // Copyright 2016 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| package com.google.devtools.build.lib.skyframe; |
| |
| import static com.google.devtools.build.lib.skyframe.TargetPatternPhaseKeyTest.Flag.BUILD_TESTS_ONLY; |
| import static com.google.devtools.build.lib.skyframe.TargetPatternPhaseKeyTest.Flag.COMPILE_ONE_DEPENDENCY; |
| import static com.google.devtools.build.lib.skyframe.TargetPatternPhaseKeyTest.Flag.DETERMINE_TESTS; |
| |
| import com.google.common.collect.ImmutableList; |
| import com.google.common.collect.ImmutableSet; |
| import com.google.common.testing.EqualsTester; |
| import com.google.common.testing.NullPointerTester; |
| import com.google.devtools.build.lib.pkgcache.LoadingOptions; |
| import com.google.devtools.build.lib.pkgcache.TestFilter; |
| import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue.TargetPatternPhaseKey; |
| import com.google.devtools.build.lib.vfs.PathFragment; |
| import com.google.devtools.common.options.Options; |
| import javax.annotation.Nullable; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.JUnit4; |
| |
| /** Tests for {@link TargetPatternPhaseKey}. */ |
| @RunWith(JUnit4.class) |
| public final class TargetPatternPhaseKeyTest { |
| enum Flag { |
| COMPILE_ONE_DEPENDENCY, |
| BUILD_TESTS_ONLY, |
| DETERMINE_TESTS |
| } |
| |
| @Test |
| public void testEquality() throws Exception { |
| new EqualsTester() |
| .addEqualityGroup(of(ImmutableList.of("a"), PathFragment.create("offset"))) |
| .addEqualityGroup(of(ImmutableList.of("b"), PathFragment.create("offset"))) |
| .addEqualityGroup(of(ImmutableList.of("b"), PathFragment.EMPTY_FRAGMENT)) |
| .addEqualityGroup(of(ImmutableList.of("c"), PathFragment.EMPTY_FRAGMENT)) |
| .addEqualityGroup(of(ImmutableList.of(), PathFragment.EMPTY_FRAGMENT)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| false, |
| true, |
| null, |
| COMPILE_ONE_DEPENDENCY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| false, |
| false, |
| null, |
| COMPILE_ONE_DEPENDENCY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| true, |
| true, |
| null, |
| COMPILE_ONE_DEPENDENCY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| true, |
| false, |
| null, |
| COMPILE_ONE_DEPENDENCY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| false, |
| true, |
| emptyTestFilter(), |
| BUILD_TESTS_ONLY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| true, |
| true, |
| emptyTestFilter(), |
| BUILD_TESTS_ONLY)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| false, |
| true, |
| emptyTestFilter(), |
| DETERMINE_TESTS)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of(), |
| true, |
| true, |
| emptyTestFilter(), |
| DETERMINE_TESTS)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of("a"), |
| false, |
| true, |
| null)) |
| .addEqualityGroup( |
| of( |
| ImmutableList.of(), |
| PathFragment.EMPTY_FRAGMENT, |
| ImmutableList.of("a"), |
| true, |
| true, |
| null)) |
| .testEquals(); |
| } |
| |
| private static TargetPatternPhaseKey of( |
| ImmutableList<String> targetPatterns, |
| PathFragment offset, |
| ImmutableList<String> buildTagFilter, |
| boolean includeManualTests, |
| boolean expandTestSuites, |
| @Nullable TestFilter testFilter, |
| Flag... flags) { |
| ImmutableSet<Flag> set = ImmutableSet.copyOf(flags); |
| boolean compileOneDependency = set.contains(Flag.COMPILE_ONE_DEPENDENCY); |
| boolean buildTestsOnly = set.contains(Flag.BUILD_TESTS_ONLY); |
| boolean determineTests = set.contains(Flag.DETERMINE_TESTS); |
| return TargetPatternPhaseValue.key( |
| targetPatterns, |
| offset, |
| compileOneDependency, |
| buildTestsOnly, |
| determineTests, |
| buildTagFilter, |
| includeManualTests, |
| expandTestSuites, |
| testFilter); |
| } |
| |
| private static TargetPatternPhaseKey of( |
| ImmutableList<String> targetPatterns, PathFragment offset) { |
| return of(targetPatterns, offset, ImmutableList.of(), false, true, null); |
| } |
| |
| private static TestFilter emptyTestFilter() { |
| LoadingOptions options = Options.getDefaults(LoadingOptions.class); |
| return TestFilter.forOptions(options); |
| } |
| |
| @Test |
| public void testNull() { |
| new NullPointerTester() |
| .testAllPublicConstructors(TargetPatternPhaseKey.class); |
| } |
| } |