mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
curl_examples: Fix curl testing for multiple configs.
Now, the markdown extension of curl_examples generates all examples of all possible configurations with their descriptions, and so we need to separate executable curl commands from the rest of the raw HTML. This commit simply changes the indentation of the block and replaces the command being tested with each element of the commands array. This was split for an easier review.
This commit is contained in:
committed by
Tim Abbott
parent
acbae4b6cf
commit
e5221a8434
@@ -82,28 +82,28 @@ def test_generated_curl_examples_for_success(client: Client) -> None:
|
||||
unescaped_html = html.unescape(curl_command_html)
|
||||
curl_regex = re.compile(r"<code>curl\n(.*?)</code>", re.DOTALL)
|
||||
commands = re.findall(curl_regex, unescaped_html)
|
||||
curl_command_text = unescaped_html[len("<p><code>curl\n") : -len("</code></p>")]
|
||||
curl_command_text = curl_command_text.replace(
|
||||
"BOT_EMAIL_ADDRESS:BOT_API_KEY", AUTHENTICATION_LINE[0]
|
||||
)
|
||||
|
||||
print("Testing {} ...".format(curl_command_text.split("\n")[0]))
|
||||
|
||||
# Turn the text into an arguments list.
|
||||
generated_curl_command = [x for x in shlex.split(curl_command_text) if x != "\n"]
|
||||
|
||||
response_json = None
|
||||
response = None
|
||||
try:
|
||||
# We split this across two lines so if curl fails and
|
||||
# returns non-JSON output, we'll still print it.
|
||||
response_json = subprocess.check_output(
|
||||
generated_curl_command, universal_newlines=True
|
||||
for curl_command_text in commands:
|
||||
curl_command_text = curl_command_text.replace(
|
||||
"BOT_EMAIL_ADDRESS:BOT_API_KEY", AUTHENTICATION_LINE[0]
|
||||
)
|
||||
response = json.loads(response_json)
|
||||
assert response["result"] == "success"
|
||||
except (AssertionError, Exception):
|
||||
error_template = """
|
||||
|
||||
print("Testing {} ...".format(curl_command_text.split("\n")[0]))
|
||||
|
||||
# Turn the text into an arguments list.
|
||||
generated_curl_command = [x for x in shlex.split(curl_command_text) if x != "\n"]
|
||||
|
||||
response_json = None
|
||||
response = None
|
||||
try:
|
||||
# We split this across two lines so if curl fails and
|
||||
# returns non-JSON output, we'll still print it.
|
||||
response_json = subprocess.check_output(
|
||||
generated_curl_command, universal_newlines=True
|
||||
)
|
||||
response = json.loads(response_json)
|
||||
assert response["result"] == "success"
|
||||
except (AssertionError, Exception):
|
||||
error_template = """
|
||||
Error verifying the success of the API documentation curl example.
|
||||
|
||||
File: {file_name}
|
||||
@@ -125,16 +125,16 @@ Common reasons for why this could occur:
|
||||
|
||||
To learn more about the test itself, see zerver/openapi/test_curl_examples.py.
|
||||
"""
|
||||
print(
|
||||
error_template.format(
|
||||
file_name=file_name,
|
||||
line=line,
|
||||
curl_command=generated_curl_command,
|
||||
response=response_json
|
||||
if response is None
|
||||
else json.dumps(response, indent=4),
|
||||
print(
|
||||
error_template.format(
|
||||
file_name=file_name,
|
||||
line=line,
|
||||
curl_command=generated_curl_command,
|
||||
response=response_json
|
||||
if response is None
|
||||
else json.dumps(response, indent=4),
|
||||
)
|
||||
)
|
||||
)
|
||||
raise
|
||||
raise
|
||||
|
||||
assert_all_helper_functions_called()
|
||||
|
||||
Reference in New Issue
Block a user