fune/toolkit/components/glean/pytest/expect_helper.py
Jan-Erik Rediger 78bfa75ec7 Bug 1714036 - Add a way to automatically update the expected file contents for Glean tests. r=chutten
One can now run the tests with `UPDATE_EXPECT=1` and the code will
update the files, so one can then commit them (after verifying that they
do what they should)

Differential Revision: https://phabricator.services.mozilla.com/D116563
2021-06-02 15:27:05 +00:00

34 lines
1 KiB
Python

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import inspect
def expect(path, actual):
"""
Assert that the content of the file at `path` contains `actual`.
If the environment variable `UPDATE_EXPECT` is set, the path content is updated to `actual`.
This allows to update the file contents easily.
"""
callerframerecord = inspect.stack()[1]
frame = callerframerecord[0]
info = inspect.getframeinfo(frame)
msg = f"""
Unexpected content in {path} (at {info.filename}:{info.lineno})
If the code generation was changed,
run the test suite again with `UPDATE_EXPECT=1` set to update the test files.
""".strip()
if "UPDATE_EXPECT" in os.environ:
with open(path, "w") as file:
file.write(actual)
expected = None
with open(path, "r") as file:
expected = file.read()
assert actual == expected, msg