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

Camelcade / Perl5-IDEA / #525521541

22 May 2025 06:26AM UTC coverage: 82.228% (-0.06%) from 82.29%
#525521541

push

github

hurricup
Fail if SDK is null

30870 of 37542 relevant lines covered (82.23%)

0.82 hits per line

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

54.17
/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.Date;
39
import java.util.List;
40
import java.util.Set;
41

42
public class PerlCoverageEngine extends CoverageEngine {
1✔
43

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

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

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

59
  @SuppressWarnings("deprecation")
60
  @Override
61
  public @Nullable CoverageSuite createCoverageSuite(@NotNull CoverageRunner covRunner,
62
                                                     @NotNull String name,
63
                                                     @NotNull CoverageFileProvider coverageDataFileProvider,
64
                                                     @Nullable String[] filters,
65
                                                     long lastCoverageTimeStamp,
66
                                                     @Nullable String suiteToMerge,
67
                                                     boolean coverageByTestEnabled,
68
                                                     boolean tracingEnabled,
69
                                                     boolean trackTestFolders,
70
                                                     Project project) {
71
    return new PerlCoverageSuite(name, coverageDataFileProvider, lastCoverageTimeStamp, coverageByTestEnabled, tracingEnabled,
1✔
72
                                 trackTestFolders, covRunner, project);
73
  }
74

75
  @SuppressWarnings("deprecation")
76
  @Override
77
  public @Nullable CoverageSuite createCoverageSuite(@NotNull CoverageRunner covRunner,
78
                                                     @NotNull String name,
79
                                                     @NotNull CoverageFileProvider coverageDataFileProvider,
80
                                                     @NotNull CoverageEnabledConfiguration config) {
81
    if (config instanceof PerlCoverageEnabledConfiguration) {
1✔
82
      GenericPerlRunConfiguration perlRunConfiguration = (GenericPerlRunConfiguration)config.getConfiguration();
1✔
83
      return createCoverageSuite(covRunner, name, coverageDataFileProvider, null, new Date().getTime(), null, false, false, true,
1✔
84
                                 perlRunConfiguration.getProject());
1✔
85
    }
86
    return null;
×
87
  }
88

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

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

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

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

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

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

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

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

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

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

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

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

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

154
  private static boolean isOurFile(@Nullable VirtualFile virtualFile) {
155
    return virtualFile != null && virtualFile.getFileType() instanceof PurePerlFileType;
1✔
156
  }
157
}
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