Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(commit): implement questions 'filter' support with handlers #1207

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

AdrianDC
Copy link
Contributor

Description

Supported APIs: Common Python, commitizen.cz.utils.* functions

Example YAML configurations:

commitizen:
  name: cz_customize
  customize:
    questions:
      - ...
      - type: input
        name: scope
        message: 'Scope of the change :'
        filter: 'lambda text: commitizen.cz.utils.required_validator(text, msg="! Error: Scope is required")'
        default: ''
      - type: input
        name: subject
        message: 'Title of the commit (starting in lower case and without period) :'
        filter: 'lambda text: commitizen.cz.utils.required_validator(text.strip(".").strip(), msg="! Error: Title is required")'
        default: ''
      - type: input
        name: body
        message: 'Additional contextual message (Empty to skip) :'
        default: 'Issue: #...'
        filter: 'commitizen.cz.utils.multiple_line_breaker'

Additional commits to add missing YAML tests, fix YAML configurations, and then add the keys for this feature.

Checklist

  • Add test cases to all the changes you introduce
  • Run ./scripts/format and ./scripts/test locally to ensure this change passes linter check and test
  • Test the changes on the local machine manually
  • Update the documentation for the changes

Expected behavior

? Title of the commit (starting in lower case and without period) :                                                                                                                                                                                    
Hello                                                                                                                                                                                                                                                  
! Error: Title is required

Steps to Test This Pull Request

Example provided in the description

Additional context

Copy link

codecov bot commented Aug 13, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 97.60%. Comparing base (120d514) to head (33bbf0f).
Report is 492 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1207      +/-   ##
==========================================
+ Coverage   97.33%   97.60%   +0.26%     
==========================================
  Files          42       55      +13     
  Lines        2104     2626     +522     
==========================================
+ Hits         2048     2563     +515     
- Misses         56       63       +7     
Flag Coverage Δ
unittests 97.60% <100.00%> (+0.26%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@AdrianDC
Copy link
Contributor Author

  • Coverage resolved, 100% over commit.py
  • TOML faulty types fixed
  • Local containerized tests fixed for 'safe.directory' ownership issues
  • Tests for 'cz_customize' using the .customize config rather than unrelated cz_jira
  • Contents of the questions prompts tested for coverage and types around commands.Commit

@AdrianDC AdrianDC force-pushed the questions-filter branch 2 times, most recently from 780b16b to c24db8a Compare August 18, 2024 13:38
commitizen/commands/commit.py Outdated Show resolved Hide resolved
Copy link
Member

@Lee-W Lee-W left a comment

Choose a reason for hiding this comment

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

I'm sending a "Request changes" to this PR as I'm -1 to this but would like to get feedback from other maintainers

@AdrianDC AdrianDC changed the title feat(commit): implement questions 'filter' support with evaluations feat(commit): implement questions 'filter' support with handlers Aug 25, 2024
@AdrianDC AdrianDC force-pushed the questions-filter branch 2 times, most recently from 65f4d93 to 314f3bf Compare August 25, 2024 03:38
@AdrianDC
Copy link
Contributor Author

Refactored as discussed : feat(commit): implement questions 'filter' support with handlers

Supported APIs:

  • multiple_line_breaker
  • required_validator
  • required_validator_scope
  • required_validator_subject_strip
  • required_validator_title_strip

Example YAML configurations:

commitizen:
  name: cz_customize
  customize:
    questions:
      - ...
      - type: input
        name: scope
        message: 'Scope of the change :'
        filter: 'required_validator_scope'
        default: ''
      - type: input
        name: subject
        message: 'Title of the commit (starting in lower case and without period) :'
        filter: 'required_validator_subject_strip'
        default: ''
      - type: input
        name: body
        message: 'Additional contextual message (Empty to skip) :'
        default: 'Issue: #...'
        filter: 'multiple_line_breaker'

> commitizen.exceptions.InvalidConfigurationError: Failed to parse not_exist.yaml: while scanning a double-quoted scalar
> found unknown escape character 's'

Signed-off-by: Adrian DC <[email protected]>
> test_commit_parser[config2] - AssertionError:
>   assert '(?P<message>.*)' == '^(?P<change_...<message>.*)?'
> test_changelog_pattern[config2] - AssertionError:
>   assert '.*' == '^(feature|bug fix)?(!)?'
> test_change_type_map[config2] - AssertionError:
>   assert None == {'bug fix': 'Fix', 'feature': 'Feat'}

Signed-off-by: Adrian DC <[email protected]>
Example: ./scripts/test -k 'test_commit_when_' --no-cov
---

Signed-off-by: Adrian DC <[email protected]>
Details: If using a TOML configuration, the type was 'tomlkit.items.AoT'
---

Signed-off-by: Adrian DC <[email protected]>
Supported APIs:
  - multiple_line_breaker
  - required_validator
  - required_validator_scope
  - required_validator_subject_strip
  - required_validator_title_strip

Example YAML configurations:
---
commitizen:
  name: cz_customize
  customize:
    questions:
      - ...
      - type: input
        name: scope
        message: 'Scope of the change :'
        filter: 'required_validator_scope'
        default: ''
      - type: input
        name: subject
        message: 'Title of the commit (starting in lower case and without period) :'
        filter: 'required_validator_subject_strip'
        default: ''
      - type: input
        name: body
        message: 'Additional contextual message (Empty to skip) :'
        default: 'Issue: #...'
        filter: 'multiple_line_breaker'
---

Signed-off-by: Adrian DC <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants