
### This pull request adds the following: - Missing mapping for the `yield` keyword. - Outline scheme for `describe`, `it` and `test` function_call_expressions (to support Pest runnable) - Pest runnable support - PHPUnit runnable support - Task for running selected PHP code. ## Queries explanations #### Query 1 (PHPUnit: Run specific method test): 1. Class is not abstract (because you cannot run tests from an abstract class) 2. Class has `Test` suffix 3. Method has public modifier(or no modifiers, default is public) 4. Method has `test` prefix #### Query 2 (PHPUnit: Run specific method test with `@test` annotation): 1. Class is not abstract (because you cannot run tests from an abstract class) 2. Class has `Test` suffix 3. Method has public modifier(or no modifiers, default is public) 4. Method has `@test` annotation #### Query 3 (PHPUnit: Run specific method test with `#[Test]` attribute): 1. Class is not abstract (because you cannot run tests from an abstract class) 2. Class has `Test` suffix 3. Method has public modifier(or no modifiers, default is public) 4. Method has `#[Test]` attribute #### Query 4 (PHPUnit: Run all tests inside the class): 1. Class is not abstract (because you cannot run tests from an abstract class) 2. Class has `Test` suffix #### Query 5 (Pest: Run function test) 1. Function expression has one of the following names: `describe`, `it` or `test` 2. Function expression first argument is a string ### **PHPUnit: Example for valid test class** <img width="549" alt="Screenshot 2024-05-08 at 10 41 34" src="https://github.com/zed-industries/zed/assets/62463826/e84269de-4f53-410b-b93b-713f9448dc79"> ### **PHPUnit: Example for invalid test class** All the methods should be ignored because you cannot run tests on an abstract class. <img width="608" alt="Screenshot 2024-05-07 at 22 28 57" src="https://github.com/zed-industries/zed/assets/62463826/8c6b3921-5266-4d88-ada5-5cd827bcf242"> ### **Pest: Example** https://github.com/zed-industries/zed/assets/62463826/bce133eb-0a6f-4ca2-9739-12d9169bb9d6 You should now see all your **Pest** tests inside the buffer symbols modal.  Release Notes: - Added test runnable detection for PHP (PHPUnit & Pest). - Added task for running selected PHP code. - Added `describe`, `test` and `it` functions to buffer symbols, to support Pest runnable. - Added `yield` keyword to PHP keyword mapping.
125 lines
2.2 KiB
Scheme
125 lines
2.2 KiB
Scheme
(php_tag) @tag
|
|
"?>" @tag
|
|
|
|
; Types
|
|
|
|
(primitive_type) @type.builtin
|
|
(cast_type) @type.builtin
|
|
(named_type (name) @type) @type
|
|
(named_type (qualified_name) @type) @type
|
|
|
|
; Functions
|
|
|
|
(array_creation_expression "array" @function.builtin)
|
|
(list_literal "list" @function.builtin)
|
|
|
|
(method_declaration
|
|
name: (name) @function.method)
|
|
|
|
(function_call_expression
|
|
function: [(qualified_name (name)) (name)] @function)
|
|
|
|
(scoped_call_expression
|
|
name: (name) @function)
|
|
|
|
(member_call_expression
|
|
name: (name) @function.method)
|
|
|
|
(function_definition
|
|
name: (name) @function)
|
|
|
|
; Member
|
|
|
|
(property_element
|
|
(variable_name) @property)
|
|
|
|
(member_access_expression
|
|
name: (variable_name (name)) @property)
|
|
(member_access_expression
|
|
name: (name) @property)
|
|
|
|
; Variables
|
|
|
|
(relative_scope) @variable.builtin
|
|
|
|
((name) @constant
|
|
(#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
|
|
((name) @constant.builtin
|
|
(#match? @constant.builtin "^__[A-Z][A-Z\d_]+__$"))
|
|
|
|
((name) @constructor
|
|
(#match? @constructor "^[A-Z]"))
|
|
|
|
((name) @variable.builtin
|
|
(#eq? @variable.builtin "this"))
|
|
|
|
(variable_name) @variable
|
|
|
|
; Basic tokens
|
|
[
|
|
(string)
|
|
(string_value)
|
|
(encapsed_string)
|
|
(heredoc)
|
|
(heredoc_body)
|
|
(nowdoc_body)
|
|
] @string
|
|
(boolean) @constant.builtin
|
|
(null) @constant.builtin
|
|
(integer) @number
|
|
(float) @number
|
|
(comment) @comment
|
|
|
|
"$" @operator
|
|
|
|
; Keywords
|
|
|
|
"abstract" @keyword
|
|
"as" @keyword
|
|
"break" @keyword
|
|
"case" @keyword
|
|
"catch" @keyword
|
|
"class" @keyword
|
|
"const" @keyword
|
|
"continue" @keyword
|
|
"declare" @keyword
|
|
"default" @keyword
|
|
"do" @keyword
|
|
"echo" @keyword
|
|
"else" @keyword
|
|
"elseif" @keyword
|
|
"enum" @keyword
|
|
"enddeclare" @keyword
|
|
"endforeach" @keyword
|
|
"endif" @keyword
|
|
"endswitch" @keyword
|
|
"endwhile" @keyword
|
|
"extends" @keyword
|
|
"final" @keyword
|
|
"readonly" @keyword
|
|
"finally" @keyword
|
|
"foreach" @keyword
|
|
"function" @keyword
|
|
"global" @keyword
|
|
"if" @keyword
|
|
"implements" @keyword
|
|
"include_once" @keyword
|
|
"include" @keyword
|
|
"insteadof" @keyword
|
|
"interface" @keyword
|
|
"namespace" @keyword
|
|
"new" @keyword
|
|
"private" @keyword
|
|
"protected" @keyword
|
|
"public" @keyword
|
|
"require_once" @keyword
|
|
"require" @keyword
|
|
"return" @keyword
|
|
"static" @keyword
|
|
"switch" @keyword
|
|
"throw" @keyword
|
|
"trait" @keyword
|
|
"try" @keyword
|
|
"use" @keyword
|
|
"while" @keyword
|
|
"yield" @keyword
|