Skip to content

Add robot test framework setup#7

Merged
embtom merged 6 commits into
mainfrom
feature/rof_test
Jul 13, 2026
Merged

Add robot test framework setup#7
embtom merged 6 commits into
mainfrom
feature/rof_test

Conversation

@embtom

@embtom embtom commented Jul 4, 2026

Copy link
Copy Markdown
Member

Add basic robot framework test environment

@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

☂️ Code Coverage

current status: ✅

Overall Coverage

Statements Covered Coverage Threshold Status
1718 1380 80% 0% 🟢

New Files

No new covered files...

Modified Files

No covered modified files...

updated for commit: 2f4bcaa by action🐍

@embtom
embtom force-pushed the feature/rof_test branch 4 times, most recently from 90bab71 to 33d496f Compare July 4, 2026 19:36
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

Robot Results

✅ Passed ❌ Failed ⏭️ Skipped Total Pass % ⏱️ Duration
5 0 0 5 100 17.297452s

Passed Tests

Name ⏱️ Duration Suite
Debhello Quilt Build 16.260 s Debhello Quilt
Binary Packages Are Valid 0.333 s Debhello Quilt
Changes File Is Signed 0.189 s Debhello Quilt
Source Package Is Valid 0.321 s Debhello Quilt
DSC File Is Signed 0.194 s Debhello Quilt

@embtom
embtom force-pushed the feature/rof_test branch 3 times, most recently from dcf9507 to b5d790f Compare July 5, 2026 09:36
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown

Test Results

86 tests   86 ✅  40s ⏱️
 1 suites   0 💤
 1 files     0 ❌

Results for commit e25a868.

♻️ This comment has been updated with latest results.

