Added gherkin verification of the JUnit formatter
Этот коммит содержится в:
родитель
055f4a07cf
коммит
11ac07ea24
11 изменённых файлов: 892 добавлений и 59 удалений
|
@ -15,6 +15,10 @@ executors:
|
|||
- image: circleci/golang:1.13.7
|
||||
|
||||
commands:
|
||||
install:
|
||||
description: "Install dependencies"
|
||||
steps:
|
||||
- run: GO111MODULE=on go mod vendor -v
|
||||
vet:
|
||||
description: "Run go vet"
|
||||
steps:
|
||||
|
@ -34,7 +38,7 @@ commands:
|
|||
godog:
|
||||
description: "Run godog"
|
||||
steps:
|
||||
- run: GO111MODULE=off go install ./cmd/godog
|
||||
- run: go install ./cmd/godog
|
||||
- run: godog -f progress
|
||||
go_test:
|
||||
description: "Run go test"
|
||||
|
@ -49,6 +53,7 @@ commands:
|
|||
description: "Run all commands against godog code"
|
||||
steps:
|
||||
- checkout
|
||||
- install
|
||||
- vet
|
||||
- fmt
|
||||
- lint
|
||||
|
|
|
@ -14,7 +14,7 @@ Feature: event stream formatter
|
|||
"""
|
||||
|
||||
Scenario: should process simple scenario
|
||||
Given a feature path "features/load.feature:25"
|
||||
Given a feature path "features/load.feature:26"
|
||||
When I run feature suite with formatter "events"
|
||||
Then the following events should be fired:
|
||||
"""
|
||||
|
@ -35,7 +35,7 @@ Feature: event stream formatter
|
|||
"""
|
||||
|
||||
Scenario: should process outline scenario
|
||||
Given a feature path "features/load.feature:33"
|
||||
Given a feature path "features/load.feature:34"
|
||||
When I run feature suite with formatter "events"
|
||||
Then the following events should be fired:
|
||||
"""
|
||||
|
|
228
features/formatter/junit.feature
Обычный файл
228
features/formatter/junit.feature
Обычный файл
|
@ -0,0 +1,228 @@
|
|||
Feature: JUnit XML formatter
|
||||
In order to support tools that import JUnit XML output
|
||||
I need to be able to support junit formatted output
|
||||
|
||||
Scenario: Support of Feature Plus Scenario Node
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
Scenario: simple scenario
|
||||
simple scenario description
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario" status="" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
|
||||
Scenario: Support of Feature Plus Scenario Node With Tags
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
@TAG1
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
@TAG2 @TAG3
|
||||
Scenario: simple scenario
|
||||
simple scenario description
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario" status="" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
Scenario: Support of Feature Plus Scenario Outline
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
|
||||
Scenario Outline: simple scenario
|
||||
simple scenario description
|
||||
|
||||
Examples: simple examples
|
||||
| status |
|
||||
| pass |
|
||||
| fail |
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="2" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="2" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario #1" status="" time="0s"></testcase>
|
||||
<testcase name="simple scenario #2" status="" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
|
||||
Scenario: Support of Feature Plus Scenario Outline With Tags
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
@TAG1
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
|
||||
@TAG2
|
||||
Scenario Outline: simple scenario
|
||||
simple scenario description
|
||||
|
||||
@TAG3
|
||||
Examples: simple examples
|
||||
| status |
|
||||
| pass |
|
||||
| fail |
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="2" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="2" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario #1" status="" time="0s"></testcase>
|
||||
<testcase name="simple scenario #2" status="" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
Scenario: Support of Feature Plus Scenario With Steps
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
|
||||
Scenario: simple scenario
|
||||
simple scenario description
|
||||
|
||||
Given passing step
|
||||
Then a failing step
|
||||
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="1" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="1" errors="0" time="0s">
|
||||
<testcase name="simple scenario" status="failed" time="0s">
|
||||
<failure message="Step a failing step: intentional failure"></failure>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
Scenario: Support of Feature Plus Scenario Outline With Steps
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
|
||||
Scenario Outline: simple scenario
|
||||
simple scenario description
|
||||
|
||||
Given <status> step
|
||||
|
||||
Examples: simple examples
|
||||
| status |
|
||||
| passing |
|
||||
| failing |
|
||||
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="2" skipped="0" failures="1" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="2" skipped="0" failures="1" errors="0" time="0s">
|
||||
<testcase name="simple scenario #1" status="passed" time="0s"></testcase>
|
||||
<testcase name="simple scenario #2" status="failed" time="0s">
|
||||
<failure message="Step failing step: intentional failure"></failure>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
|
||||
# Currently godog only supports comments on Feature and not
|
||||
# scenario and steps.
|
||||
Scenario: Support of Comments
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
#Feature comment
|
||||
Feature: simple feature
|
||||
simple description
|
||||
|
||||
Scenario: simple scenario
|
||||
simple feature description
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario" status="" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
Scenario: Support of Docstrings
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple description
|
||||
|
||||
Scenario: simple scenario
|
||||
simple feature description
|
||||
|
||||
Given passing step
|
||||
\"\"\" content type
|
||||
step doc string
|
||||
\"\"\"
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="simple scenario" status="passed" time="0s"></testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
||||
Scenario: Support of Undefined, Pending and Skipped status
|
||||
Given a feature "features/simple.feature" file:
|
||||
"""
|
||||
Feature: simple feature
|
||||
simple feature description
|
||||
|
||||
Scenario: simple scenario
|
||||
simple scenario description
|
||||
|
||||
Given passing step
|
||||
And pending step
|
||||
And undefined
|
||||
And passing step
|
||||
|
||||
"""
|
||||
When I run feature suite with formatter "junit"
|
||||
Then the rendered xml will be as follows:
|
||||
""" application/xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="godog" tests="1" skipped="0" failures="0" errors="1" time="0s">
|
||||
<testsuite name="simple feature" tests="1" skipped="0" failures="0" errors="1" time="0s">
|
||||
<testcase name="simple scenario" status="undefined" time="0s">
|
||||
<error message="Step pending step: TODO: write pending definition" type="pending"></error>
|
||||
<error message="Step undefined" type="undefined"></error>
|
||||
<error message="Step passing step" type="skipped"></error>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
"""
|
|
@ -131,8 +131,8 @@ Feature: pretty formatter
|
|||
simple feature description
|
||||
|
||||
Scenario: simple scenario # features/simple.feature:4
|
||||
Given passing step # suite_context.go:72 -> github.com/cucumber/godog.SuiteContext.func2
|
||||
Then a failing step # suite_context.go:318 -> *suiteContext
|
||||
Given passing step # suite_context.go:0 -> SuiteContext.func2
|
||||
Then a failing step # suite_context.go:0 -> *suiteContext
|
||||
intentional failure
|
||||
|
||||
--- Failed steps:
|
||||
|
@ -170,7 +170,7 @@ Feature: pretty formatter
|
|||
simple feature description
|
||||
|
||||
Scenario Outline: simple scenario # features/simple.feature:4
|
||||
Given <status> step # suite_context.go:72 -> github.com/cucumber/godog.SuiteContext.func2
|
||||
Given <status> step # suite_context.go:0 -> SuiteContext.func2
|
||||
|
||||
Examples: simple examples
|
||||
| status |
|
||||
|
@ -235,7 +235,7 @@ Feature: pretty formatter
|
|||
simple description
|
||||
|
||||
Scenario: simple scenario # features/simple.feature:4
|
||||
Given passing step # suite_context.go:72 -> github.com/cucumber/godog.SuiteContext.func2
|
||||
Given passing step # suite_context.go:0 -> SuiteContext.func2
|
||||
\"\"\" content type
|
||||
step doc string
|
||||
\"\"\"
|
||||
|
@ -266,11 +266,11 @@ Feature: pretty formatter
|
|||
simple feature description
|
||||
|
||||
Scenario: simple scenario # features/simple.feature:4
|
||||
Given passing step # suite_context.go:72 -> github.com/cucumber/godog.SuiteContext.func2
|
||||
And pending step # suite_context.go:69 -> github.com/cucumber/godog.SuiteContext.func1
|
||||
Given passing step # suite_context.go:0 -> SuiteContext.func2
|
||||
And pending step # suite_context.go:0 -> SuiteContext.func1
|
||||
TODO: write pending definition
|
||||
And undefined
|
||||
And passing step # suite_context.go:72 -> github.com/cucumber/godog.SuiteContext.func2
|
||||
And passing step # suite_context.go:0 -> SuiteContext.func2
|
||||
|
||||
1 scenarios (1 pending, 1 undefined)
|
||||
4 steps (1 passed, 1 pending, 1 undefined, 1 skipped)
|
||||
|
|
|
@ -8,12 +8,13 @@ Savybė: užkrauti savybes
|
|||
Scenarijus: savybių užkrovimas iš aplanko
|
||||
Duota savybių aplankas "features"
|
||||
Kai aš išskaitau savybes
|
||||
Tada aš turėčiau turėti 12 savybių failus:
|
||||
Tada aš turėčiau turėti 13 savybių failus:
|
||||
"""
|
||||
features/background.feature
|
||||
features/events.feature
|
||||
features/formatter/cucumber.feature
|
||||
features/formatter/events.feature
|
||||
features/formatter/junit.feature
|
||||
features/formatter/pretty.feature
|
||||
features/lang.feature
|
||||
features/load.feature
|
||||
|
|
|
@ -6,12 +6,13 @@ Feature: load features
|
|||
Scenario: load features within path
|
||||
Given a feature path "features"
|
||||
When I parse features
|
||||
Then I should have 12 feature files:
|
||||
Then I should have 13 feature files:
|
||||
"""
|
||||
features/background.feature
|
||||
features/events.feature
|
||||
features/formatter/cucumber.feature
|
||||
features/formatter/events.feature
|
||||
features/formatter/junit.feature
|
||||
features/formatter/pretty.feature
|
||||
features/lang.feature
|
||||
features/load.feature
|
||||
|
|
|
@ -1470,7 +1470,7 @@
|
|||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature:25\"",
|
||||
"name": "a feature path \"features/load.feature:26\"",
|
||||
"line": 17,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
|
@ -1521,7 +1521,7 @@
|
|||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature:33\"",
|
||||
"name": "a feature path \"features/load.feature:34\"",
|
||||
"line": 38,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
|
@ -1564,6 +1564,530 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uri": "features/formatter/junit.feature",
|
||||
"id": "junit-xml-formatter",
|
||||
"keyword": "Feature",
|
||||
"name": "JUnit XML formatter",
|
||||
"description": " In order to support tools that import JUnit XML output\n I need to be able to support junit formatted output",
|
||||
"line": 1,
|
||||
"comments": [
|
||||
{
|
||||
"value": "# Currently godog only supports comments on Feature and not",
|
||||
"line": 154
|
||||
},
|
||||
{
|
||||
"value": "# scenario and steps.",
|
||||
"line": 155
|
||||
}
|
||||
],
|
||||
"elements": [
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-node",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario Node",
|
||||
"description": "",
|
||||
"line": 5,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 6,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description",
|
||||
"content_type": "",
|
||||
"line": 7
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 13,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 14,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 15
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-node-with-tags",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario Node With Tags",
|
||||
"description": "",
|
||||
"line": 24,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 25,
|
||||
"doc_string": {
|
||||
"value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description",
|
||||
"content_type": "",
|
||||
"line": 26
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 34,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 35,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 36
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-outline",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario Outline",
|
||||
"description": "",
|
||||
"line": 44,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 45,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |",
|
||||
"content_type": "",
|
||||
"line": 46
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 58,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 59,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 60
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-tags",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario Outline With Tags",
|
||||
"description": "",
|
||||
"line": 70,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 71,
|
||||
"doc_string": {
|
||||
"value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |",
|
||||
"content_type": "",
|
||||
"line": 72
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 87,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 88,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 89
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-with-steps",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario With Steps",
|
||||
"description": "",
|
||||
"line": 98,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 99,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n",
|
||||
"content_type": "",
|
||||
"line": 100
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 111,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 112,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"failed\" time=\"0s\"\u003e\n \u003cfailure message=\"Step a failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 113
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-steps",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Feature Plus Scenario Outline With Steps",
|
||||
"description": "",
|
||||
"line": 123,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 124,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n",
|
||||
"content_type": "",
|
||||
"line": 125
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 140,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 141,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"passed\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"failed\" time=\"0s\"\u003e\n \u003cfailure message=\"Step failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 142
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-comments",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Comments",
|
||||
"description": "",
|
||||
"line": 156,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 157,
|
||||
"doc_string": {
|
||||
"value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description",
|
||||
"content_type": "",
|
||||
"line": 158
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 166,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 167,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 168
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-docstrings",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Docstrings",
|
||||
"description": "",
|
||||
"line": 176,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 177,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"",
|
||||
"content_type": "",
|
||||
"line": 178
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 190,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 191,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"passed\" time=\"0s\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 192
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "junit-xml-formatter;support-of-undefined,-pending-and-skipped-status",
|
||||
"keyword": "Scenario",
|
||||
"name": "Support of Undefined, Pending and Skipped status",
|
||||
"description": "",
|
||||
"line": 200,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature \"features/simple.feature\" file:",
|
||||
"line": 201,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n",
|
||||
"content_type": "",
|
||||
"line": 202
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "When ",
|
||||
"name": "I run feature suite with formatter \"junit\"",
|
||||
"line": 215,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "the rendered xml will be as follows:",
|
||||
"line": 216,
|
||||
"doc_string": {
|
||||
"value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0s\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0s\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"undefined\" time=\"0s\"\u003e\n \u003cerror message=\"Step pending step: TODO: write pending definition\" type=\"pending\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step undefined\" type=\"undefined\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step passing step\" type=\"skipped\"\u003e\u003c/error\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e",
|
||||
"content_type": "application/xml",
|
||||
"line": 217
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
"result": {
|
||||
"status": "passed",
|
||||
"duration": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uri": "features/formatter/pretty.feature",
|
||||
"id": "pretty-formatter",
|
||||
|
@ -1848,7 +2372,7 @@
|
|||
"name": "the rendered output will be as follows:",
|
||||
"line": 128,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func2\n Then a failing step # suite_context.go:0 -\u003e *suiteContext\n intentional failure\n\n --- Failed steps:\n\n Scenario: simple scenario # features/simple.feature:4\n Then a failing step # features/simple.feature:8\n Error: intentional failure\n\n\n 1 scenarios (1 failed)\n 2 steps (1 passed, 1 failed)\n 0s",
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n Then a failing step # suite_context.go:0 -\u003e *suiteContext\n intentional failure\n\n --- Failed steps:\n\n Scenario: simple scenario # features/simple.feature:4\n Then a failing step # features/simple.feature:8\n Error: intentional failure\n\n\n 1 scenarios (1 failed)\n 2 steps (1 passed, 1 failed)\n 0s",
|
||||
"content_type": "",
|
||||
"line": 129
|
||||
},
|
||||
|
@ -1904,7 +2428,7 @@
|
|||
"name": "the rendered output will be as follows:",
|
||||
"line": 167,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given \u003cstatus\u003e step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func2\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n intentional failure\n\n --- Failed steps:\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given failing step # features/simple.feature:7\n Error: intentional failure\n\n\n 2 scenarios (1 passed, 1 failed)\n 2 steps (1 passed, 1 failed)\n 0s",
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given \u003cstatus\u003e step # suite_context.go:0 -\u003e SuiteContext.func2\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n intentional failure\n\n --- Failed steps:\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given failing step # features/simple.feature:7\n Error: intentional failure\n\n\n 2 scenarios (1 passed, 1 failed)\n 2 steps (1 passed, 1 failed)\n 0s",
|
||||
"content_type": "",
|
||||
"line": 168
|
||||
},
|
||||
|
@ -2016,7 +2540,7 @@
|
|||
"name": "the rendered output will be as follows:",
|
||||
"line": 232,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func2\n \"\"\" content type\n step doc string\n \"\"\"\n\n 1 scenarios (1 passed)\n 1 steps (1 passed)\n 0s",
|
||||
"value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n \"\"\" content type\n step doc string\n \"\"\"\n\n 1 scenarios (1 passed)\n 1 steps (1 passed)\n 0s",
|
||||
"content_type": "",
|
||||
"line": 233
|
||||
},
|
||||
|
@ -2072,7 +2596,7 @@
|
|||
"name": "the rendered output will be as follows:",
|
||||
"line": 263,
|
||||
"doc_string": {
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func2\n And pending step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func1\n TODO: write pending definition\n And undefined\n And passing step # suite_context.go:0 -\u003e github.com/cucumber/godog.SuiteContext.func2\n\n 1 scenarios (1 pending, 1 undefined)\n 4 steps (1 passed, 1 pending, 1 undefined, 1 skipped)\n 0s\n\n You can implement step definitions for undefined steps with these snippets:\n\n func undefined() error {\n return godog.ErrPending\n }\n\n func FeatureContext(s *godog.Suite) {\n s.Step(`^undefined$`, undefined)\n }",
|
||||
"value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n And pending step # suite_context.go:0 -\u003e SuiteContext.func1\n TODO: write pending definition\n And undefined\n And passing step # suite_context.go:0 -\u003e SuiteContext.func2\n\n 1 scenarios (1 pending, 1 undefined)\n 4 steps (1 passed, 1 pending, 1 undefined, 1 skipped)\n 0s\n\n You can implement step definitions for undefined steps with these snippets:\n\n func undefined() error {\n return godog.ErrPending\n }\n\n func FeatureContext(s *godog.Suite) {\n s.Step(`^undefined$`, undefined)\n }",
|
||||
"content_type": "",
|
||||
"line": 264
|
||||
},
|
||||
|
@ -2142,10 +2666,10 @@
|
|||
},
|
||||
{
|
||||
"keyword": "Tada ",
|
||||
"name": "aš turėčiau turėti 12 savybių failus:",
|
||||
"name": "aš turėčiau turėti 13 savybių failus:",
|
||||
"line": 11,
|
||||
"doc_string": {
|
||||
"value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature",
|
||||
"value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature",
|
||||
"content_type": "",
|
||||
"line": 12
|
||||
},
|
||||
|
@ -2203,10 +2727,10 @@
|
|||
},
|
||||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 12 feature files:",
|
||||
"name": "I should have 13 feature files:",
|
||||
"line": 9,
|
||||
"doc_string": {
|
||||
"value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature",
|
||||
"value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature",
|
||||
"content_type": "",
|
||||
"line": 10
|
||||
},
|
||||
|
@ -2225,13 +2749,13 @@
|
|||
"keyword": "Scenario",
|
||||
"name": "load a specific feature file",
|
||||
"description": "",
|
||||
"line": 25,
|
||||
"line": 26,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature\"",
|
||||
"line": 26,
|
||||
"line": 27,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2243,7 +2767,7 @@
|
|||
{
|
||||
"keyword": "When ",
|
||||
"name": "I parse features",
|
||||
"line": 27,
|
||||
"line": 28,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2255,11 +2779,11 @@
|
|||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 1 feature file:",
|
||||
"line": 28,
|
||||
"line": 29,
|
||||
"doc_string": {
|
||||
"value": "features/load.feature",
|
||||
"content_type": "",
|
||||
"line": 29
|
||||
"line": 30
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
|
@ -2276,13 +2800,13 @@
|
|||
"keyword": "Scenario Outline",
|
||||
"name": "loaded feature should have a number of scenarios",
|
||||
"description": "",
|
||||
"line": 40,
|
||||
"line": 41,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature:3\"",
|
||||
"line": 40,
|
||||
"line": 41,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2294,7 +2818,7 @@
|
|||
{
|
||||
"keyword": "When ",
|
||||
"name": "I parse features",
|
||||
"line": 40,
|
||||
"line": 41,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2306,7 +2830,7 @@
|
|||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 0 scenario registered",
|
||||
"line": 40,
|
||||
"line": 41,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2322,13 +2846,13 @@
|
|||
"keyword": "Scenario Outline",
|
||||
"name": "loaded feature should have a number of scenarios",
|
||||
"description": "",
|
||||
"line": 41,
|
||||
"line": 42,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature:6\"",
|
||||
"line": 41,
|
||||
"line": 42,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2340,7 +2864,7 @@
|
|||
{
|
||||
"keyword": "When ",
|
||||
"name": "I parse features",
|
||||
"line": 41,
|
||||
"line": 42,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2352,7 +2876,7 @@
|
|||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 1 scenario registered",
|
||||
"line": 41,
|
||||
"line": 42,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2368,13 +2892,13 @@
|
|||
"keyword": "Scenario Outline",
|
||||
"name": "loaded feature should have a number of scenarios",
|
||||
"description": "",
|
||||
"line": 42,
|
||||
"line": 43,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature\"",
|
||||
"line": 42,
|
||||
"line": 43,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2386,7 +2910,7 @@
|
|||
{
|
||||
"keyword": "When ",
|
||||
"name": "I parse features",
|
||||
"line": 42,
|
||||
"line": 43,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2398,7 +2922,7 @@
|
|||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 4 scenario registered",
|
||||
"line": 42,
|
||||
"line": 43,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2414,13 +2938,13 @@
|
|||
"keyword": "Scenario",
|
||||
"name": "load a number of feature files",
|
||||
"description": "",
|
||||
"line": 44,
|
||||
"line": 45,
|
||||
"type": "scenario",
|
||||
"steps": [
|
||||
{
|
||||
"keyword": "Given ",
|
||||
"name": "a feature path \"features/load.feature\"",
|
||||
"line": 45,
|
||||
"line": 46,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2432,7 +2956,7 @@
|
|||
{
|
||||
"keyword": "And ",
|
||||
"name": "a feature path \"features/events.feature\"",
|
||||
"line": 46,
|
||||
"line": 47,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2444,7 +2968,7 @@
|
|||
{
|
||||
"keyword": "When ",
|
||||
"name": "I parse features",
|
||||
"line": 47,
|
||||
"line": 48,
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
},
|
||||
|
@ -2456,11 +2980,11 @@
|
|||
{
|
||||
"keyword": "Then ",
|
||||
"name": "I should have 2 feature files:",
|
||||
"line": 48,
|
||||
"line": 49,
|
||||
"doc_string": {
|
||||
"value": "features/events.feature\nfeatures/load.feature",
|
||||
"content_type": "",
|
||||
"line": 49
|
||||
"line": 50
|
||||
},
|
||||
"match": {
|
||||
"location": "suite_context.go:0"
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites name="succeed" tests="69" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuites name="succeed" tests="78" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testsuite name="JUnit XML formatter" tests="9" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="Support of Feature Plus Scenario Node" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario Node With Tags" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario Outline" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario Outline With Tags" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario With Steps" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario Outline With Steps" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Comments" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Docstrings" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Undefined, Pending and Skipped status" status="passed" time="0s"></testcase>
|
||||
</testsuite>
|
||||
<testsuite name="cucumber json formatter" tests="9" skipped="0" failures="0" errors="0" time="0s">
|
||||
<testcase name="Support of Feature Plus Scenario Node" status="passed" time="0s"></testcase>
|
||||
<testcase name="Support of Feature Plus Scenario Node With Tags" status="passed" time="0s"></testcase>
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
...................................................................... 70
|
||||
...................................................................... 140
|
||||
...................................................................... 210
|
||||
.................................................................. 276
|
||||
...................................................................... 280
|
||||
....................... 303
|
||||
|
||||
|
||||
69 scenarios (69 passed)
|
||||
276 steps (276 passed)
|
||||
78 scenarios (78 passed)
|
||||
303 steps (303 passed)
|
||||
0s
|
|
@ -277,7 +277,7 @@ func testSucceedRun(t *testing.T, format string, concurrency int, expectedOutput
|
|||
}
|
||||
|
||||
status := RunWithOptions("succeed", func(s *Suite) { SuiteContext(s) }, opt)
|
||||
require.Equal(t, exitSuccess, status)
|
||||
assert.Equal(t, exitSuccess, status)
|
||||
|
||||
b, err := ioutil.ReadAll(output)
|
||||
require.NoError(t, err)
|
||||
|
|
|
@ -3,6 +3,7 @@ package godog
|
|||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"io"
|
||||
"path/filepath"
|
||||
|
@ -78,6 +79,9 @@ func SuiteContext(s *Suite, additionalContextInitializers ...func(suite *Suite))
|
|||
// Introduced to test formatter/pretty.feature
|
||||
s.Step(`^the rendered output will be as follows:$`, c.theRenderOutputWillBe)
|
||||
|
||||
// Introduced to test formatter/junit.feature
|
||||
s.Step(`^the rendered xml will be as follows:$`, c.theRenderXMLWillBe)
|
||||
|
||||
s.Step(`^(?:a )?failing multistep$`, func() Steps {
|
||||
return Steps{"passing step", "failing step"}
|
||||
})
|
||||
|
@ -463,38 +467,67 @@ func (s *suiteContext) theseEventsHadToBeFiredForNumberOfTimes(tbl *gherkin.Data
|
|||
|
||||
func (s *suiteContext) theRenderJSONWillBe(docstring *gherkin.DocString) error {
|
||||
suiteCtxReg := regexp.MustCompile(`suite_context.go:\d+`)
|
||||
|
||||
expectedString := docstring.Content
|
||||
expectedString = suiteCtxReg.ReplaceAllString(expectedString, `suite_context.go:0`)
|
||||
actualString := s.out.String()
|
||||
actualString = suiteCtxReg.ReplaceAllString(actualString, `suite_context.go:0`)
|
||||
|
||||
var expected []cukeFeatureJSON
|
||||
if err := json.Unmarshal([]byte(suiteCtxReg.ReplaceAllString(docstring.Content, `suite_context.go:0`)), &expected); err != nil {
|
||||
if err := json.Unmarshal([]byte(expectedString), &expected); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var actual []cukeFeatureJSON
|
||||
replaced := suiteCtxReg.ReplaceAllString(s.out.String(), `suite_context.go:0`)
|
||||
if err := json.Unmarshal([]byte(replaced), &actual); err != nil {
|
||||
if err := json.Unmarshal([]byte(actualString), &actual); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(expected, actual) {
|
||||
return fmt.Errorf("expected json does not match actual: %s", replaced)
|
||||
return fmt.Errorf("expected json does not match actual: %s", actualString)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *suiteContext) theRenderOutputWillBe(docstring *gherkin.DocString) error {
|
||||
suiteCtxReg := regexp.MustCompile(`suite_context.go:\d+`)
|
||||
suiteCtxFuncReg := regexp.MustCompile(`github.com/cucumber/godog.SuiteContext.func(\d+)`)
|
||||
|
||||
expected := trimAllLines(strings.TrimSpace(docstring.Content))
|
||||
expected = suiteCtxReg.ReplaceAllString(expected, `suite_context.go:0`)
|
||||
actual := trimAllLines(strings.TrimSpace(s.out.String()))
|
||||
actual = suiteCtxReg.ReplaceAllString(actual, `suite_context.go:0`)
|
||||
expected = suiteCtxReg.ReplaceAllString(expected, "suite_context.go:0")
|
||||
expected = suiteCtxFuncReg.ReplaceAllString(expected, "SuiteContext.func$1")
|
||||
|
||||
if expected != actual {
|
||||
return fmt.Errorf("expected output\n%s\ndoes not match actual:\n%s\n", expected, actual)
|
||||
actual := trimAllLines(strings.TrimSpace(s.out.String()))
|
||||
actual = suiteCtxReg.ReplaceAllString(actual, "suite_context.go:0")
|
||||
actual = suiteCtxFuncReg.ReplaceAllString(actual, "SuiteContext.func$1")
|
||||
|
||||
if err := match(expected, actual); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *suiteContext) theRenderXMLWillBe(docstring *gherkin.DocString) error {
|
||||
expectedString := docstring.Content
|
||||
actualString := s.out.String()
|
||||
|
||||
var expected junitPackageSuite
|
||||
if err := xml.Unmarshal([]byte(expectedString), &expected); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var actual junitPackageSuite
|
||||
if err := xml.Unmarshal([]byte(actualString), &actual); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(expected, actual) {
|
||||
return fmt.Errorf("expected xml does not match actual: %s", actualString)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type testFormatter struct {
|
||||
basefmt
|
||||
scenarios []interface{}
|
||||
|
@ -521,3 +554,32 @@ func (f *testFormatter) Node(node interface{}) {
|
|||
}
|
||||
|
||||
func (f *testFormatter) Summary() {}
|
||||
|
||||
func match(expected, actual string) error {
|
||||
act := []byte(actual)
|
||||
exp := []byte(expected)
|
||||
|
||||
if len(act) != len(exp) {
|
||||
return fmt.Errorf("content lengths do not match, expected: %d, actual %d, expected output:\n%s, actual output:\n%s", len(exp), len(act), expected, actual)
|
||||
}
|
||||
|
||||
for i := 0; i < len(exp); i++ {
|
||||
if act[i] == exp[i] {
|
||||
continue
|
||||
}
|
||||
|
||||
cpe := make([]byte, len(exp))
|
||||
copy(cpe, exp)
|
||||
e := append(exp[:i], '^')
|
||||
e = append(e, cpe[i:]...)
|
||||
|
||||
cpa := make([]byte, len(act))
|
||||
copy(cpa, act)
|
||||
a := append(act[:i], '^')
|
||||
a = append(a, cpa[i:]...)
|
||||
|
||||
return fmt.Errorf("expected output does not match:\n%s\n\n%s", string(a), string(e))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче