You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -154,13 +153,13 @@ These arrays are spread into `RUNNABLE_ATTRIBUTES` (line markers) and `MEANINGFU
154
153
155
154
### Attribute Group Numbering
156
155
157
-
Attributes on a function/method are numbered **within their own group**, not globally. Each group has independent 0-based indexing. The groups are defined in `PsiUtil.ATTRIBUTE_GROUPS`:
156
+
Attributes on a function/method are numbered **within their own group**, not globally. Each group has independent 0-based indexing:
| test data |`DATA_ATTRIBUTES`| Data providers for `#[Test]` methods |
162
-
| inline |`TEST_INLINE_ATTRIBUTES`| Inline test cases (`#[TestInline]`) |
163
-
| bench |`BENCH_ATTRIBUTES`| Benchmark data (`#[Bench]`) |
158
+
-**test data** group: all `DATA_ATTRIBUTES` (DataProvider, DataSet, DataUnion, DataCross, DataZip) share one group — numbered together
159
+
-**inline** group: each `TestInline` is numbered among other `TestInline` attributes (same FQN)
160
+
-**bench** group: each `Bench` is numbered among other `Bench` attributes (same FQN)
161
+
162
+
Explicit multi-attribute groups are defined in `PsiUtil.ATTRIBUTE_GROUPS` (currently only `DATA_ATTRIBUTES`). All other meaningful attributes (except `Test`) are grouped by their own FQN — attributes with the same FQN form a group automatically.
164
163
165
164
The `#[Test]` attribute itself is **not numbered** — it is a marker only. The method/function name already gets its own gutter line marker.
166
165
@@ -178,13 +177,13 @@ Example for a function `foo` with multiple attributes:
178
177
#[Bench(...)] → type=bench, foo:1
179
178
```
180
179
181
-
`RUNNABLE_ATTRIBUTES` (used for gutter line markers) contains `TEST_INLINE_ATTRIBUTES + BENCH_ATTRIBUTES + DATA_ATTRIBUTES` — it does **not** include `Test` since the method already gets a run marker via `getLocationInfo`.
180
+
`RUNNABLE_ATTRIBUTES` (used for gutter line markers) contains `TestInline + BENCH_ATTRIBUTES + DATA_ATTRIBUTES` — it does **not** include `Test` since the method already gets a run marker via `getLocationInfo`.
182
181
183
182
### Test Detection Logic (mixin.kt)
184
183
185
184
A PHP element is recognized as a Testo test when:
186
-
-**Method:** public + name starts with `test`, OR has any `TEST_ATTRIBUTES` / `TEST_INLINE_ATTRIBUTES`
187
-
-**Function:** has any `TEST_ATTRIBUTES`/ `TEST_INLINE_ATTRIBUTES`(standalone test functions)
185
+
-**Method:** public + name starts with `test`, OR has any `TEST_ATTRIBUTES`
186
+
-**Function:** has any `TEST_ATTRIBUTES` (standalone test functions)
188
187
-**Benchmark:** has any `BENCH_ATTRIBUTES`
189
188
-**Class:** name ends with `Test` or `TestBase`, OR contains test/bench methods
190
189
-**File:** filename matches test class pattern, OR contains test classes/functions/benchmarks
0 commit comments