← Back to issue list

Refactor integration tests to split data and code

View original Github issue

Metadata

Project
craft-parts
Number
#275
Type
issue
State
open
Author
tigarmo
Labels
—
Created
Updated
Closed
—

Current evaluation

Maintainer proposal to split integration-test fixture data from test code via a datadir-style fixture. PR #272 was closed unmerged; grep shows no datadir fixture exists and inline write_text setup remains (e.g. executor/test_errors.py). Design decision still open.

Suggested action: keep open

Reason: The issue remains valid and unaddressed: grepping the repo for 'datadir', 'test_data' and 'test_in_module' returns no matches, and tests/integration/conftest.py contains only a CI temp-dir cleanup fixture (added by e341948a) — no data-copying fixture exists. Existing tests are inconsistent: plugins/test_maven_use.py, test_go.py, test_gradle.py and lifecycle/test_build_slices.py already use on-disk data dirs, while executor/test_errors.py still writes go.mod/hello.go inline via Path(...).write_text, which is exactly the distraction the issue describes. It stays open rather than needing triage because the maintainer authored it and commented with a concrete layout proposal, though the issue itself notes the team still needs to 'come to a decision', which caps actionability.

Evaluated by: mr-cal-bot

Impact: 25 Quick Win: 6 Complexity: 50 Confidence: 78 Actionability: 45

Issue body

Many integration tests (in `tests/integration`) start out by creating a bunch of temporary files and directories for whatever is being tested (go files, cmake, autotools, etc). This is undesirable because it distracts from the actual thing that we want to check (craft-part's support for those technologies). There are some alternatives to support "test data" in `pytest`. See the rejected PR #272 for an attempt using `pytest-datadir`. We should come to a decision and refactor/cleanup the tests.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 25
Quick Win: 6
Complexity: 50
Confidence: 78
Actionability: 45
keep open Maintainer proposal to split integration-test fixture data from test code via a datadir-style fixture. PR #272 was closed unmerged; grep shows no datadir fixture exists and inline write_text setup remains (e.g. executor/test_errors.py). Design decision still open.
gemini-3.8-flash
Impact: 25
Quick Win: 8
Complexity: 45
Confidence: 90
Actionability: 60
keep open Proposal to refactor integration tests to separate test data from test code using dedicated fixture directories. Under discussion and tracked internally as CRAFT-2969, awaiting a team decision on directory layout and fixture implementation.
qwen/qwen3.8-27b
Impact: 30
Quick Win: 12
Staleness: 75
Complexity: 60
Confidence: 80
Support Request: 0
keep open Maintainer-proposed refactor of tests/integration to move inline temp-file creation into test-data directories with a datadir-like fixture. Open since 2021, last human comment 2022, no implementation landed; tests still create fixtures inline.
qwen/qwen3.6-35b-a3b
Staleness: 90
Complexity: 30
Confidence: 85
Support Request: 5
needs triage Refactor integration tests to separate test data from code. Proposed a directory structure in 2022, but no maintainer decision or labels exist. Untriaged and inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 30
Confidence: 75
Support Request: 5
needs triage Refactor integration tests to separate test data from code. Proposed a directory structure in 2022, but remains unlabelled and inactive for over a year.

Update history

No update history recorded yet.

Related work

  • Related To: canonical/craft-parts#272 (confidence 92%)

    PR #272 'tests: make integration tests use datadir' was closed unmerged; its pytest-datadir proof of concept was deferred to this issue, and no datadir-related commit exists in craft-parts history.

Related issues

Issue Project State Summary Similarity
#272 tests: make integration tests use datadir craft-parts closed Closed unmerged after review; the pytest-datadir integration-test refactor was deferred to canonical/craft-parts#275 for broader design discussion.
72%