poetry icon indicating copy to clipboard operation
poetry copied to clipboard

Add unit tests for tests/helpers.py to improve coverage (#9161)

Open jalpuche1 opened this issue 5 months ago • 1 comments

Pull Request Check List

Relates-to: #9161

  • [x] Added tests for changed code.
  • [ ] Updated documentation for changed code.

Summary

This PR adds new unit tests for existing functions in src/poetry/utils/helpers.py to improve test coverage and ensure consistent behavior across supported platforms.

Covered Functions

The following helper functions are now tested:

  • merge_dicts() – verifies recursive dictionary merging
  • paths_csv() – ensures correct comma-separated string output
  • ensure_path() – validates directory existence handling
  • is_dir_writable() – confirms directory write permissions
  • pluralize() – tests correct singular/plural word handling
  • get_file_hash() – ensures deterministic hash generation
  • remove_directory() – verifies safe recursive removal
  • directory() – confirms context-manager behavior for directory iteration
  • get_real_windows_path() – tested (and auto-skipped on non-Windows systems)

jalpuche1 avatar Oct 08 '25 01:10 jalpuche1

Reviewer's Guide

Introduces a new test module tests/test_helpers_additional.py to cover eight helper functions from helpers.py, including object creation, file/directory operations, environment isolation, data transformation, and architecture support, thereby improving unit test coverage.

File-Level Changes

Change Details Files
Added tests for package and dependency creation
  • get_package returns correct Package object
  • get_dependency handles string-based constraints
tests/test_helpers_additional.py
Added tests for file and directory operations
  • copy_path copies files and directories correctly
  • switch_working_directory changes and restores cwd
  • with_working_directory copies src into dest and cleans up
tests/test_helpers_additional.py
Added tests for environment isolation context
  • isolated_environment sets new vars and restores original environment
tests/test_helpers_additional.py
Added tests for dictionary flattening
  • flatten_dict recursively flattens nested dictionaries into dot-notation keys
tests/test_helpers_additional.py
Added tests for architecture variant support
  • pbs_installer_supported_arch returns true for valid archs and false for invalid ones
tests/test_helpers_additional.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an issue from a review comment by replying to it. You can also reply to a review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull request title to generate a title at any time. You can also comment @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment @sourcery-ai summary on the pull request to (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

  • Contact our support team for questions or feedback.
  • Visit our documentation for detailed guides and information.
  • Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.

sourcery-ai[bot] avatar Oct 08 '25 01:10 sourcery-ai[bot]