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.63%. Comparing base (120d514) to head (314f3bf).
Report is 414 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1207      +/-   ##
==========================================
+ Coverage   97.33%   97.63%   +0.29%     
==========================================
  Files          42       55      +13     
  Lines        2104     2534     +430     
==========================================
+ Hits         2048     2474     +426     
- Misses         56       60       +4     
Flag Coverage Δ
unittests 97.63% <100.00%> (+0.29%) ⬆️

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

Signed-off-by: Adrian DC <radian.dc@gmail.com>
> 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 <radian.dc@gmail.com>
> 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 <radian.dc@gmail.com>
Example: ./scripts/test -k 'test_commit_when_' --no-cov
---

Signed-off-by: Adrian DC <radian.dc@gmail.com>
Signed-off-by: Adrian DC <radian.dc@gmail.com>
Details: If using a TOML configuration, the type was 'tomlkit.items.AoT'
---

Signed-off-by: Adrian DC <radian.dc@gmail.com>
Signed-off-by: Adrian DC <radian.dc@gmail.com>
…nd sources

Details: The git sources folder ownership may be detected as dubious if running
         in a container with sources mounted to work on fixes and tests,
         breaking 'test_find_git_project_root' and 'test_get_commits_with_signature'
> commitizen.exceptions.GitCommandError: fatal: detected dubious ownership in repository at '...'
---

Signed-off-by: Adrian DC <radian.dc@gmail.com>
@AdrianDC AdrianDC changed the title feat(commit): implement questions 'filter' support with evaluations feat(commit): implement questions 'filter' support with handlers Aug 25, 2024
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 <radian.dc@gmail.com>
@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'

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