• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Camelcade / Perl5-IDEA / #525521561

31 May 2025 05:44PM UTC coverage: 82.289% (+0.04%) from 82.248%
#525521561

push

github

hurricup
Added category filtering for parametrized tests

The other way is to create the own runner, but this feels easier.

30884 of 37531 relevant lines covered (82.29%)

0.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

43.48
/plugin/coverage/src/main/java/com/perl5/lang/perl/coverage/PerlCoverageEngine.java
1
/*
2
 * Copyright 2015-2025 Alexandr Evstigneev
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
package com.perl5.lang.perl.coverage;
18

19
import com.intellij.coverage.*;
20
import com.intellij.coverage.view.CoverageViewExtension;
21
import com.intellij.coverage.view.DirectoryCoverageViewExtension;
22
import com.intellij.execution.configurations.RunConfigurationBase;
23
import com.intellij.execution.configurations.coverage.CoverageEnabledConfiguration;
24
import com.intellij.execution.testframework.AbstractTestProxy;
25
import com.intellij.openapi.module.Module;
26
import com.intellij.openapi.project.Project;
27
import com.intellij.openapi.util.io.FileUtil;
28
import com.intellij.openapi.vfs.VirtualFile;
29
import com.intellij.psi.PsiElement;
30
import com.intellij.psi.PsiFile;
31
import com.perl5.lang.perl.fileTypes.PurePerlFileType;
32
import com.perl5.lang.perl.idea.run.GenericPerlRunConfiguration;
33
import org.jetbrains.annotations.NotNull;
34
import org.jetbrains.annotations.Nullable;
35

36
import java.io.File;
37
import java.util.Collections;
38
import java.util.List;
39
import java.util.Set;
40

41
public class PerlCoverageEngine extends CoverageEngine {
1✔
42

43
  @Override
44
  public boolean isApplicableTo(@Nullable RunConfigurationBase conf) {
45
    return conf instanceof GenericPerlRunConfiguration;
1✔
46
  }
47

48
  @Override
49
  public boolean canHavePerTestCoverage(@Nullable RunConfigurationBase conf) {
50
    return false;
×
51
  }
52

53
  @Override
54
  public @NotNull CoverageEnabledConfiguration createCoverageEnabledConfiguration(@Nullable RunConfigurationBase conf) {
55
    return new PerlCoverageEnabledConfiguration(conf);
1✔
56
  }
57

58
  @Override
59
  public @Nullable CoverageSuite createCoverageSuite(@NotNull CoverageEnabledConfiguration config) {
60
    if (config instanceof PerlCoverageEnabledConfiguration perlConfig) {
1✔
61
      return new PerlCoverageSuite(perlConfig);
1✔
62
    }
63
    return null;
×
64
  }
65

66
  @SuppressWarnings("deprecation")
67
  @Override
68
  public @Nullable CoverageSuite createCoverageSuite(@NotNull CoverageRunner runner,
69
                                                     @NotNull String name,
70
                                                     @NotNull CoverageFileProvider fileProvider,
71
                                                     String @Nullable [] filters,
72
                                                     long lastCoverageTimeStamp,
73
                                                     @Nullable String suiteToMerge,
74
                                                     boolean coverageByTestEnabled,
75
                                                     boolean branchCoverage,
76
                                                     boolean trackTestFolders,
77
                                                     Project project) {
78
    throw new UnsupportedOperationException("Use createCoverageSuite(CoverageEnabledConfiguration)");
×
79
  }
80

81
  @SuppressWarnings("deprecation")
82
  @Override
83
  public @Nullable CoverageSuite createCoverageSuite(@NotNull CoverageRunner covRunner,
84
                                                     @NotNull String name,
85
                                                     @NotNull CoverageFileProvider coverageDataFileProvider,
86
                                                     @NotNull CoverageEnabledConfiguration config) {
87
    throw new UnsupportedOperationException("Use createCoverageSuite(CoverageEnabledConfiguration)");
×
88
  }
89

90
  @Override
91
  public @Nullable CoverageSuite createEmptyCoverageSuite(@NotNull CoverageRunner coverageRunner) {
92
    return new PerlCoverageSuite();
×
93
  }
94

95
  @Override
96
  public @NotNull CoverageAnnotator getCoverageAnnotator(Project project) {
97
    return PerlCoverageAnnotator.getInstance(project);
1✔
98
  }
99

100
  @Override
101
  public boolean coverageEditorHighlightingApplicableTo(@NotNull PsiFile psiFile) {
102
    return isOurFile(psiFile.getVirtualFile());
×
103
  }
104

105
  @Override
106
  public boolean coverageProjectViewStatisticsApplicableTo(VirtualFile fileOrDir) {
107
    return isOurFile(fileOrDir);
1✔
108
  }
109

110
  @Override
111
  public CoverageViewExtension createCoverageViewExtension(Project project, CoverageSuitesBundle suiteBundle) {
112
    return new DirectoryCoverageViewExtension(project, getCoverageAnnotator(project), suiteBundle);
1✔
113
  }
114

115
  @Override
116
  public boolean recompileProjectAndRerunAction(@NotNull Module module,
117
                                                @NotNull CoverageSuitesBundle suite,
118
                                                @NotNull Runnable chooseSuiteAction) {
119
    return false;
×
120
  }
121

122
  @Override
123
  public @NotNull Set<String> getQualifiedNames(@NotNull PsiFile sourceFile) {
124
    return Collections.singleton(buildQualifiedName(sourceFile));
×
125
  }
126

127
  @Override
128
  public @Nullable String getQualifiedName(@NotNull File outputFile, @NotNull PsiFile sourceFile) {
129
    return buildQualifiedName(sourceFile);
×
130
  }
131

132
  private static String buildQualifiedName(@NotNull PsiFile sourceFile) {
133
    return FileUtil.toSystemIndependentName(sourceFile.getVirtualFile().getPath());
×
134
  }
135

136
  @Override
137
  public List<PsiElement> findTestsByNames(String @NotNull [] testNames, @NotNull Project project) {
138
    return Collections.emptyList();
×
139
  }
140

141
  @Override
142
  public @Nullable String getTestMethodName(@NotNull PsiElement element, @NotNull AbstractTestProxy testProxy) {
143
    return null;
×
144
  }
145

146
  @Override
147
  public String getPresentableText() {
148
    return "PerlCoverage";
×
149
  }
150

151
  public static PerlCoverageEngine getInstance() {
152
    return CoverageEngine.EP_NAME.findExtension(PerlCoverageEngine.class);
1✔
153
  }
154

155
  private static boolean isOurFile(@Nullable VirtualFile virtualFile) {
156
    return virtualFile != null && virtualFile.getFileType() instanceof PurePerlFileType;
1✔
157
  }
158
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc