Testing edalize
To run the tests, call pytest.
Mocks for commands
We provide mocks (stand-ins) for all tools that we want to exercise in tests (located in tests/mock_commands/
).
These mocks are very simplified “models” of the actual tool, and are called instead of the actual tool.
They are prepended to PATH
by the setup code in the edalize_common.make_edalize_test()
pytest fixture.
In the easiest case, these mocks just write out the commandline they were called with (into a file <tool>.cmd
).
In a more complex test setup (e.g. for vcs
),
if a tool is creating files, we create it too (the file to create is taken from a tool option given)
we make the file executable
we set the access and modified times of generated files to the current time
Testcases
To define a testcase, use the edalize_common.make_edalize_test()
pytest factory fixture.
This defines a factory that you can call to set up a mocked-up backend appropriately.
See the documentation for edalize_common.TestFixture
for details of the supported keywords.
The backend
attribute of the returned fixture has configure()
, build()
and run()
methods.
The testcase should call these in order, setting up files as necessary between calls and checking whether the results match by calling the fixture’s compare_files()
method.
If the environment variable GOLDEN_RUN
is set, the compare_files()
method copies the generated files are copied to become the new reference files, rather than checking their contents.