in javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CheckCodeOwnerIT.java [796:882]
public void debugLogsContainUnresolvedImports() throws Exception {
skipTestIfImportsNotSupportedByCodeOwnersBackend();
CodeOwnerConfigReference unresolvableCodeOwnerConfigReferenceCodeOwnerConfigNotFound =
CodeOwnerConfigReference.create(
CodeOwnerConfigImportMode.ALL, "non-existing/" + getCodeOwnerConfigFileName());
CodeOwnerConfigReference unresolvableCodeOwnerConfigReferenceProjectNotFound =
CodeOwnerConfigReference.builder(
CodeOwnerConfigImportMode.ALL, getCodeOwnerConfigFileName())
.setProject(Project.nameKey("non-existing"))
.build();
Project.NameKey nonReadableProject =
projectOperations.newProject().name("non-readable").create();
ConfigInput configInput = new ConfigInput();
configInput.state = ProjectState.HIDDEN;
gApi.projects().name(nonReadableProject.get()).config(configInput);
CodeOwnerConfigReference unresolvableCodeOwnerConfigReferenceProjectNotReadable =
CodeOwnerConfigReference.builder(
CodeOwnerConfigImportMode.ALL, getCodeOwnerConfigFileName())
.setProject(nonReadableProject)
.build();
CodeOwnerConfig.Key codeOwnerConfigKey =
codeOwnerConfigOperations
.newCodeOwnerConfig()
.project(project)
.branch("master")
.folderPath(ROOT_PATH)
.addImport(unresolvableCodeOwnerConfigReferenceCodeOwnerConfigNotFound)
.addImport(unresolvableCodeOwnerConfigReferenceProjectNotFound)
.addImport(unresolvableCodeOwnerConfigReferenceProjectNotReadable)
.create();
CodeOwnerCheckInfo checkCodeOwnerInfo = checkCodeOwner(ROOT_PATH, user.email());
assertThat(checkCodeOwnerInfo)
.hasDebugLogsThatContainAllOf(
String.format(
"Code owner config %s:%s:%s imports:\n"
+ "* %s (global import, import mode = ALL)\n"
+ " * failed to resolve (code owner config not found)\n"
+ "* %s:%s (global import, import mode = ALL)\n"
+ " * failed to resolve (project not found)\n"
+ "* %s:%s (global import, import mode = ALL)\n"
+ " * failed to resolve (project state doesn't allow read)",
project,
"master",
getCodeOwnerConfigFilePath(codeOwnerConfigKey.folderPath().toString()),
unresolvableCodeOwnerConfigReferenceCodeOwnerConfigNotFound.filePath(),
unresolvableCodeOwnerConfigReferenceProjectNotFound.project().get(),
unresolvableCodeOwnerConfigReferenceProjectNotFound.filePath(),
unresolvableCodeOwnerConfigReferenceProjectNotReadable.project().get(),
unresolvableCodeOwnerConfigReferenceProjectNotReadable.filePath()),
String.format(
"The import of %s:%s:%s in %s:%s:%s cannot be resolved:"
+ " code owner config does not exist (revision = %s)",
project,
"master",
JgitPath.of(unresolvableCodeOwnerConfigReferenceCodeOwnerConfigNotFound.filePath())
.getAsAbsolutePath(),
project,
"master",
getCodeOwnerConfigFilePath(codeOwnerConfigKey.folderPath().toString()),
projectOperations.project(project).getHead("master").name()),
String.format(
"The import of %s:%s:%s in %s:%s:%s cannot be resolved: project %s not found",
unresolvableCodeOwnerConfigReferenceProjectNotFound.project().get(),
"master",
JgitPath.of(unresolvableCodeOwnerConfigReferenceProjectNotFound.filePath())
.getAsAbsolutePath(),
project,
"master",
getCodeOwnerConfigFilePath(codeOwnerConfigKey.folderPath().toString()),
unresolvableCodeOwnerConfigReferenceProjectNotFound.project().get()),
String.format(
"The import of %s:%s:%s in %s:%s:%s cannot be resolved:"
+ " state of project %s doesn't permit read",
unresolvableCodeOwnerConfigReferenceProjectNotReadable.project().get(),
"master",
JgitPath.of(unresolvableCodeOwnerConfigReferenceProjectNotReadable.filePath())
.getAsAbsolutePath(),
project,
"master",
getCodeOwnerConfigFilePath(codeOwnerConfigKey.folderPath().toString()),
unresolvableCodeOwnerConfigReferenceProjectNotReadable.project().get()));
}