@embtom
embtom force-pushed the feature/rof_test branch 3 times, most recently from 1be2f3b to e25a868 Compare July 5, 2026 14:20
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
TestsPassed ✅SkippedFailedTime ⏱
JUnit Test Report86 ran86 passed0 skipped0 failed28s 297ms
TestResultTime ⏱
JUnit Test Report
pytest
test_apt.test_add_key_writes_gpg_file✅ passed41ms
test_apt.test_add_key_path_is_in_keyrings_dir✅ passed2ms
test_apt.test_add_key_file_is_not_armored✅ passed2ms
test_apt.test_add_key_binary_input_also_accepted✅ passed3ms
test_apt.test_add_repo_creates_sources_file✅ passed34ms
test_apt.test_add_repo_sources_file_has_correct_content✅ passed2ms
test_apt.test_add_repo_is_idempotent✅ passed62ms
test_apt.test_add_repo_without_keyring✅ passed30ms
test_apt.test_add_repo_components_as_list✅ passed30ms
test_apt.test_apt_cache_update_success✅ passed9ms
test_apt.test_apt_cache_update_failure✅ passed6ms
test_apt.test_install_dependencies_not_in_cache✅ passed5ms
test_apt.test_install_dependencies_success✅ passed5ms
test_apt.test_install_dependencies_commit_error✅ passed5ms
test_apt.test_install_dependencies_source_host[versions0-my-apt.example.com-True]✅ passed5ms
test_apt.test_install_dependencies_source_host[versions1-my-apt.example.com-False]✅ passed5ms
test_apt.test_install_dependencies_source_host[versions2-my-apt.example.com-True]✅ passed5ms
test_apt.test_package_exists_true_without_source_host✅ passed4ms
test_apt.test_upstream_package_exists_true_for_matching_host✅ passed4ms
test_apt.test_upstream_package_exists_false_for_non_matching_host✅ passed4ms
test_apt.test_dearmor_ascii_armored_key✅ passed3ms
test_apt.test_dearmor_invalid_base64✅ passed4ms
test_apt.test_parse_deb_file_missing_file✅ passed7ms
test_apt.test_parse_deb_file_success✅ passed5ms
test_apt.test_parse_deb_file_invalid✅ passed5ms
test_aptly.test_upload_marks_changed_when_new_package_added✅ passed3ms
test_aptly.test_upload_batches_add_after_all_files_uploaded✅ passed4ms
test_cli.test_resolve_aptly_credentials_from_test_file✅ passed2ms
test_cli.test_resolve_aptly_credentials_from_file✅ passed3ms
test_cli.test_resolve_aptly_credentials_ignores_comments✅ passed3ms
test_cli.test_resolve_aptly_credentials_requires_both_entries✅ passed3ms
test_cli.test_parse_args_accepts_credentials_file✅ passed3ms
test_cli.test_parse_args_force_upload_default_disabled✅ passed2ms
test_cli.test_parse_args_force_upload_enabled_when_flag_present✅ passed2ms
test_cmd.test_arg✅ passed2ms
test_deb_source.test_is_quilt_format_true✅ passed4ms
test_deb_source.test_is_quilt_format_native✅ passed4ms
test_deb_source.test_source_name_and_version✅ passed4ms
test_deb_source.test_orig_tarball_exists_ignores_asc✅ passed5ms
test_deb_source.test_remove_existing_orig✅ passed4ms
test_deb_source.test_branch_exists_local✅ passed46ms
test_deb_source.test_repo_none_for_non_git_tree✅ passed3ms
test_deb_source.test_repo_does_not_climb_to_parent✅ passed16ms
test_deb_source.test_reset_source_tree_cleans_untracked✅ passed46ms
test_deb_source.test_reset_source_tree_noop_when_native✅ passed38ms
test_deb_source.test_export_orig_invokes_gbp✅ passed41ms
test_debsign✅ passed16s 61ms
test_debuild.test_deb_control_file✅ passed3ms
test_debuild.test_build_debpackage✅ passed11s 438ms
test_debuild.test_deb_changes✅ passed3ms
test_debuild.test_deb_changes_files✅ passed3ms
test_debuild.test_deb_changes_name✅ passed2ms
test_debuild.test_deb_changes_version✅ passed2ms
test_debuild.test_deb_changes_arch✅ passed3ms
test_debuild.test_deb_changes_file_fallback_to_any_changes✅ passed4ms
test_debuild.test_deb_changes_file_prefers_newest_arch_match✅ passed14ms
test_debuild.test_install_build_dependencies_raises_when_mk_build_deps_missing✅ passed4ms
test_debuild.test_install_build_dependencies_builds_correct_command✅ passed4ms
test_debuild.test_install_build_dependencies_raises_on_nonzero_exit✅ passed4ms
test_gpg.test_create_gpg✅ passed7ms
test_gpg.test_list_keys✅ passed22ms
test_gpg.test_create_and_set_new_keyring✅ passed11ms
test_gpg.test_import_key✅ passed61ms
test_gpg.test_signing_key✅ passed51ms
test_logging.test_debug_logged✅ passed2ms
test_logging.test_info_logged✅ passed2ms
test_logging.test_warning_logged✅ passed2ms
test_logging.test_critical_logged✅ passed2ms
test_logging.test_max_level_filter_accepts_info✅ passed2ms
test_logging.test_max_level_filter_rejects_warning✅ passed2ms
test_logging.test_handler_wiring_uses_max_level_filter✅ passed2ms
test_logging.test_stream_routing_with_caplog✅ passed2ms
test_logging.test_debug_suppressed_at_info_verbosity✅ passed2ms
test_logging.test_debug_visible_at_debug_verbosity✅ passed2ms
test_logging.test_warning_suppressed_at_warning_verbosity✅ passed2ms
test_utils.test_run_subprocess_success✅ passed5ms
test_utils.test_run_subprocess_failure✅ passed4ms
test_utils.test_run_streamed_logs_output✅ passed5ms
test_utils.test_run_subprocess_writes_stdin✅ passed5ms
test_utils.test_run_subprocess_stream✅ passed5ms
test_utils.test_run_subprocess_capture✅ passed4ms
test_utils.test_run_subprocess_silent✅ passed5ms
test_utils.test_run_subprocess_stdin✅ passed5ms
test_utils.test_run_subprocess_empty_stdin_still_opens_pipe✅ passed4ms
test_utils.test_run_subprocess_handles_broken_pipe_and_raises_calledprocesserror✅ passed4ms
test_utils.test_run_subprocess_forwards_sigint_on_keyboardinterrupt✅ passed8ms

@embtom
embtom force-pushed the feature/rof_test branch 9 times, most recently from b4f232d to 9a03516 Compare July 12, 2026 10:25
@embtom
embtom force-pushed the feature/rof_test branch 3 times, most recently from b72b75b to 202a3d4 Compare July 12, 2026 17:27
@embtom
embtom marked this pull request as ready for review July 12, 2026 17:29
@embtom
embtom force-pushed the feature/rof_test branch from 202a3d4 to bf15128 Compare July 12, 2026 17:34
@embtom
embtom requested a review from Copilot July 12, 2026 18:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a basic Robot Framework-based integration test environment for validating packtly-builder builds (using Podman), adds Debian package fixtures for testing, and wires the new Robot tests into CI. It also includes a small logging improvement and extends APT dependency installation logic to better handle virtual packages.

Changes:

  • Add Robot Framework test runner, keywords, and a debhello-quilt build/verification suite.
  • Add Debian packaging fixtures (notably test/fixtures/debhello-quilt) and update tooling configs to use them.
  • Extend CI to run Robot tests and adjust Podman setup to support container-based GitHub Actions.

Reviewed changes

