Skip to content

Commit

Permalink
Merge pull request #197 from LedgerHQ/fbe/fix_ragger_for_cross_repo_t…
Browse files Browse the repository at this point in the history
…ests

Add a autouse fixture to skip unsupported devices
  • Loading branch information
fbeutin-ledger authored Sep 24, 2024
2 parents 08914eb + 1895125 commit 92121e6
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.24.0] - 2024-09-24

### Added
- conftest: Added a all_eink device option to target Stax and Flex
- conftest: Added a autouse fixture to skip unsupported devices

## [1.23.0] - 2024-07-25

### Changed
Expand Down
25 changes: 21 additions & 4 deletions src/ragger/conftest/base_conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

BACKENDS = ["speculos", "ledgercomm", "ledgerwallet"]

DEVICES = ["nanos", "nanox", "nanosp", "stax", "flex", "all", "all_nano"]
DEVICES = ["nanos", "nanox", "nanosp", "stax", "flex", "all", "all_nano", "all_eink"]

FIRMWARES = [
Firmware.NANOS,
Expand Down Expand Up @@ -73,6 +73,19 @@ def root_pytest_dir(request) -> Path:
return Path(request.config.rootpath).resolve()


@pytest.fixture(scope="session")
def supported_devices(root_pytest_dir: Path) -> List[str]:
project_root_dir = find_project_root_dir(root_pytest_dir)
manifest = Manifest.from_path(project_root_dir / "ledger_app.toml")
return ["nanosp" if d == "nanos+" else d for d in manifest.app.devices.json]


@pytest.fixture(scope="session")
def skip_tests_for_unsupported_devices(supported_devices: List[str], firmware: Firmware):
if firmware.name not in supported_devices:
pytest.skip(f"Device {firmware.name} is not supported according to the manifest")


@pytest.fixture(autouse="session")
def default_screenshot_path(root_pytest_dir: Path) -> Path:
# Alias reflecting the use case to avoid exposing internal helper fixtures
Expand Down Expand Up @@ -117,7 +130,9 @@ def pytest_generate_tests(metafunc):

# Enable firmware for requested devices
for fw in FIRMWARES:
if device == fw.name or device == "all" or (device == "all_nano" and fw.is_nano):
if device == fw.name or device == "all" or (device == "all_nano"
and fw.is_nano) or (device == "all_eink"
and not fw.is_nano):
fw_list.append(fw)
ids.append(fw.name)

Expand Down Expand Up @@ -213,9 +228,11 @@ def create_backend(root_pytest_dir: Path, backend_name: str, firmware: Firmware,


# Backend scope can be configured by the user
# fixture skip_tests_for_unsupported_devices is a dependency because we want to skip the test
# before trying to find the binary
@pytest.fixture(scope=conf.OPTIONAL.BACKEND_SCOPE)
def backend(root_pytest_dir: Path, backend_name: str, firmware: Firmware, display: bool,
log_apdu_file: Optional[Path], cli_user_seed: str,
def backend(skip_tests_for_unsupported_devices, root_pytest_dir: Path, backend_name: str,
firmware: Firmware, display: bool, log_apdu_file: Optional[Path], cli_user_seed: str,
additional_speculos_arguments: List[str]) -> Generator[BackendInterface, None, None]:
with create_backend(root_pytest_dir, backend_name, firmware, display, log_apdu_file,
cli_user_seed, additional_speculos_arguments) as b:
Expand Down

0 comments on commit 92121e6

Please sign in to comment.