Skip to content

Commit b800eb0

Browse files
bartekpaciaintellij-monorepo-bot
authored andcommitted
[cucumber-java] IDEA-211600 add more tests for resolve of Cucumber parameter types from an external library
GitOrigin-RevId: 29f4cb4fac495e935ba161541f37dc14f0ece2e0
1 parent a81deed commit b800eb0

9 files changed

Lines changed: 101 additions & 12 deletions

File tree

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright 2000-2021 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.
22
package org.jetbrains.plugins.cucumber.java.resolve;
33

4-
import com.intellij.openapi.application.PathManager;
54
import com.intellij.openapi.module.Module;
65
import com.intellij.openapi.roots.ContentEntry;
76
import com.intellij.openapi.roots.ModifiableRootModel;
@@ -15,10 +14,16 @@
1514

1615
public class CucumberJavaResolveToExternalLibraryTest extends BaseCucumberJavaResolveTest {
1716

18-
public void testResolveWithParameterTypeDouble() {
19-
init("resolveToExternalLibrary");
17+
public void testResolveManySteps() {
18+
init(getTestName(true));
2019

21-
checkReference("step w<caret>ith", "stepWithDoubleParameterType");
20+
checkReference("<caret>I have a normal some parameter", "normal");
21+
checkReference("<caret>I have this parameter", "alternative");
22+
checkReference("<caret>I have that parameter", "alternative");
23+
checkReference("<caret>I have or not parameter", "optional");
24+
checkReference("<caret>I have or not", "optional");
25+
// FIXME: doesn't work for custom '@ParameterType's defined in external libraries. See IDEA-211600.
26+
// checkReference("<caret>I have a custom blah parameter", "custom");
2227
}
2328

2429
@Override
@@ -28,17 +33,22 @@ protected LightProjectDescriptor getProjectDescriptor() {
2833
public void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @NotNull ContentEntry contentEntry) {
2934
IntelliJProjectConfiguration.LibraryRoots
3035
libraryRoots = IntelliJProjectConfiguration.getModuleLibrary("intellij.cucumber.java", "cucumber-core-5.5");
31-
PsiTestUtil.addProjectLibrary(model, "cucumber-core", libraryRoots.getClassesPaths());
36+
PsiTestUtil.addProjectLibrary(model, "my-cucumber-core", libraryRoots.getClassesPaths());
3237

3338
libraryRoots = IntelliJProjectConfiguration.getModuleLibrary("intellij.cucumber.java", "cucumber-java-5.5");
34-
PsiTestUtil.addProjectLibrary(model, "cucumber-java", libraryRoots.getClassesPaths());
39+
PsiTestUtil.addProjectLibrary(model, "my-cucumber-java", libraryRoots.getClassesPaths());
3540

3641
attachCucumberExpressionsLibrary(model);
3742

38-
PsiTestUtil.addLibrary(model, "cucumber-java8",
39-
PathManager.getHomePath() + "/contrib/cucumber-java/testData/resolve/resolveToExternalLibrary",
40-
"step-def-jar-1.0.jar");
43+
PsiTestUtil.addLibrary(model, "my-cucumber-java8",
44+
getTestDataPath() + "/resolveManySteps",
45+
"steps-1.0.0.jar");
4146
}
4247
};
4348
}
49+
50+
@Override
51+
protected String getTestDataPath() {
52+
return super.getTestDataPath() + "/resolveToExternalLibrary";
53+
}
4454
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
target/
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
This is a sample project to test resolving definitions of steps defined in a external library.
2+
3+
Build a JAR:
4+
5+
```shell
6+
mvn clean package
7+
```
8+
9+
Move it to the right place:
10+
11+
```shell
12+
cp target/steps-1.0.0.jar ../resolveManySteps/steps-1.0.0.jar
13+
```
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4+
https://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>org.example</groupId>
8+
<artifactId>steps</artifactId>
9+
<version>1.0.0</version>
10+
<packaging>jar</packaging>
11+
12+
<properties>
13+
<maven.compiler.source>17</maven.compiler.source>
14+
<maven.compiler.target>17</maven.compiler.target>
15+
</properties>
16+
17+
<dependencies>
18+
<dependency>
19+
<groupId>io.cucumber</groupId>
20+
<artifactId>cucumber-java</artifactId>
21+
<version>7.29.0</version>
22+
</dependency>
23+
</dependencies>
24+
</project>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.example;
2+
3+
import io.cucumber.java.ParameterType;
4+
import io.cucumber.java.en.Given;
5+
6+
public class ExternalSteps {
7+
public boolean someLibraryMethod() {
8+
return true;
9+
}
10+
11+
@Given("I have a normal {word} parameter")
12+
public void normal(String size) {
13+
}
14+
15+
@Given("I have this/that parameter")
16+
public void alternative() {
17+
}
18+
19+
@Given("I have or not( parameter)")
20+
public void optional() {
21+
}
22+
23+
@Given("I have a custom {customParameter} parameter")
24+
public void custom(String size) {
25+
}
26+
27+
@ParameterType(".*")
28+
public String customParameter(String arg) {
29+
return arg;
30+
}
31+
}
Binary file not shown.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Feature: Some feature
2+
3+
Scenario: Some scenario
4+
# Normal
5+
Given I have a normal some parameter
6+
# Alternative
7+
Given I have this parameter
8+
Given I have that parameter
9+
# Optional
10+
Given I have or not parameter
11+
Given I have or not
12+
# Custom
13+
Given I have a custom blah parameter
Binary file not shown.

cucumber-java/testData/resolve/resolveToExternalLibrary/test.feature

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)