Copilot reviewed 31 out of 44 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
test/robot/suites/debhello_quilt.robot New Robot suite to build a fixture in a container and validate build outputs/signatures.
test/robot/run.sh Script to install Robot Framework via pipx and execute suites.
test/robot/requirements.txt Robot Framework dependency set for the test environment.
test/robot/keywords/gpg.robot Robot keywords for generating GPG keys via the runtime container.
test/robot/keywords/git.robot Robot keyword helper for shallow cloning a repository.
test/robot/keywords/aptly.robot Robot keyword to generate aptly credentials file for tests.
test/fixtures/debhello-quilt/src/hello.c New C source for the quilt fixture package.
test/fixtures/debhello-quilt/Makefile Build/install rules for the quilt fixture.
test/fixtures/debhello-quilt/debian/source/format Declares 3.0 (quilt) source format for the fixture.
test/fixtures/debhello-quilt/debian/rules Debhelper rules for building the quilt fixture.
test/fixtures/debhello-quilt/debian/debhello.install Installs built binary into package payload.
test/fixtures/debhello-quilt/debian/copyright Fixture copyright metadata.
test/fixtures/debhello-quilt/debian/control Fixture control metadata and dependencies.
test/fixtures/debhello-quilt/debian/changelog Fixture changelog/version entry.
test/fixtures/debhello-quilt/.gitignore Fixture-local ignore rules for build outputs.
test/fixtures/debhello-native/src/hello.c Adds/updates native fixture source file.
test/fixtures/debhello-native/Makefile Fix LDFLAGS usage in native fixture Makefile.
test/fixtures/debhello-native/debian/source/format Adds source format file for native fixture.
test/fixtures/debhello-native/debian/rules Adds debhelper rules for native fixture.
test/fixtures/debhello-native/debian/copyright Adds copyright metadata for native fixture.
test/fixtures/debhello-native/debian/control Updates package metadata and build-depends for native fixture.
test/fixtures/debhello-native/debian/changelog Adds changelog entry for native fixture.
test/fixtures/debhello-native/.gitignore Adds fixture-local ignore rules for build outputs.
test/fixtures/build-quilt.sh Adjust local helper script to build quilt fixture from the right workspace path.
test/debhello/README.md Removes old debhello documentation (fixture appears moved/obsolete).
test/debhello/debian/compat Removes old debhelper compat file from old location.
packtly-builder/tooling/pyproject.toml Points pytest dpkgbuild extra arg at the new quilt fixture location.
packtly-builder/tooling/packtly_builder_tooling/parts/debuild.py Switch debug print to structured logging.
packtly-builder/tooling/packtly_builder_tooling/parts/apt.py Enhance dependency installation to handle versioned virtual packages/providers.
packtly-builder/tooling/packtly_builder_tooling/cli.py Add error handling around build steps (FileNotFoundError).
example/systemd/clone.sh Adds helper to clone/update systemd packaging repo.
example/systemd/build.sh Adds example build/upload wrapper script for systemd using the runtime container.
example/systemd/.gitignore Ignore the cloned repo and built debs under the example directory.
example/hplip/clone.sh Adds helper to clone/update hplip packaging repo.
example/hplip/build.sh Adds example build/upload wrapper script for hplip using the runtime container.
example/hplip/.gitignore Ignore the cloned repo and built debs under the example directory.
.vscode/tasks.json Adds tasks for running Robot tests and packtly build/upload flows against the new fixture.
.vscode/settings.json Updates pytest args to use the new quilt fixture.
.vscode/launch.json Renames/adjusts debug launch configs to match build vs upload flows and new fixture path.
.gitignore Ignore Robot Framework artifacts and test/robot/results/.
.github/workflows/ci-build.yml Adds a reusable robot-tests job to the main CI workflow.
.github/workflows/_tooling.yml Switch unit test reporting action and enable richer summaries/comments.
.github/workflows/_robot-tests.yml New reusable workflow to run Robot tests against the built runtime image artifact.
.github/actions/setup-podman/action.yml Adds Docker-socket compatibility symlink to support container-based actions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packtly-builder/tooling/packtly_builder_tooling/cli.py
Comment thread test/robot/run.sh Outdated
Comment thread test/robot/suites/debhello_quilt.robot
Comment thread test/robot/suites/debhello_quilt.robot
Comment thread test/robot/suites/debhello_quilt.robot Outdated
Comment thread test/robot/suites/debhello_quilt.robot Outdated
Comment thread .github/actions/setup-podman/action.yml Outdated
Comment thread packtly-builder/tooling/packtly_builder_tooling/parts/apt.py
@embtom
embtom force-pushed the feature/rof_test branch 2 times, most recently from 79322ae to 872f616 Compare July 13, 2026 03:10
@embtom
embtom force-pushed the feature/rof_test branch 2 times, most recently from 0ea19c0 to 16b069a Compare July 13, 2026 04:51
@embtom
embtom force-pushed the feature/rof_test branch from 16b069a to 2f4bcaa Compare July 13, 2026 05:13
@embtom embtom changed the title Feature/rof test Add robot test framework setup Jul 13, 2026
@embtom
embtom merged commit 6b0a47f into main Jul 13, 2026
8 checks passed
@embtom
embtom deleted the feature/rof_test branch July 14, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants