Skip to content

Commit

Permalink
feat(test-runner): Add support for running a single test (#24)
Browse files Browse the repository at this point in the history
* feat(test-runner): Add support for running a single test

* feat(test-runner): Add support for running a single test
  • Loading branch information
olivernybroe authored Jul 14, 2020
1 parent 770e141 commit 7135adb
Show file tree
Hide file tree
Showing 12 changed files with 86 additions and 102 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
## [Unreleased]
### Added
- Basic autocompletion for `$this` for PhpUnit TestCase base class ([#11](https://github.com/pestphp/pest-intellij/pull/11))
- Line markers now works, but runs the whole file and not the single test. ([#17](https://github.com/pestphp/pest-intellij/pull/17))
- Line markers now works, for the whole file and the single test. ([#17](https://github.com/pestphp/pest-intellij/pull/17), [#24](https://github.com/pestphp/pest-intellij/pull/24))
- Add running support with debugger ([#19](https://github.com/pestphp/pest-intellij/pull/19))
- `$this->field` type support for fields declared in `beforeEach` and `beforeAll` functions ([#22](https://github.com/pestphp/pest-intellij/pull/22))

Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/pestphp/pest/PestComposerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.configurations.ConfigurationType;
import com.jetbrains.php.testFramework.PhpTestFrameworkComposerConfig;
import com.jetbrains.php.testFramework.PhpTestFrameworkType;
import com.pestphp.pest.configuration.PestRunConfigurationType;
import org.jetbrains.annotations.NotNull;

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/com/pestphp/pest/PestFrameworkType.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.pestphp.pest;

import com.jetbrains.php.testFramework.PhpTestDescriptor;
import com.jetbrains.php.testFramework.PhpTestFrameworkConfigurationFactory;
import com.jetbrains.php.testFramework.PhpTestFrameworkFormDecorator;
import com.jetbrains.php.testFramework.PhpTestFrameworkFormDecorator.PhpDownloadableTestFormDecorator;
import com.jetbrains.php.testFramework.PhpTestFrameworkType;
Expand All @@ -11,7 +9,6 @@
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import java.util.List;

public class PestFrameworkType extends PhpTestFrameworkType {
@NonNls
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/com/pestphp/pest/PestIcons.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.pestphp.pest;

import com.intellij.icons.AllIcons;
import com.intellij.openapi.util.IconLoader;
import com.intellij.ui.LayeredIcon;
import com.jetbrains.php.PhpIcons;

import javax.swing.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.TextFieldCompletionProvider;
import com.jetbrains.php.lang.PhpFileType;
import com.jetbrains.php.phpunit.PhpUnitUtil;
Expand All @@ -26,12 +25,8 @@ public class PestRunConfiguration extends PhpTestRunConfiguration {
return true;
}

if (PestUtil.isPestTestFile(file)) {
// TODO: Add a check for name being a valid test in the file.
return true;
}

return false;
// TODO: Add a check for name being a valid test in the file.
return PestUtil.isPestTestFile(file);
},
false,
false
Expand All @@ -44,7 +39,7 @@ protected PestRunConfiguration(Project project, ConfigurationFactory factory, St
name,
PestFrameworkType.getInstance(),
VALIDATOR,
PestRunConfigurationHandler.getInstance(),
PestRunConfigurationHandler.instance,
PestVersionDetector.getInstance()
);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
package com.pestphp.pest.configuration;

import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.xmlb.annotations.Property;
import com.jetbrains.php.run.PhpCommandLineSettings;
import com.jetbrains.php.run.PhpRunConfigurationSettings;
import com.jetbrains.php.testFramework.run.PhpTestRunConfigurationSettings;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class PestRunConfigurationSettings extends PhpTestRunConfigurationSettings {
@NotNull private PestRunnerSettings pestRunnerSettings = new PestRunnerSettings();
@NotNull private final PestRunnerSettings pestRunnerSettings = new PestRunnerSettings();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,9 @@
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NotNullLazyValue;
import com.jetbrains.php.run.PhpRunConfigurationFactoryBase;
import com.pestphp.pest.PestBundle;
import com.pestphp.pest.PestFrameworkType;import com.pestphp.pest.PestIcons;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.Nls.Capitalization;
import com.pestphp.pest.PestIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;

public class PestRunConfigurationType extends SimpleConfigurationType implements DumbAware {
protected PestRunConfigurationType() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.pestphp.pest.configuration

import com.intellij.execution.ExecutionException
import com.intellij.openapi.project.Project
import com.jetbrains.php.config.commandLine.PhpCommandSettings
import com.jetbrains.php.testFramework.run.PhpTestRunConfigurationHandler

class PestRunConfigurationHandler : PhpTestRunConfigurationHandler {
companion object {
@JvmField val instance = PestRunConfigurationHandler()
}

override fun getConfigFileOption(): String {
return "--configuration"
}

override fun prepareCommand(project: Project, commandSettings: PhpCommandSettings, exe: String, version: String?) {
// String scriptFile = PhpExecutionUtil.loadHelperScriptAndGetText(project, "behat.php", commandSettings, PestRunConfigurationHandler.class);
commandSettings.setScript(exe, false)
commandSettings.addArgument("--teamcity")
commandSettings.addEnv("IDE_PEST_EXE", exe)


if (!version.isNullOrEmpty()) {
commandSettings.addEnv("IDE_PEST_VERSION", version)
}
}

@Throws(ExecutionException::class)
override fun runType(project: Project, phpCommandSettings: PhpCommandSettings, type: String, workingDirectory: String) {
throw ExecutionException("Can not run pest with type.")
}

override fun runDirectory(project: Project, phpCommandSettings: PhpCommandSettings, directory: String, workingDirectory: String) {
phpCommandSettings.addPathArgument(directory)
}

override fun runFile(project: Project, phpCommandSettings: PhpCommandSettings, file: String, workingDirectory: String) {
phpCommandSettings.addPathArgument(file)
}

override fun runMethod(project: Project, phpCommandSettings: PhpCommandSettings, file: String, methodName: String, workingDirectory: String) {
phpCommandSettings.addPathArgument(file)
phpCommandSettings.addArgument(String.format("--filter=/%s$/", methodName.replace(" ", "\\s")))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ class PestRunConfigurationProducer : PhpTestConfigurationProducer<PestRunConfigu
companion object {
private val METHOD = Condition<PsiElement> { element: PsiElement? ->
(element is FunctionReference
&& PestUtil.isPestTestFunction((element as FunctionReference?)!!))
&& PestUtil.isPestTestFunction(element))
}
private val METHOD_NAMER = Function<PsiElement, String?> { element: PsiElement? ->
if (element is FunctionReference) {
PestUtil.getTestName(element)
return@Function PestUtil.getTestName(element)
}
null
}
Expand Down
11 changes: 0 additions & 11 deletions src/main/resources/pestBundle.properties
Original file line number Diff line number Diff line change
@@ -1,12 +1 @@
FRAMEWORK_NAME=Pest
CREATE_SINGLE_TEST=Create {0}...
RUN_SINGLE_TEST=Run {0}



runConfiguration.mainConfiguration.missing.title=Run configuration 'Pest' missing
runConfiguration.mainConfiguration.missing.description=To use line markers, you need create run configuration named 'pest' with interpreter.

runConfiguration.mainConfiguration.invalid.title=Run configuration 'pester' is invalid
runConfiguration.mainConfiguration.invalid.description=To use line markers, you need valid run configuration named 'pester'.
file=File:
32 changes: 32 additions & 0 deletions src/test/kotlin/com/pestphp/pest/tests/PestUtilTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.pestphp.pest.tests

import com.intellij.psi.util.PsiTreeUtil
import com.jetbrains.php.lang.psi.elements.FunctionReference
import com.pestphp.pest.PestUtil
import java.util.stream.Collectors

class PestUtilTest: PestLightCodeFixture() {
override fun setUp() {
super.setUp()

myFixture.copyFileToProject("SimpleTest.php")
}

override fun getTestDataPath(): String? {
return basePath + "fixtures"
}

fun testCanGetTestName() {
val file = myFixture.configureByFile("SimpleTest.php")

val functions = PsiTreeUtil.findChildrenOfType(file, FunctionReference::class.java)
.stream().filter(PestUtil::isPestTestFunction).collect(Collectors.toList())

assertEquals(1, functions.count())

assertEquals(
"basic",
PestUtil.getTestName(functions.first())
)
}
}

0 comments on commit 7135adb

Please sign in to comment.