[memory-agent] Use shortcut jetbrainsLibrary for memory agent library in licenses...
[idea/community.git] / java / compiler / tests / com / intellij / compiler / artifacts / PackagingValidationTestCase.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.compiler.artifacts;
3
4 import com.intellij.openapi.util.text.StringUtil;
5 import com.intellij.packaging.artifacts.Artifact;
6 import com.intellij.packaging.artifacts.ArtifactType;
7 import com.intellij.packaging.elements.CompositePackagingElement;
8 import com.intellij.packaging.elements.PackagingElement;
9 import com.intellij.packaging.impl.ui.ArtifactProblemsHolderBase;
10 import com.intellij.packaging.ui.ArtifactProblemQuickFix;
11 import com.intellij.util.containers.ContainerUtil;
12 import org.jetbrains.annotations.Nls;
13 import org.jetbrains.annotations.NotNull;
14 import org.jetbrains.annotations.Nullable;
15
16 import java.util.*;
17
18 public abstract class PackagingValidationTestCase extends PackagingElementsTestCase {
19   protected PackagingValidationTestCase() {
20     mySetupModule = true;
21   }
22
23   protected MockArtifactProblemsHolder validate(CompositePackagingElement<?> root, final ArtifactType artifactType) {
24     final MockArtifactProblemsHolder validationManager = new MockArtifactProblemsHolder();
25     final Artifact artifact = addArtifact("artifact", artifactType, root);
26     artifactType.checkRootElement(root, artifact, validationManager);
27     return validationManager;
28   }
29
30
31   protected class MockArtifactProblemsHolder extends ArtifactProblemsHolderBase {
32     private final List<String> myProblems = new ArrayList<>();
33     private final Map<String, ArtifactProblemQuickFix[]> myQuickFixes = new HashMap<>();
34
35     public MockArtifactProblemsHolder() {
36       super(new MockPackagingEditorContext(new MockArtifactsStructureConfigurableContext(), null));
37     }
38
39     @Override
40     public void registerError(@NotNull @Nls(capitalization = Nls.Capitalization.Sentence) String message,
41                               @NotNull String problemTypeId,
42                               @Nullable List<PackagingElement<?>> pathToPlace,
43                               ArtifactProblemQuickFix @NotNull ... quickFixes) {
44       myProblems.add(message);
45       myQuickFixes.put(message, quickFixes);
46     }
47
48     @Override
49     public void registerWarning(@NotNull @Nls(capitalization = Nls.Capitalization.Sentence) String message,
50                                 @NotNull String problemTypeId, @Nullable List<PackagingElement<?>> pathToPlace,
51                                 ArtifactProblemQuickFix @NotNull ... quickFixes) {
52       registerError(message, problemTypeId, pathToPlace, quickFixes);
53     }
54
55     public void assertNoProblems() {
56       assertProblems();
57     }
58
59     public void assertProblems(String... expectedMessages) {
60       Set<String> expected = ContainerUtil.set(expectedMessages);
61       outer:
62       for (String problem : myProblems) {
63         for (String message : expected) {
64           if (problem.contains(message)) {
65             expected.remove(message);
66             continue outer;
67           }
68         }
69         fail("Unexpected problem: " + problem);
70       }
71       if (!expected.isEmpty()) {
72         fail("The following problems are not reported: " + StringUtil.join(expected, "; "));
73       }
74     }
75   }
76 }