Test CodeOwnerConfigHierarchy when refs/meta/config branch is missing
This increases the test coverage for CodeOwnerConfigHierarchy from 93.5%
to 98.4%.
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I7d4eacf4bfbbad40f4fb0c8ab45c2b935ef4cf25
diff --git a/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfigHierarchyTest.java b/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfigHierarchyTest.java
index 79885dc..a99de99 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfigHierarchyTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfigHierarchyTest.java
@@ -16,6 +16,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.server.project.ProjectCache.illegalState;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
@@ -30,6 +31,8 @@
import com.google.gerrit.plugins.codeowners.acceptance.testsuite.CodeOwnerConfigOperations;
import com.google.gerrit.plugins.codeowners.acceptance.testsuite.TestPathExpressions;
import com.google.gerrit.plugins.codeowners.backend.config.InvalidPluginConfigurationException;
+import com.google.gerrit.server.project.ProjectState;
+import com.google.gerrit.server.restapi.project.DeleteRef;
import com.google.inject.Inject;
import java.io.IOException;
import java.nio.file.Paths;
@@ -57,6 +60,7 @@
@Mock private Consumer<CodeOwnerConfig.Key> parentCodeOwnersIgnoredCallback;
@Inject private ProjectOperations projectOperations;
+ @Inject private DeleteRef deleteRef;
private CodeOwnerConfigOperations codeOwnerConfigOperations;
private CodeOwnerConfigHierarchy codeOwnerConfigHierarchy;
@@ -736,6 +740,23 @@
verifyNoMoreInteractions(visitor);
}
+ @Test
+ public void refsMetaConfigBranchIsMissing() throws Exception {
+ ProjectState projectState = projectCache.get(project).orElseThrow(illegalState(project));
+ deleteRef.deleteSingleRef(projectState, RefNames.REFS_CONFIG);
+
+ // Visit '/foo/bar/baz.md' in master. This would callback for these OWNERS files if they
+ // existed:
+ // 1. '/foo/bar/OWNERS' in master
+ // 2. '/foo/OWNERS' in master
+ // 3. '/OWNERS' in master
+ // 4. '/OWNERS' in refs/meta/config (this is where the default code owners are loaded from)
+ // This test is making sure that trying to load 4. doesn't fail if refs/meta/config doesn't
+ // exist.
+ visit("master", "/foo/bar/baz.md");
+ verifyZeroInteractions(visitor);
+ }
+
private void visit(String branchName, String path)
throws InvalidPluginConfigurationException, IOException {
BranchNameKey branchNameKey = BranchNameKey.create(project, branchName);