Skip to content

fix return type of client.CycloneDxCmd.execute and use of exit #325

@jkowalleck

Description

@jkowalleck

the return type of cyclonedx_py.client.CycloneDxCmd.execute is currently None.
unfortunately this is not true. There are cases in which the method will never return, but exit python. there are other cases when the method returns. Therefore the return is sometimes typing.NoReturn

motivation:

  • be able to write unit tests for cyclonedx_py.client.CycloneDxCmd.execute
  • be able to catch raise conditions/exit codes in unit tests.

Proposal:

  • change the method to a bare state where it will always exit, but never return.
    therefore use sys.exit() and return type of typing.NoReturn
    calling methods - like unit tests - could catch the SystemExit exception and work with it if needed/
  • cyclonedx_py.client.main() should have a return type of NoReturn as well.
  • do not use exit but sys.exit - with proper ext message or raise condition.

acc crit:

  • all methods & functions of cyclonedx_py.client either return or exit. they may throw exceptions in addition.

alternative proposal or an addition:

  • implementation detail: use click for arg parsing and CLI foo

Metadata

Metadata

Assignees

Labels

QAQuality AssurancebugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions