mirror of
https://github.com/Orange-OpenSource/hurl.git
synced 2024-12-26 12:32:06 +03:00
Merge pull request #197 from Orange-OpenSource/feature/count-equals-predicate-error
Improve error message for countEquals predicate
This commit is contained in:
commit
3204970172
@ -87,3 +87,11 @@ error: Assert Failure
|
|||||||
| expected: not something
|
| expected: not something
|
||||||
|
|
|
|
||||||
|
|
||||||
|
error: Assert Failure
|
||||||
|
--> tests/error_predicate.hurl:16:0
|
||||||
|
|
|
||||||
|
16 | jsonpath "$.list" countEquals 2
|
||||||
|
| actual: 3
|
||||||
|
| expected: 2
|
||||||
|
|
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
<div class="hurl-file"><div class="hurl-entry"><div class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/predicate/error/type</span></span></div><div class="response"><span class="line"><span class="version">HTTP/1.0</span> <span class="status">200</span></span><span class="line section-header">[Asserts]</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.status"</span> <span class="predicate-type">equals</span> <span class="string">"true"</span></span><span class="line"><span class="comment">#jsonpath "$.count" equals "0"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.empty"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.number"</span> <span class="predicate-type">equals</span> <span class="number">1.1</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">startsWith</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">contains</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">matches</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">equals</span> <span class="number">1</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.toto"</span> <span class="predicate-type">exists</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> not <span class="predicate-type">exists</span></span></div></div></div>
|
<div class="hurl-file"><div class="hurl-entry"><div class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/predicate/error/type</span></span></div><div class="response"><span class="line"><span class="version">HTTP/1.0</span> <span class="status">200</span></span><span class="line section-header">[Asserts]</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.status"</span> <span class="predicate-type">equals</span> <span class="string">"true"</span></span><span class="line"><span class="comment">#jsonpath "$.count" equals "0"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.empty"</span> <span class="predicate-type">equals</span> <span class="number">0</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.number"</span> <span class="predicate-type">equals</span> <span class="number">1.1</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">startsWith</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">contains</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">matches</span> <span class="string">"hi"</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">equals</span> <span class="number">1</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.toto"</span> <span class="predicate-type">exists</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> not <span class="predicate-type">exists</span></span><span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.list"</span> <span class="predicate-type">equals</span> <span class="number">2</span></span></div></div></div>
|
@ -13,3 +13,4 @@ jsonpath "$.message" matches "hi"
|
|||||||
jsonpath "$.message" countEquals 1
|
jsonpath "$.message" countEquals 1
|
||||||
jsonpath "$.toto" exists
|
jsonpath "$.toto" exists
|
||||||
jsonpath "$.message" not exists
|
jsonpath "$.message" not exists
|
||||||
|
jsonpath "$.list" countEquals 2
|
@ -1 +1 @@
|
|||||||
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/predicate/error/type"},"response":{"version":"HTTP/1.0","status":200,"asserts":[{"query":{"type":"jsonpath","expr":"$.status"},"predicate":{"type":"equal","value":"true"}},{"query":{"type":"jsonpath","expr":"$.count"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.empty"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.number"},"predicate":{"type":"equal","value":1.1}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"start-with","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"contain","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"match","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"count","value":1}},{"query":{"type":"jsonpath","expr":"$.toto"},"predicate":{"type":"exist"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"not":true,"type":"exist"}}]}}]}
|
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/predicate/error/type"},"response":{"version":"HTTP/1.0","status":200,"asserts":[{"query":{"type":"jsonpath","expr":"$.status"},"predicate":{"type":"equal","value":"true"}},{"query":{"type":"jsonpath","expr":"$.count"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.empty"},"predicate":{"type":"equal","value":0}},{"query":{"type":"jsonpath","expr":"$.number"},"predicate":{"type":"equal","value":1.1}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"start-with","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"contain","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"match","value":"hi"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"type":"count","value":1}},{"query":{"type":"jsonpath","expr":"$.toto"},"predicate":{"type":"exist"}},{"query":{"type":"jsonpath","expr":"$.message"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"jsonpath","expr":"$.list"},"predicate":{"type":"count","value":2}}]}}]}
|
@ -2,4 +2,11 @@ from tests import app
|
|||||||
|
|
||||||
@app.route("/predicate/error/type")
|
@app.route("/predicate/error/type")
|
||||||
def predicate_error_type():
|
def predicate_error_type():
|
||||||
return '{ "status": true, "message": "0", "count": 1, "empty": "", "number": 1.0 }'
|
return '''{
|
||||||
|
"status": true,
|
||||||
|
"message": "0",
|
||||||
|
"count": 1,
|
||||||
|
"empty": "",
|
||||||
|
"number": 1.0,
|
||||||
|
"list": [1,2,3]
|
||||||
|
}'''
|
@ -379,30 +379,26 @@ fn eval_something(
|
|||||||
PredicateFuncValue::CountEqual {
|
PredicateFuncValue::CountEqual {
|
||||||
value: expected_value,
|
value: expected_value,
|
||||||
..
|
..
|
||||||
} => {
|
} => match value {
|
||||||
let actual = value.clone().display();
|
|
||||||
let expected = format!("count equals to <{}>", expected_value);
|
|
||||||
match value {
|
|
||||||
Value::List(values) => Ok(AssertResult {
|
Value::List(values) => Ok(AssertResult {
|
||||||
success: values.len() as u64 == expected_value,
|
success: values.len() as u64 == expected_value,
|
||||||
actual,
|
actual: values.len().to_string(),
|
||||||
expected,
|
expected: expected_value.to_string(),
|
||||||
type_mismatch: false,
|
type_mismatch: false,
|
||||||
}),
|
}),
|
||||||
Value::Nodeset(n) => Ok(AssertResult {
|
Value::Nodeset(n) => Ok(AssertResult {
|
||||||
success: n as u64 == expected_value,
|
success: n as u64 == expected_value,
|
||||||
actual,
|
actual: n.to_string(),
|
||||||
expected,
|
expected: expected_value.to_string(),
|
||||||
type_mismatch: false,
|
type_mismatch: false,
|
||||||
}),
|
}),
|
||||||
_ => Ok(AssertResult {
|
_ => Ok(AssertResult {
|
||||||
success: false,
|
success: false,
|
||||||
actual,
|
actual: value.clone().display(),
|
||||||
expected,
|
expected: format!("count equals to <{}>", expected_value),
|
||||||
type_mismatch: true,
|
type_mismatch: true,
|
||||||
}),
|
}),
|
||||||
}
|
},
|
||||||
}
|
|
||||||
|
|
||||||
// starts with string
|
// starts with string
|
||||||
PredicateFuncValue::StartWith {
|
PredicateFuncValue::StartWith {
|
||||||
@ -1303,8 +1299,8 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(assert_result.success, false);
|
assert_eq!(assert_result.success, false);
|
||||||
assert_eq!(assert_result.type_mismatch, false);
|
assert_eq!(assert_result.type_mismatch, false);
|
||||||
assert_eq!(assert_result.actual.as_str(), "[]");
|
assert_eq!(assert_result.actual.as_str(), "0");
|
||||||
assert_eq!(assert_result.expected.as_str(), "count equals to <1>");
|
assert_eq!(assert_result.expected.as_str(), "1");
|
||||||
|
|
||||||
let assert_result = eval_something(
|
let assert_result = eval_something(
|
||||||
PredicateFunc {
|
PredicateFunc {
|
||||||
@ -1320,8 +1316,8 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(assert_result.success, false);
|
assert_eq!(assert_result.success, false);
|
||||||
assert_eq!(assert_result.type_mismatch, false);
|
assert_eq!(assert_result.type_mismatch, false);
|
||||||
assert_eq!(assert_result.actual.as_str(), "nodeset of size <3>");
|
assert_eq!(assert_result.actual.as_str(), "3");
|
||||||
assert_eq!(assert_result.expected.as_str(), "count equals to <1>");
|
assert_eq!(assert_result.expected.as_str(), "1");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1345,8 +1341,8 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(assert_result.success, true);
|
assert_eq!(assert_result.success, true);
|
||||||
assert_eq!(assert_result.type_mismatch, false);
|
assert_eq!(assert_result.type_mismatch, false);
|
||||||
assert_eq!(assert_result.actual.as_str(), "[int <1>]");
|
assert_eq!(assert_result.actual.as_str(), "1");
|
||||||
assert_eq!(assert_result.expected.as_str(), "count equals to <1>");
|
assert_eq!(assert_result.expected.as_str(), "1");
|
||||||
|
|
||||||
let assert_result = eval_something(
|
let assert_result = eval_something(
|
||||||
PredicateFunc {
|
PredicateFunc {
|
||||||
@ -1362,8 +1358,8 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(assert_result.success, true);
|
assert_eq!(assert_result.success, true);
|
||||||
assert_eq!(assert_result.type_mismatch, false);
|
assert_eq!(assert_result.type_mismatch, false);
|
||||||
assert_eq!(assert_result.actual.as_str(), "nodeset of size <1>");
|
assert_eq!(assert_result.actual.as_str(), "1");
|
||||||
assert_eq!(assert_result.expected.as_str(), "count equals to <1>");
|
assert_eq!(assert_result.expected.as_str(), "1");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -304,8 +304,8 @@ mod tests {
|
|||||||
predicate_result: Some(Err(Error {
|
predicate_result: Some(Err(Error {
|
||||||
source_info: SourceInfo::init(1, 0, 1, 0),
|
source_info: SourceInfo::init(1, 0, 1, 0),
|
||||||
inner: RunnerError::AssertFailure {
|
inner: RunnerError::AssertFailure {
|
||||||
actual: "nodeset of size <2>".to_string(),
|
actual: "2".to_string(),
|
||||||
expected: "count equals to <3>".to_string(),
|
expected: "3".to_string(),
|
||||||
type_mismatch: false,
|
type_mismatch: false,
|
||||||
},
|
},
|
||||||
assert: true,
|
assert: true,
|
||||||
|
Loading…
Reference in New Issue
Block a user