From be6297cd5ec66d3713881d6f693885d58f95c75f Mon Sep 17 00:00:00 2001 From: jcamiel Date: Thu, 4 Jan 2024 16:43:51 +0100 Subject: [PATCH] Export entry source line number in JSON output --- .../hurl/tests_failed/assert_match_utf8.out.pattern | 2 +- integration/hurl/tests_failed/assert_match_utf8.ps1 | 2 +- integration/hurl/tests_failed/assert_match_utf8.sh | 2 +- integration/hurl/tests_failed/assert_status.out.pattern | 2 +- integration/hurl/tests_failed/assert_status.ps1 | 2 +- integration/hurl/tests_failed/assert_status.sh | 2 +- .../assert_template_variable_not_found.out.pattern | 2 +- .../tests_failed/assert_template_variable_not_found.ps1 | 2 +- .../tests_failed/assert_template_variable_not_found.sh | 2 +- .../hurl/tests_failed/assert_value_error.out.pattern | 2 +- integration/hurl/tests_failed/assert_value_error.ps1 | 2 +- integration/hurl/tests_failed/assert_value_error.sh | 2 +- .../hurl/tests_failed/query_header_not_found.out.pattern | 2 +- integration/hurl/tests_failed/query_header_not_found.ps1 | 2 +- integration/hurl/tests_failed/query_header_not_found.sh | 2 +- integration/hurl/tests_ok/assert_header.out.pattern | 2 +- integration/hurl/tests_ok/json_output.out.pattern | 2 +- integration/hurl/tests_ok/json_output.ps1 | 2 +- integration/hurl/tests_ok/json_output.sh | 2 +- integration/hurl/tests_ok/retry.out.pattern | 2 +- integration/hurl/tests_ok/retry.ps1 | 2 +- integration/hurl/tests_ok/retry.sh | 2 +- integration/hurl/tests_ok/retry_option.out.pattern | 2 +- integration/hurl/tests_ok/retry_option.ps1 | 2 +- integration/hurl/tests_ok/retry_option.sh | 2 +- packages/hurl/src/json/result.rs | 4 ++++ packages/hurl/src/main.rs | 2 ++ packages/hurl/src/report/html/run.rs | 2 +- packages/hurl/src/report/html/timeline/mod.rs | 2 +- packages/hurl/src/report/junit/mod.rs | 2 ++ packages/hurl/src/report/junit/testcase.rs | 2 ++ packages/hurl/src/runner/entry.rs | 9 +++++++-- packages/hurl/src/runner/hurl_file.rs | 1 + packages/hurl/src/runner/result.rs | 1 + packages/hurl_core/src/ast/core.rs | 7 +++++++ 35 files changed, 53 insertions(+), 29 deletions(-) diff --git a/integration/hurl/tests_failed/assert_match_utf8.out.pattern b/integration/hurl/tests_failed/assert_match_utf8.out.pattern index ffbaff629..907c38fb6 100644 --- a/integration/hurl/tests_failed/assert_match_utf8.out.pattern +++ b/integration/hurl/tests_failed/assert_match_utf8.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Invalid decoding\n --> tests_failed/assert_match_utf8.hurl:4:1\n |\n 4 | body matches \".*\"\n | ^^^^ the body can not be decoded with charset 'utf-8'\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert/match-utf8"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"1"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~}],"filename":"tests_failed/assert_match_utf8.hurl","success":false,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Invalid decoding\n --> tests_failed/assert_match_utf8.hurl:4:1\n |\n 4 | body matches \".*\"\n | ^^^^ the body can not be decoded with charset 'utf-8'\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert/match-utf8"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"1"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":1,"time":~~~}],"filename":"tests_failed/assert_match_utf8.hurl","success":false,"time":~~~} diff --git a/integration/hurl/tests_failed/assert_match_utf8.ps1 b/integration/hurl/tests_failed/assert_match_utf8.ps1 index 829a127a4..5d027fae6 100644 --- a/integration/hurl/tests_failed/assert_match_utf8.ps1 +++ b/integration/hurl/tests_failed/assert_match_utf8.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_failed/assert_match_utf8.hurl --json +hurl --json tests_failed/assert_match_utf8.hurl diff --git a/integration/hurl/tests_failed/assert_match_utf8.sh b/integration/hurl/tests_failed/assert_match_utf8.sh index ca5408ad7..d6194a9c1 100755 --- a/integration/hurl/tests_failed/assert_match_utf8.sh +++ b/integration/hurl/tests_failed/assert_match_utf8.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_failed/assert_match_utf8.hurl --json +hurl --json tests_failed/assert_match_utf8.hurl diff --git a/integration/hurl/tests_failed/assert_status.out.pattern b/integration/hurl/tests_failed/assert_status.out.pattern index 1267ca998..ffb297d34 100644 --- a/integration/hurl/tests_failed/assert_status.out.pattern +++ b/integration/hurl/tests_failed/assert_status.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":9,"success":true},{"line":9,"message":"Assert status code\n --> tests_failed/assert_status.hurl:9:6\n |\n 9 | HTTP 200\n | ^^^ actual value is <404>\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/not_found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"207"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~}],"filename":"tests_failed/assert_status.hurl","success":false,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":9,"success":true},{"line":9,"message":"Assert status code\n --> tests_failed/assert_status.hurl:9:6\n |\n 9 | HTTP 200\n | ^^^ actual value is <404>\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/not_found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"207"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":7,"time":~~~}],"filename":"tests_failed/assert_status.hurl","success":false,"time":~~~} diff --git a/integration/hurl/tests_failed/assert_status.ps1 b/integration/hurl/tests_failed/assert_status.ps1 index 298e99ed4..02fc7df8d 100644 --- a/integration/hurl/tests_failed/assert_status.ps1 +++ b/integration/hurl/tests_failed/assert_status.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_failed/assert_status.hurl --json +hurl --json tests_failed/assert_status.hurl diff --git a/integration/hurl/tests_failed/assert_status.sh b/integration/hurl/tests_failed/assert_status.sh index 0b2b9b212..435546901 100755 --- a/integration/hurl/tests_failed/assert_status.sh +++ b/integration/hurl/tests_failed/assert_status.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_failed/assert_status.hurl --json +hurl --json tests_failed/assert_status.hurl diff --git a/integration/hurl/tests_failed/assert_template_variable_not_found.out.pattern b/integration/hurl/tests_failed/assert_template_variable_not_found.out.pattern index 94c4af8b3..80d7e93ff 100644 --- a/integration/hurl/tests_failed/assert_template_variable_not_found.out.pattern +++ b/integration/hurl/tests_failed/assert_template_variable_not_found.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Undefined variable\n --> tests_failed/assert_template_variable_not_found.hurl:4:29\n |\n 4 | header \"content-type\" == \"{{content_type}}\"\n | ^^^^^^^^^^^^ you must set the variable content_type\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert-template-variable-not-found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~}],"filename":"tests_failed/assert_template_variable_not_found.hurl","success":false,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Undefined variable\n --> tests_failed/assert_template_variable_not_found.hurl:4:29\n |\n 4 | header \"content-type\" == \"{{content_type}}\"\n | ^^^^^^^^^^^^ you must set the variable content_type\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert-template-variable-not-found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":1,"time":~~~}],"filename":"tests_failed/assert_template_variable_not_found.hurl","success":false,"time":~~~} diff --git a/integration/hurl/tests_failed/assert_template_variable_not_found.ps1 b/integration/hurl/tests_failed/assert_template_variable_not_found.ps1 index 7e57528ea..b1b776075 100644 --- a/integration/hurl/tests_failed/assert_template_variable_not_found.ps1 +++ b/integration/hurl/tests_failed/assert_template_variable_not_found.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_failed/assert_template_variable_not_found.hurl --json +hurl --json tests_failed/assert_template_variable_not_found.hurl diff --git a/integration/hurl/tests_failed/assert_template_variable_not_found.sh b/integration/hurl/tests_failed/assert_template_variable_not_found.sh index 00699ca5f..f3f977835 100755 --- a/integration/hurl/tests_failed/assert_template_variable_not_found.sh +++ b/integration/hurl/tests_failed/assert_template_variable_not_found.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_failed/assert_template_variable_not_found.hurl --json +hurl --json tests_failed/assert_template_variable_not_found.hurl diff --git a/integration/hurl/tests_failed/assert_value_error.out.pattern b/integration/hurl/tests_failed/assert_value_error.out.pattern index 83ee8a160..81c395a60 100644 --- a/integration/hurl/tests_failed/assert_value_error.out.pattern +++ b/integration/hurl/tests_failed/assert_value_error.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:4:0\n |\n 4 | header \"content-type\" == \"XXX\"\n | actual: string \n | expected: string \n |","success":false},{"line":5,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:5:0\n |\n 5 | header \"content-type\" != \"text/html; charset=utf-8\"\n | actual: string \n | expected: string \n |","success":false},{"line":6,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:6:0\n |\n 6 | jsonpath \"$.id\" == \"000001\"\n | actual: none\n | expected: string <000001>\n |","success":false},{"line":7,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:7:0\n |\n 7 | jsonpath \"$.values\" includes 100\n | actual: [int <1>, int <2>, int <3>]\n | expected: includes int <100>\n |","success":false},{"line":8,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:8:0\n |\n 8 | jsonpath \"$.values\" not contains \"Hello\"\n | actual: [int <1>, int <2>, int <3>]\n | expected: not contains string \n | >>> types between actual and expected are not consistent\n |","success":false},{"line":9,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:9:0\n |\n 9 | jsonpath \"$.count\" > 5\n | actual: int <2>\n | expected: greater than int <5>\n |","success":false},{"line":10,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:10:0\n |\n10 | jsonpath \"$.count\" isFloat\n | actual: int <2>\n | expected: float\n |","success":false},{"line":11,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:11:0\n |\n11 | bytes contains hex,00;\n | actual: byte array <7b202276616c756573223a205b312c322c335d2c2022636f756e74223a20327d>\n | expected: contains byte array <00>\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert-value"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"32"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~}],"filename":"tests_failed/assert_value_error.hurl","success":false,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":4,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:4:0\n |\n 4 | header \"content-type\" == \"XXX\"\n | actual: string \n | expected: string \n |","success":false},{"line":5,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:5:0\n |\n 5 | header \"content-type\" != \"text/html; charset=utf-8\"\n | actual: string \n | expected: string \n |","success":false},{"line":6,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:6:0\n |\n 6 | jsonpath \"$.id\" == \"000001\"\n | actual: none\n | expected: string <000001>\n |","success":false},{"line":7,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:7:0\n |\n 7 | jsonpath \"$.values\" includes 100\n | actual: [int <1>, int <2>, int <3>]\n | expected: includes int <100>\n |","success":false},{"line":8,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:8:0\n |\n 8 | jsonpath \"$.values\" not contains \"Hello\"\n | actual: [int <1>, int <2>, int <3>]\n | expected: not contains string \n | >>> types between actual and expected are not consistent\n |","success":false},{"line":9,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:9:0\n |\n 9 | jsonpath \"$.count\" > 5\n | actual: int <2>\n | expected: greater than int <5>\n |","success":false},{"line":10,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:10:0\n |\n10 | jsonpath \"$.count\" isFloat\n | actual: int <2>\n | expected: float\n |","success":false},{"line":11,"message":"Assert failure\n --> tests_failed/assert_value_error.hurl:11:0\n |\n11 | bytes contains hex,00;\n | actual: byte array <7b202276616c756573223a205b312c322c335d2c2022636f756e74223a20327d>\n | expected: contains byte array <00>\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-assert-value"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"32"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":1,"time":~~~}],"filename":"tests_failed/assert_value_error.hurl","success":false,"time":~~~} diff --git a/integration/hurl/tests_failed/assert_value_error.ps1 b/integration/hurl/tests_failed/assert_value_error.ps1 index b0d5e4507..808e54f14 100644 --- a/integration/hurl/tests_failed/assert_value_error.ps1 +++ b/integration/hurl/tests_failed/assert_value_error.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_failed/assert_value_error.hurl --json +hurl --json tests_failed/assert_value_error.hurl diff --git a/integration/hurl/tests_failed/assert_value_error.sh b/integration/hurl/tests_failed/assert_value_error.sh index e471310bd..f1c3b4ad9 100755 --- a/integration/hurl/tests_failed/assert_value_error.sh +++ b/integration/hurl/tests_failed/assert_value_error.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_failed/assert_value_error.hurl --json +hurl --json tests_failed/assert_value_error.hurl diff --git a/integration/hurl/tests_failed/query_header_not_found.out.pattern b/integration/hurl/tests_failed/query_header_not_found.out.pattern index 606902fe5..5dcdd7a5e 100644 --- a/integration/hurl/tests_failed/query_header_not_found.out.pattern +++ b/integration/hurl/tests_failed/query_header_not_found.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":3,"message":"Header not found\n --> tests_failed/query_header_not_found.hurl:3:1\n |\n 3 | Custom: XXX\n | ^^^^^^ this header has not been found in the response\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-query-header-not-found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~}],"filename":"tests_failed/query_header_not_found.hurl","success":false,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":3,"message":"Header not found\n --> tests_failed/query_header_not_found.hurl:3:1\n |\n 3 | Custom: XXX\n | ^^^^^^ this header has not been found in the response\n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/error-query-header-not-found"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":1,"time":~~~}],"filename":"tests_failed/query_header_not_found.hurl","success":false,"time":~~~} diff --git a/integration/hurl/tests_failed/query_header_not_found.ps1 b/integration/hurl/tests_failed/query_header_not_found.ps1 index 1c6f8eae1..5472098e1 100644 --- a/integration/hurl/tests_failed/query_header_not_found.ps1 +++ b/integration/hurl/tests_failed/query_header_not_found.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_failed/query_header_not_found.hurl --json +hurl --json tests_failed/query_header_not_found.hurl diff --git a/integration/hurl/tests_failed/query_header_not_found.sh b/integration/hurl/tests_failed/query_header_not_found.sh index a1c895847..7bbde2b91 100755 --- a/integration/hurl/tests_failed/query_header_not_found.sh +++ b/integration/hurl/tests_failed/query_header_not_found.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_failed/query_header_not_found.hurl --json +hurl --json tests_failed/query_header_not_found.hurl diff --git a/integration/hurl/tests_ok/assert_header.out.pattern b/integration/hurl/tests_ok/assert_header.out.pattern index 73165a926..2c486c1e3 100644 --- a/integration/hurl/tests_ok/assert_header.out.pattern +++ b/integration/hurl/tests_ok/assert_header.out.pattern @@ -1 +1 @@ -{"cookies":[{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie1","path":"/","value":"value1"},{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie2","path":"/","value":"value2"},{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie3","path":"/","value":"value3"}],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":3,"success":true},{"line":4,"success":true},{"line":5,"success":true},{"line":7,"success":true},{"line":8,"success":true},{"line":9,"success":true},{"line":10,"success":true},{"line":11,"success":true},{"line":12,"success":true},{"line":13,"success":true},{"line":14,"success":true},{"line":15,"success":true},{"line":16,"success":true},{"line":17,"success":true},{"line":18,"success":true},{"line":19,"success":true},{"line":20,"success":true},{"line":21,"success":true},{"line":22,"success":true},{"line":23,"success":true},{"line":24,"success":true},{"line":25,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-header"},"response":{"cookies":[{"name":"cookie1","path":"/","value":"value1"},{"name":"cookie2","path":"/","value":"value2"},{"name":"cookie3","path":"/","value":"value3"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Header1","value":"value1"},{"name":"ETag","value":"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""},{"name":"Expires","value":"Wed, 21 Oct 2015 07:28:00 GMT"},{"name":"x-fruit","value":"Banana"},{"name":"x-fruit","value":"Lemon"},{"name":"x-fruit","value":"Grape"},{"name":"x-fruit","value":"Strawberry"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Set-Cookie","value":"cookie1=value1; Path=/"},{"name":"Set-Cookie","value":"cookie2=value2; Path=/"},{"name":"Set-Cookie","value":"cookie3=value3; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":~~~,"connect":~~~,"end_call":~~~,"name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~},{"asserts":[{"line":30,"success":true},{"line":30,"success":true},{"line":34,"success":true},{"line":35,"success":true},{"line":36,"success":true},{"line":37,"success":true},{"line":38,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie3","value":"value3"},{"name":"cookie2","value":"value2"},{"name":"cookie1","value":"value1"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie3=value3; cookie2=value2; cookie1=value1"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-header"},"response":{"cookies":[{"name":"cookie1","path":"/","value":"value1"},{"name":"cookie2","path":"/","value":"value2"},{"name":"cookie3","path":"/","value":"value3"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Header1","value":"value1"},{"name":"ETag","value":"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""},{"name":"Expires","value":"Wed, 21 Oct 2015 07:28:00 GMT"},{"name":"x-fruit","value":"Banana"},{"name":"x-fruit","value":"Lemon"},{"name":"x-fruit","value":"Grape"},{"name":"x-fruit","value":"Strawberry"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Set-Cookie","value":"cookie1=value1; Path=/"},{"name":"Set-Cookie","value":"cookie2=value2; Path=/"},{"name":"Set-Cookie","value":"cookie3=value3; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":~~~,"connect":~~~,"end_call":~~~,"name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"fruits","value":["Banana","Lemon","Grape","Strawberry"]}],"index":2,"time":~~~}],"filename":"tests_ok/assert_header.hurl","success":true,"time":~~~} +{"cookies":[{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie1","path":"/","value":"value1"},{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie2","path":"/","value":"value2"},{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie3","path":"/","value":"value3"}],"entries":[{"asserts":[{"line":2,"success":true},{"line":2,"success":true},{"line":3,"success":true},{"line":4,"success":true},{"line":5,"success":true},{"line":7,"success":true},{"line":8,"success":true},{"line":9,"success":true},{"line":10,"success":true},{"line":11,"success":true},{"line":12,"success":true},{"line":13,"success":true},{"line":14,"success":true},{"line":15,"success":true},{"line":16,"success":true},{"line":17,"success":true},{"line":18,"success":true},{"line":19,"success":true},{"line":20,"success":true},{"line":21,"success":true},{"line":22,"success":true},{"line":23,"success":true},{"line":24,"success":true},{"line":25,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-header"},"response":{"cookies":[{"name":"cookie1","path":"/","value":"value1"},{"name":"cookie2","path":"/","value":"value2"},{"name":"cookie3","path":"/","value":"value3"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Header1","value":"value1"},{"name":"ETag","value":"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""},{"name":"Expires","value":"~~~"},{"name":"x-fruit","value":"Banana"},{"name":"x-fruit","value":"Lemon"},{"name":"x-fruit","value":"Grape"},{"name":"x-fruit","value":"Strawberry"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Set-Cookie","value":"cookie1=value1; Path=/"},{"name":"Set-Cookie","value":"cookie2=value2; Path=/"},{"name":"Set-Cookie","value":"cookie3=value3; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":1,"time":~~~},{"asserts":[{"line":30,"success":true},{"line":30,"success":true},{"line":34,"success":true},{"line":35,"success":true},{"line":36,"success":true},{"line":37,"success":true},{"line":38,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie3","value":"value3"},{"name":"cookie2","value":"value2"},{"name":"cookie1","value":"value1"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie3=value3; cookie2=value2; cookie1=value1"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-header"},"response":{"cookies":[{"name":"cookie1","path":"/","value":"value1"},{"name":"cookie2","path":"/","value":"value2"},{"name":"cookie3","path":"/","value":"value3"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Header1","value":"value1"},{"name":"ETag","value":"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""},{"name":"Expires","value":"~~~"},{"name":"x-fruit","value":"Banana"},{"name":"x-fruit","value":"Lemon"},{"name":"x-fruit","value":"Grape"},{"name":"x-fruit","value":"Strawberry"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"0"},{"name":"Set-Cookie","value":"cookie1=value1; Path=/"},{"name":"Set-Cookie","value":"cookie2=value2; Path=/"},{"name":"Set-Cookie","value":"cookie3=value3; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"fruits","value":["Banana","Lemon","Grape","Strawberry"]}],"index":2,"line":29,"time":~~~}],"filename":"tests_ok/assert_header.hurl","success":true,"time":~~~} diff --git a/integration/hurl/tests_ok/json_output.out.pattern b/integration/hurl/tests_ok/json_output.out.pattern index a96af2057..60daadbda 100644 --- a/integration/hurl/tests_ok/json_output.out.pattern +++ b/integration/hurl/tests_ok/json_output.out.pattern @@ -1 +1 @@ -{"cookies":[{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie2","path":"/","value":"valueA"}],"entries":[{"asserts":[{"line":7,"success":true},{"line":7,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/hello"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/cookies/set-session-cookie2-valueA"},"response":{"cookies":[{"name":"cookie2","path":"/","value":"valueA"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Set-Cookie","value":"cookie2=valueA; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":22,"success":true},{"line":22,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/follow-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"267"},{"name":"Location","value":"http://localhost:8000/following-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"time":~~~},{"asserts":[{"line":33,"success":true},{"line":33,"success":true},{"line":36,"success":true},{"line":35,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/follow-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"267"},{"name":"Location","value":"http://localhost:8000/following-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}},{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/following-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"70"},{"name":"Location","value":"http://localhost:8000/followed-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}},{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/followed-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"18"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"time":~~~},{"asserts":[{"line":42,"success":true},{"line":42,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/captures"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Header1","value":"value1"},{"name":"Header2","value":"Hello Bob!"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"param1","value":"value1"},{"name":"param2","value":"Bob"},{"name":"param3","value":"Bob"},{"name":"data1","value":"Hello world!"},{"name":"data2","value":"Hello world!"}],"index":5,"time":~~~},{"asserts":[{"line":54,"success":true},{"line":54,"success":true},{"line":56,"success":true},{"line":57,"success":true},{"line":58,"success":true},{"line":59,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-json"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"236"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":6,"time":~~~}],"filename":"tests_ok/json_output.hurl","success":true,"time":~~~} +{"cookies":[{"domain":"localhost","expires":"0","https":"FALSE","include_subdomain":"FALSE","name":"cookie2","path":"/","value":"valueA"}],"entries":[{"asserts":[{"line":7,"success":true},{"line":7,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/hello"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":1,"line":6,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/cookies/set-session-cookie2-valueA"},"response":{"cookies":[{"name":"cookie2","path":"/","value":"valueA"}],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Set-Cookie","value":"cookie2=valueA; Path=/"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":22,"success":true},{"line":22,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/follow-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"267"},{"name":"Location","value":"http://localhost:8000/following-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"line":20,"time":~~~},{"asserts":[{"line":33,"success":true},{"line":33,"success":true},{"line":36,"success":true},{"line":35,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/follow-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"267"},{"name":"Location","value":"http://localhost:8000/following-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}},{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/following-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"70"},{"name":"Location","value":"http://localhost:8000/followed-redirect"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":302},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}},{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"Accept","value":"text/plain"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/followed-redirect"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"18"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"line":28,"time":~~~},{"asserts":[{"line":42,"success":true},{"line":42,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/captures"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Content-Length","value":"12"},{"name":"Header1","value":"value1"},{"name":"Header2","value":"Hello Bob!"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"param1","value":"value1"},{"name":"param2","value":"Bob"},{"name":"param3","value":"Bob"},{"name":"data1","value":"Hello world!"},{"name":"data2","value":"Hello world!"}],"index":5,"line":40,"time":~~~},{"asserts":[{"line":54,"success":true},{"line":54,"success":true},{"line":56,"success":true},{"line":57,"success":true},{"line":58,"success":true},{"line":59,"success":true}],"calls":[{"request":{"cookies":[{"name":"cookie2","value":"valueA"}],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"Cookie","value":"cookie2=valueA"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/assert-json"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"236"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":6,"line":52,"time":~~~}],"filename":"tests_ok/json_output.hurl","success":true,"time":~~~} diff --git a/integration/hurl/tests_ok/json_output.ps1 b/integration/hurl/tests_ok/json_output.ps1 index 45f85338c..6a89a2a27 100644 --- a/integration/hurl/tests_ok/json_output.ps1 +++ b/integration/hurl/tests_ok/json_output.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_ok/json_output.hurl --json --verbose +hurl --json --verbose tests_ok/json_output.hurl diff --git a/integration/hurl/tests_ok/json_output.sh b/integration/hurl/tests_ok/json_output.sh index 2855bf7ed..fecfb587a 100755 --- a/integration/hurl/tests_ok/json_output.sh +++ b/integration/hurl/tests_ok/json_output.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_ok/json_output.hurl --json --verbose +hurl --json --verbose tests_ok/json_output.hurl diff --git a/integration/hurl/tests_ok/retry.out.pattern b/integration/hurl/tests_ok/retry.out.pattern index 8313e2604..e70712049 100644 --- a/integration/hurl/tests_ok/retry.out.pattern +++ b/integration/hurl/tests_ok/retry.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":4,"success":true},{"line":4,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"POST","queryString":[],"url":"http://localhost:8000/jobs"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":201},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"job_id","value":"~~~"}],"index":1,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"62"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":21,"success":true},{"line":21,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"DELETE","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"time":~~~},{"asserts":[{"line":24,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"42"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"time":~~~}],"filename":"tests_ok/retry.hurl","success":true,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":4,"success":true},{"line":4,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"POST","queryString":[],"url":"http://localhost:8000/jobs"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":201},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"job_id","value":"~~~"}],"index":1,"line":2,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"message":"Assert failure\n --> tests_ok/retry.hurl:16:0\n |\n16 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":14,"success":true},{"line":14,"success":true},{"line":16,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"62"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":21,"success":true},{"line":21,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"DELETE","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"line":20,"time":~~~},{"asserts":[{"line":24,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"42"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"line":23,"time":~~~}],"filename":"tests_ok/retry.hurl","success":true,"time":~~~} diff --git a/integration/hurl/tests_ok/retry.ps1 b/integration/hurl/tests_ok/retry.ps1 index efb68a918..3fcc1efaf 100644 --- a/integration/hurl/tests_ok/retry.ps1 +++ b/integration/hurl/tests_ok/retry.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_ok/retry.hurl --retry 10 --retry-interval 100 --verbose --json +hurl --retry 10 --retry-interval 100 --verbose --json tests_ok/retry.hurl diff --git a/integration/hurl/tests_ok/retry.sh b/integration/hurl/tests_ok/retry.sh index 54771adf9..6282af7ee 100755 --- a/integration/hurl/tests_ok/retry.sh +++ b/integration/hurl/tests_ok/retry.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_ok/retry.hurl --retry 10 --retry-interval 100 --verbose --json +hurl --retry 10 --retry-interval 100 --verbose --json tests_ok/retry.hurl diff --git a/integration/hurl/tests_ok/retry_option.out.pattern b/integration/hurl/tests_ok/retry_option.out.pattern index 2af4c0e2f..7863449e3 100644 --- a/integration/hurl/tests_ok/retry_option.out.pattern +++ b/integration/hurl/tests_ok/retry_option.out.pattern @@ -1 +1 @@ -{"cookies":[],"entries":[{"asserts":[{"line":4,"success":true},{"line":4,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"POST","queryString":[],"url":"http://localhost:8000/jobs"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":201},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"job_id","value":"~~~"}],"index":1,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"62"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"time":~~~},{"asserts":[{"line":24,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"DELETE","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"time":~~~},{"asserts":[{"line":27,"success":true},{"line":27,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"42"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"time":~~~}],"filename":"tests_ok/retry_option.hurl","success":true,"time":~~~} +{"cookies":[],"entries":[{"asserts":[{"line":4,"success":true},{"line":4,"success":true},{"line":8,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"POST","queryString":[],"url":"http://localhost:8000/jobs"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":201},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[{"name":"job_id","value":"~~~"}],"index":1,"line":2,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"message":"Assert failure\n --> tests_ok/retry_option.hurl:19:0\n |\n19 | jsonpath \"$.state\" == \"COMPLETED\"\n | actual: string \n | expected: string \n |","success":false}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"60"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":17,"success":true},{"line":17,"success":true},{"line":19,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"62"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":2,"line":12,"time":~~~},{"asserts":[{"line":24,"success":true},{"line":24,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"DELETE","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Server","value":"Flask Server"},{"name":"Content-Length","value":"0"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":200},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":3,"line":23,"time":~~~},{"asserts":[{"line":27,"success":true},{"line":27,"success":true}],"calls":[{"request":{"cookies":[],"headers":[{"name":"Host","value":"localhost:8000"},{"name":"Accept","value":"*/*"},{"name":"User-Agent","value":"hurl/~~~"}],"method":"GET","queryString":[],"url":"http://localhost:8000/jobs/~~~"},"response":{"cookies":[],"headers":[{"name":"Server","value":"Werkzeug/~~~ Python/~~~"},{"name":"Date","value":"~~~"},{"name":"Content-Type","value":"application/json"},{"name":"Content-Length","value":"42"},{"name":"Server","value":"Flask Server"},{"name":"Connection","value":"close"}],"httpVersion":"HTTP/1.1","status":404},"timings":{"app_connect":~~~,"begin_call":"~~~","connect":~~~,"end_call":"~~~","name_lookup":~~~,"pre_transfer":~~~,"start_transfer":~~~,"total":~~~}}],"captures":[],"index":4,"line":26,"time":~~~}],"filename":"tests_ok/retry_option.hurl","success":true,"time":~~~} diff --git a/integration/hurl/tests_ok/retry_option.ps1 b/integration/hurl/tests_ok/retry_option.ps1 index ccc451d28..f540b015e 100644 --- a/integration/hurl/tests_ok/retry_option.ps1 +++ b/integration/hurl/tests_ok/retry_option.ps1 @@ -1,3 +1,3 @@ Set-StrictMode -Version latest $ErrorActionPreference = 'Stop' -hurl tests_ok/retry_option.hurl --verbose --json +hurl --verbose --json tests_ok/retry_option.hurl diff --git a/integration/hurl/tests_ok/retry_option.sh b/integration/hurl/tests_ok/retry_option.sh index 821049813..02e436b58 100755 --- a/integration/hurl/tests_ok/retry_option.sh +++ b/integration/hurl/tests_ok/retry_option.sh @@ -1,3 +1,3 @@ #!/bin/bash set -Eeuo pipefail -hurl tests_ok/retry_option.hurl --verbose --json +hurl --verbose --json tests_ok/retry_option.hurl diff --git a/packages/hurl/src/json/result.rs b/packages/hurl/src/json/result.rs index 18adfdb8d..e3ab1fff7 100644 --- a/packages/hurl/src/json/result.rs +++ b/packages/hurl/src/json/result.rs @@ -62,6 +62,10 @@ impl EntryResult { "index".to_string(), serde_json::Value::Number(serde_json::Number::from(self.entry_index)), ); + map.insert( + "line".to_string(), + serde_json::Value::Number(serde_json::Number::from(self.source_info.start.line)), + ); let calls = self.calls.iter().map(|c| c.to_json()).collect(); map.insert("calls".to_string(), calls); let captures = self.captures.iter().map(|c| c.to_json()).collect(); diff --git a/packages/hurl/src/main.rs b/packages/hurl/src/main.rs index e91ceb82b..ee6614fbc 100644 --- a/packages/hurl/src/main.rs +++ b/packages/hurl/src/main.rs @@ -329,6 +329,7 @@ fn get_summary(runs: &[HurlRun], duration: u128) -> String { #[cfg(test)] pub mod tests { use hurl::runner::EntryResult; + use hurl_core::ast::{Pos, SourceInfo}; use super::*; @@ -337,6 +338,7 @@ pub mod tests { fn new_run(success: bool, entries_count: usize) -> HurlRun { let dummy_entry = EntryResult { entry_index: 0, + source_info: SourceInfo::new(Pos::new(1, 1), Pos::new(1, 1)), calls: vec![], captures: vec![], asserts: vec![], diff --git a/packages/hurl/src/report/html/run.rs b/packages/hurl/src/report/html/run.rs index 9fce93090..5f1f28da0 100644 --- a/packages/hurl/src/report/html/run.rs +++ b/packages/hurl/src/report/html/run.rs @@ -38,7 +38,7 @@ impl Testcase { for (entry_index, e) in entries.iter().enumerate() { let entry_src_index = e.entry_index - 1; let entry_src = hurl_file.entries.get(entry_src_index).unwrap(); - let line = entry_src.request.space0.source_info.start.line; + let line = entry_src.source_info().start.line; let source = self.source_filename(); run.push_str("
"); diff --git a/packages/hurl/src/report/html/timeline/mod.rs b/packages/hurl/src/report/html/timeline/mod.rs index 609d9970c..276c26075 100644 --- a/packages/hurl/src/report/html/timeline/mod.rs +++ b/packages/hurl/src/report/html/timeline/mod.rs @@ -102,7 +102,7 @@ impl Testcase { for (call_entry_index, _) in e.calls.iter().enumerate() { let entry_src_index = e.entry_index - 1; let entry_src = hurl_file.entries.get(entry_src_index).unwrap(); - let line = entry_src.request.space0.source_info.start.line; + let line = entry_src.source_info().start.line; let ctx = CallContext { kind, line, diff --git a/packages/hurl/src/report/junit/mod.rs b/packages/hurl/src/report/junit/mod.rs index 65dc3cf70..ac63629ff 100644 --- a/packages/hurl/src/report/junit/mod.rs +++ b/packages/hurl/src/report/junit/mod.rs @@ -153,6 +153,7 @@ mod tests { let res = HurlResult { entries: vec![EntryResult { entry_index: 1, + source_info: SourceInfo::new(Pos::new(1, 1), Pos::new(1, 35)), calls: vec![], captures: vec![], asserts: vec![], @@ -177,6 +178,7 @@ mod tests { let res = HurlResult { entries: vec![EntryResult { entry_index: 1, + source_info: SourceInfo::new(Pos::new(1, 1), Pos::new(1, 35)), calls: vec![], captures: vec![], asserts: vec![], diff --git a/packages/hurl/src/report/junit/testcase.rs b/packages/hurl/src/report/junit/testcase.rs index c2b86d8fe..b730a9a64 100644 --- a/packages/hurl/src/report/junit/testcase.rs +++ b/packages/hurl/src/report/junit/testcase.rs @@ -119,6 +119,7 @@ HTTP/1.0 200 let hurl_result = HurlResult { entries: vec![EntryResult { entry_index: 1, + source_info: SourceInfo::new(Pos::new(1, 1), Pos::new(1, 35)), calls: vec![], captures: vec![], asserts: vec![], @@ -158,6 +159,7 @@ HTTP/1.0 200 let hurl_result = HurlResult { entries: vec![EntryResult { entry_index: 1, + source_info: SourceInfo::new(Pos::new(1, 1), Pos::new(1, 18)), calls: vec![], captures: vec![], asserts: vec![], diff --git a/packages/hurl/src/runner/entry.rs b/packages/hurl/src/runner/entry.rs index fad11b4c6..80e8e5866 100644 --- a/packages/hurl/src/runner/entry.rs +++ b/packages/hurl/src/runner/entry.rs @@ -50,6 +50,7 @@ pub fn run( Err(error) => { return EntryResult { entry_index, + source_info: entry.source_info(), calls: vec![], captures: vec![], asserts: vec![], @@ -99,10 +100,11 @@ pub fn run( Err(http_error) => { let start = entry.request.url.source_info.start; let end = entry.request.url.source_info.end; - let source_info = SourceInfo::new(start, end); - let error = Error::new(source_info, http_error.into(), false); + let error_source_info = SourceInfo::new(start, end); + let error = Error::new(error_source_info, http_error.into(), false); return EntryResult { entry_index, + source_info: entry.source_info(), calls: vec![], captures: vec![], asserts: vec![], @@ -137,6 +139,7 @@ pub fn run( logger.debug(""); return EntryResult { entry_index, + source_info: entry.source_info(), calls, captures: vec![], asserts, @@ -156,6 +159,7 @@ pub fn run( Err(e) => { return EntryResult { entry_index, + source_info: entry.source_info(), calls, captures: vec![], asserts: all_asserts, @@ -187,6 +191,7 @@ pub fn run( EntryResult { entry_index, + source_info: entry.source_info(), calls, captures, asserts: all_asserts, diff --git a/packages/hurl/src/runner/hurl_file.rs b/packages/hurl/src/runner/hurl_file.rs index f01176e0e..b2aa6430e 100644 --- a/packages/hurl/src/runner/hurl_file.rs +++ b/packages/hurl/src/runner/hurl_file.rs @@ -168,6 +168,7 @@ pub fn run( } Err(error) => EntryResult { entry_index, + source_info: entry.source_info(), calls: vec![], captures: vec![], asserts: vec![], diff --git a/packages/hurl/src/runner/result.rs b/packages/hurl/src/runner/result.rs index 4843bede1..8a3177121 100644 --- a/packages/hurl/src/runner/result.rs +++ b/packages/hurl/src/runner/result.rs @@ -56,6 +56,7 @@ impl HurlResult { #[derive(Clone, Debug, PartialEq, Eq)] pub struct EntryResult { pub entry_index: usize, + pub source_info: SourceInfo, pub calls: Vec, pub captures: Vec, pub asserts: Vec, diff --git a/packages/hurl_core/src/ast/core.rs b/packages/hurl_core/src/ast/core.rs index 98efef437..5f5758a0b 100644 --- a/packages/hurl_core/src/ast/core.rs +++ b/packages/hurl_core/src/ast/core.rs @@ -32,6 +32,13 @@ pub struct Entry { pub response: Option, } +impl Entry { + /// Returns the source information for this entry. + pub fn source_info(&self) -> SourceInfo { + self.request.space0.source_info + } +} + #[derive(Clone, Debug, PartialEq, Eq)] pub struct Request { pub line_terminators: Vec,