Skip to content

Use io.cucumber.<package-name> for internal classes #1445

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

Closed
wants to merge 26 commits into from

Conversation

mpkorstanje
Copy link
Contributor

@mpkorstanje mpkorstanje commented Aug 31, 2018

Summary

Introduces the io.cucumber.<package-name> structure for all internal classes.

Motivation and Context

With this PR I hope to achieve a couple of aims.

  • Rename the cucumber package to io.cucumber
  • Remove cyclical package dependencies
  • Remove split packages
  • Make clear the internal structure of the code.
  • Do not break the public api (That can wait for the next Gherkin)

Details

Everything outside of cucumber.api has been moved to io.cucumber. And each module uses io.cucumber.<module-name> as its root package. If a module name starts with cucumber-, this part is omitted. This prevents a split package from occurring.

By making as many classes package private as possible it became possible to hide significant parts of cucumbers implementation details. This will make it easier to apply semantic versioning in the future.

By making classes final the use of Mockito was forced to the edges of the package. Ensuring that the exercises each package from end to end.

Before:
image

After
image

Types of changes

  • Bug fix (non-breaking change which fixes an issue).
  • New feature (non-breaking change which adds functionality).
  • Breaking change (fix or feature that would cause existing functionality to not work as expected).

@mpkorstanje mpkorstanje changed the title Introduces the io.cucumber.<package-name> structure for all internal classes. Introduce the io.cucumber.<package-name> structure for all internal classes Aug 31, 2018
@mpkorstanje mpkorstanje changed the title Introduce the io.cucumber.<package-name> structure for all internal classes Use io.cucumber.<package-name> for all internal classes Aug 31, 2018
@mpkorstanje mpkorstanje changed the title Use io.cucumber.<package-name> for all internal classes Use io.cucumber.<package-name> for internal classes Aug 31, 2018
@mpkorstanje mpkorstanje force-pushed the introduce-new-package-structure branch from 1493296 to 9c96257 Compare August 31, 2018 21:33
@coveralls
Copy link

coveralls commented Aug 31, 2018

Coverage Status

Coverage increased (+1.0%) to 86.55% when pulling c2debf3 on introduce-new-package-structure into c75603d on master.

@mpkorstanje mpkorstanje added this to the 4.0.0 milestone Aug 31, 2018
@mpkorstanje mpkorstanje force-pushed the introduce-new-package-structure branch from 8817659 to 4566b11 Compare August 31, 2018 23:11
@mpkorstanje mpkorstanje force-pushed the introduce-new-package-structure branch from 4566b11 to c2debf3 Compare August 31, 2018 23:12
@mpkorstanje mpkorstanje modified the milestones: 4.0.0, 5.0.0 Sep 1, 2018
@mpkorstanje mpkorstanje closed this Sep 2, 2018
@mpkorstanje mpkorstanje deleted the introduce-new-package-structure branch September 2, 2018 00:41
@lock
Copy link

lock bot commented Sep 2, 2019

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock bot locked as resolved and limited conversation to collaborators Sep 2, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants