diff --git a/CHANGELOG.md b/CHANGELOG.md index f9552106..7e6a0629 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +- Add `findAllStepDefinitions()` ([#119](https://github.com/cucumber/query/pull/119)) ## [14.4.0] - 2025-09-29 ### Added diff --git a/java/src/main/java/io/cucumber/query/Query.java b/java/src/main/java/io/cucumber/query/Query.java index f0c7ca64..912cabd7 100644 --- a/java/src/main/java/io/cucumber/query/Query.java +++ b/java/src/main/java/io/cucumber/query/Query.java @@ -101,6 +101,10 @@ public List findAllTestCaseStarted() { .isPresent()) .collect(toList()); } + + public List findAllStepDefinitions(){ + return new ArrayList<>(repository.stepDefinitionById.values()); + } public List findAllTestCaseFinished() { return repository.testCaseFinishedByTestCaseStartedId.values().stream() diff --git a/java/src/test/java/io/cucumber/query/QueryAcceptanceTest.java b/java/src/test/java/io/cucumber/query/QueryAcceptanceTest.java index 89994c8b..fcf9fe03 100644 --- a/java/src/test/java/io/cucumber/query/QueryAcceptanceTest.java +++ b/java/src/test/java/io/cucumber/query/QueryAcceptanceTest.java @@ -110,6 +110,7 @@ static Map> createQueries() { queries.put("countTestCasesStarted", Query::countTestCasesStarted); queries.put("findAllPickles", (query) -> query.findAllPickles().size()); queries.put("findAllPickleSteps", (query) -> query.findAllPickleSteps().size()); + queries.put("findAllStepDefinitions", (query) -> query.findAllStepDefinitions().size()); queries.put("findAllTestCaseStarted", (query) -> query.findAllTestCaseStarted().size()); queries.put("findAllTestCaseFinished", (query) -> query.findAllTestCaseFinished().size()); queries.put("findAllTestRunHookStarted", (query) -> query.findAllTestRunHookStarted().size()); diff --git a/javascript/src/Query.ts b/javascript/src/Query.ts index c61baf32..2cb19449 100644 --- a/javascript/src/Query.ts +++ b/javascript/src/Query.ts @@ -481,6 +481,10 @@ export default class Query { return [...this.pickleStepById.values()] } + public findAllStepDefinitions(): ReadonlyArray { + return [...this.stepDefinitionById.values()] + } + public findAllTestCaseStarted(): ReadonlyArray { return sortBy( [...this.testCaseStartedById.values()].filter((testCaseStarted) => { diff --git a/javascript/src/acceptance.spec.ts b/javascript/src/acceptance.spec.ts index 379ba7c1..b6d70d7e 100644 --- a/javascript/src/acceptance.spec.ts +++ b/javascript/src/acceptance.spec.ts @@ -30,6 +30,7 @@ describe('Acceptance Tests', async () => { countTestCasesStarted: (query: Query) => query.countTestCasesStarted(), findAllPickles: (query: Query) => query.findAllPickles().length, findAllPickleSteps: (query: Query) => query.findAllPickleSteps().length, + findAllStepDefinitions: (query: Query) => query.findAllStepDefinitions().length, findAllTestCaseStarted: (query: Query) => query.findAllTestCaseStarted().length, findAllTestRunHookStarted: (query: Query) => query.findAllTestRunHookStarted().length, findAllTestRunHookFinished: (query: Query) => query.findAllTestRunHookFinished().length, diff --git a/testdata/src/attachments.findAllStepDefinitions.results.json b/testdata/src/attachments.findAllStepDefinitions.results.json new file mode 100644 index 00000000..c7930257 --- /dev/null +++ b/testdata/src/attachments.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/testdata/src/empty.findAllStepDefinitions.results.json b/testdata/src/empty.findAllStepDefinitions.results.json new file mode 100644 index 00000000..c2270834 --- /dev/null +++ b/testdata/src/empty.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/testdata/src/examples-tables.findAllStepDefinitions.results.json b/testdata/src/examples-tables.findAllStepDefinitions.results.json new file mode 100644 index 00000000..7813681f --- /dev/null +++ b/testdata/src/examples-tables.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/testdata/src/global-hooks-attachments.findAllStepDefinitions.results.json b/testdata/src/global-hooks-attachments.findAllStepDefinitions.results.json new file mode 100644 index 00000000..56a6051c --- /dev/null +++ b/testdata/src/global-hooks-attachments.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/testdata/src/global-hooks.findAllStepDefinitions.results.json b/testdata/src/global-hooks.findAllStepDefinitions.results.json new file mode 100644 index 00000000..d8263ee9 --- /dev/null +++ b/testdata/src/global-hooks.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/testdata/src/hooks.findAllStepDefinitions.results.json b/testdata/src/hooks.findAllStepDefinitions.results.json new file mode 100644 index 00000000..d8263ee9 --- /dev/null +++ b/testdata/src/hooks.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/testdata/src/minimal.findAllStepDefinitions.results.json b/testdata/src/minimal.findAllStepDefinitions.results.json new file mode 100644 index 00000000..56a6051c --- /dev/null +++ b/testdata/src/minimal.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/testdata/src/rules.findAllStepDefinitions.results.json b/testdata/src/rules.findAllStepDefinitions.results.json new file mode 100644 index 00000000..62f94575 --- /dev/null +++ b/testdata/src/rules.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/testdata/src/unknown-parameter-type.findAllStepDefinitions.results.json b/testdata/src/unknown-parameter-type.findAllStepDefinitions.results.json new file mode 100644 index 00000000..c2270834 --- /dev/null +++ b/testdata/src/unknown-parameter-type.findAllStepDefinitions.results.json @@ -0,0 +1 @@ +0 \ No newline at end of file