Skip to content

Add comparison mode to sprint overview script#4722

Open
happz wants to merge 1 commit intomainfrom
happz-sprint-overview-compare
Open

Add comparison mode to sprint overview script#4722
happz wants to merge 1 commit intomainfrom
happz-sprint-overview-compare

Conversation

@happz
Copy link
Copy Markdown
Contributor

@happz happz commented Mar 20, 2026

Pull Request Checklist

  • implement the feature
  • write the documentation

@happz
Copy link
Copy Markdown
Contributor Author

happz commented Mar 20, 2026

Based on #4672:

$ scripts/sprint-overview --sprint 'Sprint 12' --base sprint-12.overview.start.yaml
Fetching items from teemtee/project/1 for sprint 'Sprint 12'...
Page 1: 53 items
Total: 53 items

================================================================================
  Sprint:                 Sprint 12
  Total items:            36 => 53
  Total story points:     92 => 119
  Completed items:        43 vs 10
  Completed story points: 86 vs 33
  Added items:            18 vs 1
  Added story points:     28 1
================================================================================

  Completed (43) - 86 points
--------------------------------------------------------------------------------
  tmt#3945    [1]  tmt is getting stuck by waiting for sudo bootc status on non-bootc host system
  tmt#4333    [2]  Add KVM device access support to Podman
  tmt#4457    [2]  Drop step-specific "base Click command" implementations
  tmt#4557    [5]  Review flaky tests and make them reliable
  tmt#4599    [2]  Fix the xref formatting of `:tmt:story:` role to normal text
  tmt#4604    [5]  Duplicated issues, Jira Cloud integration, sprint overview
  tmt#4609    [2]  tmt gets stuck for a while on bootc?
  tmt#4618    [5]  Save warning messages to be picked up by testing-farm
  tmt#4631    [1]  Check for the presence of sudo before querying is_image_mode
  tmt#4635    [1]  Instruct `rpminspect` to ignore xml jinja templates
  tmt#4637    [2]  Add virtualization.confidential hardware requirement
  tmt#4638    [2]  Add `virtualization.confidential` hardware requirement
  tmt#4639    [1]  Use `uv` in `make docs` to be aligned with RTD builds
  tmt#4642    [3]  Save all warnings encountered in a warnings file
  tmt#4644    [5]  Create a Verify Install plugin which checks if packages are installed from the correct repo
  tmt#4650    [1]  Add a glossary section
  tmt#4657    [2]  Catastrophic regex backtracking in shell framework _extract_failures on long lines
  tmt#4658    [2]  Fix catastrophic regex backtracking in shell framework
  tmt#4660    [5]  Add a new feature plugin to verify package installation
  tmt#4662    [2]  Use dedicated temporary directory for all rsync pulls
  tmt#4663    [2]  Document `user tree`, `work tree` and `test tree` in the Glossary
  tmt#4667    [2]  Prepare and finish step will now fail when phase fails
  tmt#4672    [2]  Implement the `sprint-overview` script
  tmt#4674    [1]  Revert #4396
  tmt#4676    [1]  Expose typing.override
  tmt#4681    [3]  Refactor github workflow
  tmt#4682    [1]  Fix issues with `check-wheel-contents`
  tmt#4692    [2]  `copr.repository` provider should enumerate packages into artifacts.yaml
  upgrade#15  [1]  Run upgrade via `dnf5 offline reboot`
  upgrade#18  [1]  Use a different package for dependency test
  upgrade#20  [1]  Use `dnf config-manager setopt` to disable repositories
  tmt#4695    [2]  `copr.repository` provider creates a `Repository` object
  tmt#4699    [1]  Fix `TestJiraLink` unit tests failing with HTTP 503
  tmt#4704    [2]  Document tree handling and workdirs
  tmt#4705    [2]  Control which runner devices can be exposed to guests
  tmt#4706    [1]  Drop copr epel6 enablement
  tmt#4717    [3]  Fix flaky test, add retry to testcloud
  tmt#4720    [1]  Add missing `main.fmf` for copr-repository artifact provider test
  tmt#4724    [1]  Fix for `pint` fixing dimensionless units
  tmt#4725    [1]  Use a different package for upgrade dependency test
  tmt#4727    [2]  Add additional conversion methods to step & guest dataclasses
  tmt#4733    [1]  Fix a few other `pint` tests due to 0.25.3 update
  tmt#4745    [1]  Specify a different User-Agent for pages behind Cloudfront

  Pending (10) - 33 points
