rbtools.testing.testcase¶
Base test cases for RBTools unit tests.
Classes
|
The base class for RBTools test cases. |
- class rbtools.testing.testcase.TestCase(methodName='runTest')[source]¶
Bases:
TestCase
The base class for RBTools test cases.
This provides helpful utility functions, environment management, and better docstrings to help craft unit tests for RBTools functionality. All RBTools unit tests should use this this class or a subclass of it as the base class.
- default_text_editor: str = '/Users/chipx86/buildroots/rbtools-5.0/bin/python3.12 /private/var/folders/34/6wkbp94x5g79sbk8kfrscpzw0000gn/T/beanbag-tools.wkno7ali/rbtools/testing/scripts/editor.py'¶
The default text editor to use for tests.
By default, this will use a fake editor that’s bundled with the test suite.
- TEST_SERVER_URL = 'https://reviews.example.com/'[source]¶
A sample test URL for a Review Board server.
New in version 3.1.
- needs_temp_home: bool = False¶
Whether individual unit tests need a new temporary HOME directory.
If set, a directory will be created at test startup, and will be set as the home directory.
New in version 3.0.
- classmethod setUpClass() None [source]¶
Set up the test suite.
This will store some state that can be restored once all tests in the class have been run.
- classmethod tearDownClass() None [source]¶
Tear down the test suite.
This will restore the current directory to what was set prior to the test runs, and then call any parent tear-down logic.
- setUp() None [source]¶
Set up a single test.
This will store some initial state for tests and optionally create a new current HOME directory to run the tests within.
- tearDown() None [source]¶
Tear down a single test.
This will clean up any temporary files and directories, and restore the current directory and HOME direcotry.
- shortDescription() str [source]¶
Returns the description of the current test.
This changes the default behavior to replace all newlines with spaces, allowing a test description to span lines. It should still be kept short, though.
- Returns:
The descriptive text for the current unit test.
- Return type:
- get_user_home() str [source]¶
Return the user’s current home directory.
New in version 3.0.
- Returns:
The current home directory.
- Return type:
- set_user_home(path: str) None [source]¶
Set the user’s current home directory.
This will be unset when the unit test has finished.
New in version 3.0.
- Parameters:
path (
str
) – The new home directory.
- chdir_tmp() str [source]¶
Create a temporary directory and set it as the working directory.
The directory will be deleted after the test has finished.
New in version 3.0.
- Returns:
The path to the temp directory.
- Return type:
- env(env: dict[str, Optional[str]]) Iterator[None] [source]¶
Run code with custom environment variables temporarily set.
This will set environment variables to the provided values (or erase them from the environment if set to
None
) before executing the code in the context.Once executed, the old environment will be restored.
New in version 5.0.
- Parameters:
env (
dict
) – The environment variables to set/remove.- Context:
Code will execute with the new environment set.
- precreate_tempfiles(count: int) Sequence[str] [source]¶
Pre-create a specific number of temporary files.
This will call
make_tempfile()
the specified number of times, returning the list of generated temp file paths, and will then spy that function to return those temp files.Once each pre-created temp file is used up, any further calls to
make_tempfile()
will result in an error, failing the test.This is useful in unit tests that need to script a series of expected calls using
kgb
(such as throughkgb.ops.SpyOpMatchInOrder
) that need to know the names of temporary filenames up-front.Unit test suites that use this must mix in
kgb.SpyAgency
.New in version 3.0.
- Parameters:
count (
int
) – The number of temporary filenames to pre-create.- Returns:
The list of temporary file paths.
- Return type:
- Raises:
AssertionError – The test suite class did not mix in
kgb.SpyAgency
.
- precreate_tempdirs(count: int) Sequence[str] [source]¶
Pre-create a specific number of temporary directories.
This will call
make_tempdir()
the specified number of times, returning the list of generated temp paths, and will then spy that function to return those temp paths.Once each pre-created temp path is used up, any further calls to
make_tempdir()
will result in an error, failing the test.This is useful in unit tests that need to script a series of expected calls using
kgb
(such as throughkgb.ops.SpyOpMatchInOrder
) that need to know the names of temporary filenames up-front.Unit test suites that use this must mix in
kgb.SpyAgency
.New in version 3.0.
- Parameters:
count (
int
) – The number of temporary directories to pre-create.- Returns:
The list of temporary directory paths.
- Return type:
- Raises:
AssertionError – The test suite class did not mix in
kgb.SpyAgency
.
- assertDiffEqual(diff: bytes, expected_diff: bytes) None [source]¶
Assert that two diffs are equal.
- Parameters:
- Raises:
AssertionError – The diffs aren’t equal or of the right type.
- assertRaisesMessage(expected_exception: type[Exception], expected_message: str) _AssertRaisesContext[Exception] [source]¶
Assert that a call raises an exception with the given message.
- Parameters:
- Raises:
AssertionError – The assertion failure, if the exception and message isn’t raised.
- create_rbclient() RBClient [source]¶
Return a RBClient for testing.
This will set up a
URLMapTransport
. It’s recommended that the caller access it viaget_rbclient_transport()
.New in version 3.1.
- Parameters:
transport (
rbtools.api.transport.Transport
, optional) – An explicit transport instance to use- Returns:
The client for testing purposes.
- Return type:
- get_rbclient_transport(client: RBClient) Transport [source]¶
Return the transport associated with a RBClient.
This allows tests to avoid reaching into
RBClient
internals in order to get the transport.New in version 3.1.
- Parameters:
client (
rbtools.api.client.RBClient
) – The client instance.- Returns:
The client’s transport.
- Return type:
- write_reviewboardrc(config: Union[str, dict[str, object]] = {}, *, parent_dir: Optional[str] = None, filename: str = '.reviewboardrc') str [source]¶
Write a .reviewboardrc file to a directory.
This allows for control over where the file is written, what it’s named, and the serialization of the contents of the file.
New in version 5.0.
- Parameters:
config (
dict
orstr
) – A dictionary of settings to write, or a string payload for the entire file.parent_dir (
str
, optional) –The directory where the configuration file should go.
This will default to the current directory.
filename (
str
, optional) –The name of the configuration file.
This defaults to
.reviewboardrc
.
- Returns:
The resulting path to the configuration file.
- Return type:
- reviewboardrc(config: Union[str, dict[str, object]], use_temp_dir: bool = False) Iterator[None] [source]¶
Populate a temporary .reviewboardrc file.
This will create a
.reviewboardrc
file, either in the current directory or in a new temporary directory (ifuse_temp_dir
is set). The file will contain the provided configuration.New in version 3.0.
- Parameters:
A dictionary of key-value pairs to write into the
.reviewboardrc
file, or the string contents of the file.A best effort attempt will be made to write each configuration to the file.
use_temp_dir (
bool
, optional) – Whether a temporary directory should be created and set as the current directory. If set, the file will be written there, and the directory will be removed after the context manager finishes.
- Context:
The code being run will have a
.reviewboardrc
in the current directory.