--------------------------------------------------------------------------------
  tmt#4280    [5]  Add Polarion story export with test case linking and custom fields - features inside polarion
  tmt#4437    [2]  Mock provision: make detection of finished processes more deterministic
  tmt#4531    [5]  Implement full loading of the recipe
  tmt#4606    [3]  Improve test coverage for `prepare` plugins in image mode
  tmt#4645    [3]  All providers should list the artifacts in `artifacts.yaml`
  tmt#4646    [5]  Link the verify install plugin to the artifact plugin
  tmt#4661    [3]  Add support for full recipe loading
  tmt#4703    [2]  List packages from repository providers in `artifacts.yaml`
  tmt#4719    [-]  Improve test coverage for `prepare` plugins in image mode
  tmt#4726    [5]  Auto-verify artifact packages against require/recommend

  Added (18) - 28 points
--------------------------------------------------------------------------------
  upgrade#15  [1]  Run upgrade via `dnf5 offline reboot`
  upgrade#18  [1]  Use a different package for dependency test
  upgrade#20  [1]  Use `dnf config-manager setopt` to disable repositories
  tmt#4695    [2]  `copr.repository` provider creates a `Repository` object
  tmt#4699    [1]  Fix `TestJiraLink` unit tests failing with HTTP 503
  tmt#4703    [2]  List packages from repository providers in `artifacts.yaml`
  tmt#4704    [2]  Document tree handling and workdirs
  tmt#4705    [2]  Control which runner devices can be exposed to guests
  tmt#4706    [1]  Drop copr epel6 enablement
  tmt#4717    [3]  Fix flaky test, add retry to testcloud
  tmt#4719    [-]  Improve test coverage for `prepare` plugins in image mode
  tmt#4720    [1]  Add missing `main.fmf` for copr-repository artifact provider test
  tmt#4724    [1]  Fix for `pint` fixing dimensionless units
  tmt#4725    [1]  Use a different package for upgrade dependency test
  tmt#4726    [5]  Auto-verify artifact packages against require/recommend
  tmt#4727    [2]  Add additional conversion methods to step & guest dataclasses
  tmt#4733    [1]  Fix a few other `pint` tests due to 0.25.3 update
  tmt#4745    [1]  Specify a different User-Agent for pages behind Cloudfront

  Removed (1) - 1 points
--------------------------------------------------------------------------------
  tmt#4634    [1]  Revert #4630

  Completed original items (28) - 65 points
--------------------------------------------------------------------------------
  tmt#3945    [1]  tmt is getting stuck by waiting for sudo bootc status on non-bootc host system
  tmt#4333    [2]  Add KVM device access support to Podman
  tmt#4457    [2]  Drop step-specific "base Click command" implementations
  tmt#4557    [5]  Review flaky tests and make them reliable
  tmt#4599    [2]  Fix the xref formatting of `:tmt:story:` role to normal text
  tmt#4604    [5]  Duplicated issues, Jira Cloud integration, sprint overview
  tmt#4609    [2]  tmt gets stuck for a while on bootc?
  tmt#4618    [5]  Save warning messages to be picked up by testing-farm
  tmt#4631    [1]  Check for the presence of sudo before querying is_image_mode
  tmt#4635    [1]  Instruct `rpminspect` to ignore xml jinja templates
  tmt#4637    [2]  Add virtualization.confidential hardware requirement
  tmt#4638    [2]  Add `virtualization.confidential` hardware requirement
  tmt#4639    [1]  Use `uv` in `make docs` to be aligned with RTD builds
  tmt#4642    [3]  Save all warnings encountered in a warnings file
  tmt#4644    [5]  Create a Verify Install plugin which checks if packages are installed from the correct repo
  tmt#4650    [1]  Add a glossary section
  tmt#4657    [2]  Catastrophic regex backtracking in shell framework _extract_failures on long lines
  tmt#4658    [2]  Fix catastrophic regex backtracking in shell framework
  tmt#4660    [5]  Add a new feature plugin to verify package installation
  tmt#4662    [2]  Use dedicated temporary directory for all rsync pulls
  tmt#4663    [2]  Document `user tree`, `work tree` and `test tree` in the Glossary
  tmt#4667    [2]  Prepare and finish step will now fail when phase fails
  tmt#4672    [2]  Implement the `sprint-overview` script
  tmt#4674    [1]  Revert #4396
  tmt#4676    [1]  Expose typing.override
  tmt#4681    [3]  Refactor github workflow
  tmt#4682    [1]  Fix issues with `check-wheel-contents`
  tmt#4692    [2]  `copr.repository` provider should enumerate packages into artifacts.yaml

  Incomplete original items (7) - 26 points
--------------------------------------------------------------------------------
  tmt#4280    [5]  Add Polarion story export with test case linking and custom fields - features inside polarion
  tmt#4437    [2]  Mock provision: make detection of finished processes more deterministic
  tmt#4531    [5]  Implement full loading of the recipe
  tmt#4606    [3]  Improve test coverage for `prepare` plugins in image mode
  tmt#4645    [3]  All providers should list the artifacts in `artifacts.yaml`
  tmt#4646    [5]  Link the verify install plugin to the artifact plugin
  tmt#4661    [3]  Add support for full recipe loading

  Completed added items (15) - 21 points
--------------------------------------------------------------------------------
  upgrade#15  [1]  Run upgrade via `dnf5 offline reboot`
  upgrade#18  [1]  Use a different package for dependency test
  upgrade#20  [1]  Use `dnf config-manager setopt` to disable repositories
  tmt#4695    [2]  `copr.repository` provider creates a `Repository` object
  tmt#4699    [1]  Fix `TestJiraLink` unit tests failing with HTTP 503
  tmt#4704    [2]  Document tree handling and workdirs
  tmt#4705    [2]  Control which runner devices can be exposed to guests
  tmt#4706    [1]  Drop copr epel6 enablement
  tmt#4717    [3]  Fix flaky test, add retry to testcloud
  tmt#4720    [1]  Add missing `main.fmf` for copr-repository artifact provider test
  tmt#4724    [1]  Fix for `pint` fixing dimensionless units
  tmt#4725    [1]  Use a different package for upgrade dependency test
  tmt#4727    [2]  Add additional conversion methods to step & guest dataclasses
  tmt#4733    [1]  Fix a few other `pint` tests due to 0.25.3 update
  tmt#4745    [1]  Specify a different User-Agent for pages behind Cloudfront

  Incompleted added items (3) - 7 points
--------------------------------------------------------------------------------
  tmt#4703    [2]  List packages from repository providers in `artifacts.yaml`
  tmt#4719    [-]  Improve test coverage for `prepare` plugins in image mode
  tmt#4726    [5]  Auto-verify artifact packages against require/recommend

@happz happz added this to planning Mar 20, 2026
@github-project-automation github-project-automation bot moved this to backlog in planning Mar 20, 2026
@happz happz moved this from backlog to review in planning Mar 20, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request adds a comparison mode to the sprint overview script. The implementation is mostly solid, but I've found a few issues related to correctness and clarity. There are potential TypeError and ZeroDivisionError exceptions that need to be handled. I've also suggested a refactoring of the comparison logic to make the output report clearer and more intuitive.

Comment thread scripts/sprint-overview Outdated
Comment thread scripts/sprint-overview Outdated
Comment thread scripts/sprint-overview Outdated
Comment thread scripts/sprint-overview Outdated
Comment thread scripts/sprint-overview Outdated
@happz happz force-pushed the happz-sprint-overview-compare branch 3 times, most recently from 0b7e906 to a862e6f Compare March 23, 2026 09:42
@psss psss force-pushed the psss-sprint-overview branch from 293716e to 1578b89 Compare March 23, 2026 23:27
@happz happz force-pushed the happz-sprint-overview-compare branch from a862e6f to a34a122 Compare March 24, 2026 23:31
@psss psss force-pushed the psss-sprint-overview branch from dfce2dd to c8d559e Compare March 25, 2026 07:00
Base automatically changed from psss-sprint-overview to main March 25, 2026 07:39
@happz happz force-pushed the happz-sprint-overview-compare branch 2 times, most recently from 2e5f824 to 2ce61fb Compare March 26, 2026 19:36
@psss psss self-assigned this Mar 27, 2026
@happz happz force-pushed the happz-sprint-overview-compare branch from 2ce61fb to cc80067 Compare March 31, 2026 16:52
@happz happz force-pushed the happz-sprint-overview-compare branch 2 times, most recently from 8c396b3 to 89e5999 Compare April 8, 2026 18:57
Comment thread scripts/sprint-overview
Invoked by adding `--base` option - compares against live data - plus
`--current` can be used to compare against another saved file to avoid
talking to Github API so often.
@happz happz force-pushed the happz-sprint-overview-compare branch from 89e5999 to 807d1c6 Compare April 13, 2026 07:38
Copy link
Copy Markdown
Member

@psss psss left a comment

Choose a reason for hiding this comment

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

Nice! Just two suggestions.

Comment thread scripts/sprint-overview
return
if current_path is not None:
with open(current_path) as f:
items = YAML().load(f)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
items = YAML().load(f)
items = [Item(**item) for item in YAML().load(f)]

We need to unpack these too, right? Otherwise I get:

  File "/home/psss/git/tmt/./scripts/sprint-overview", line 289, in display_comparison
    current_map = {item.id: item for item in current}
                   ^^^^^^^
AttributeError: 'CommentedMap' object has no attribute 'id'

Comment thread scripts/sprint-overview
'--base',
'base_path',
default=None,
help='Instead of reporting, compare the current sprint against this saved state.',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Perhaps add a metavar with PATH? The default TEXT is a bit confusing:

  --base TEXT     Instead of reporting, compare the current sprint against
                  this saved state.
  --current TEXT  If set, compare --base against --current instead of the live
                  sprint state.

Similar below.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: review

Development

Successfully merging this pull request may close these issues.

3 participants