Skip to content

Conversation

@tyxla
Copy link
Member

@tyxla tyxla commented Jun 4, 2019

This PR is an attempt to make the constants package a properly namespaced package with independent tests, and to have the rest of Jetpack use that package the new way, without breaking Jetpack or the existing tests.

Changes proposed in this Pull Request:

  • Add a namespace to the constants package.
  • Update the constants package to use PSR-4.
  • Fix all the phpcs errors in the constants package and add some inline docs.
  • Add a constants package README with examples.
  • Move the existing constant tests to the package.
  • Add the infrastructure to automatically test the constants package.
  • Update the rest of Jetpack to use the new constants package.
  • Update composer.lock with the new changes.

Is this a new feature or does it add/remove features to an existing part of Jetpack?

  • Part of the Jetpack DNA project - p1HpG7-70O-p2

Testing instructions:

  • Checkout this branch.
  • Run rm -rf ./vendor inside Jetpack.
  • Run composer install inside Jetpack.
  • Navigate to packages/constants
  • Run composer phpunit.
  • Verify that runs composer install internally, and then runs the package tests.
  • Verify the package tests pass.
  • Run composer phpunit again.
  • Verify the second time is fast because the dependencies are already installed.
  • Verify CI passes on this PR and 100% is green.
  • Smoke test Jetpack to verify it still works well in both the admin and the frontend.

Proposed changelog entry for your changes:

  • Finish the constants package and make its tests independent.

@tyxla tyxla added this to the 7.5 milestone Jun 4, 2019
@tyxla tyxla requested a review from a team June 4, 2019 12:27
@tyxla tyxla requested a review from a team as a code owner June 4, 2019 12:27
@tyxla tyxla self-assigned this Jun 4, 2019
@jetpackbot
Copy link
Collaborator

jetpackbot commented Jun 4, 2019

Thank you for the great PR description!

When this PR is ready for review, please apply the [Status] Needs Review label. If you are an a11n, please have someone from your team review the code if possible. The Jetpack team will also review this PR and merge it to be included in the next Jetpack release.

Scheduled Jetpack release: July 2, 2019.
Scheduled code freeze: June 25, 2019

Generated by 🚫 dangerJS against e36f0c1

@tyxla tyxla added [Status] Needs Review This PR is ready for review. and removed [Status] In Progress labels Jun 4, 2019
@tyxla tyxla requested a review from gravityrail June 4, 2019 12:42
@tyxla
Copy link
Member Author

tyxla commented Jun 4, 2019

This PR is ready for review @Automattic/jetpack-crew @Automattic/poseidon @gravityrail

Copy link
Contributor

@roccotripaldi roccotripaldi left a comment

Choose a reason for hiding this comment

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

Looks great! It looks like fusion struggled making a Phabricator changeset for this PR, and we'll need to figure out how to ensure we to autoload on .com so that fusion continues to work.

@tyxla tyxla force-pushed the update/polish-constants-package branch from b593ce2 to ecda50d Compare June 5, 2019 07:32
@matticbot
Copy link
Contributor

Caution: This PR has changes that must be merged to WordPress.com
Hello tyxla! These changes need to be synced to WordPress.com - If you 're an a11n, please commandeer, review, and approve D29104-code before merging this PR. Thank you!

@tyxla tyxla force-pushed the update/polish-constants-package branch from ecda50d to af8b6ee Compare June 5, 2019 09:27
@tyxla
Copy link
Member Author

tyxla commented Jun 5, 2019

This one has been rebased and is ready for a review.

It looks like fusion struggled making a Phabricator changeset for this PR

Yeah, that would happen when we're touching files that are not Fusion-ed in this PR.

Anyone from @Automattic/jetpack-crew would you recommend that I split this to 2 PRs - one that touches only Fusion-ed files, and one that touches only ones that aren't Fusion-ed?

and we'll need to figure out how to ensure we to autoload on .com so that fusion continues to work.

Yeah, I imagine we'll end up having to take care of that regardless, since we're introducing various packages and they'll end up being used on the .com codebase as well. What do you think?

@jeherve
Copy link
Member

jeherve commented Jun 5, 2019

Anyone from @Automattic/jetpack-crew would you recommend that I split this to 2 PRs - one that touches only Fusion-ed files, and one that touches only ones that aren't Fusion-ed?

I think this is part of a larger discussion we should have about syncing packages. We'll run into more and more as we go, and we need to find a good way to ensure packages are well synced. One way could be to actually rely on the packages on WordPress.com, for example.

I don't think that's something you need to worry about in this PR since we are not merging into master just yet, but I think that's a discussion we should start on +jetpackdna.

What do you think?

Copy link
Member

@jeherve jeherve left a comment

Choose a reason for hiding this comment

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

This tests well on my end. Should be good to merge!

@jeherve jeherve removed the [Status] Needs Review This PR is ready for review. label Jun 5, 2019
@jeherve jeherve added the [Status] Ready to Merge Go ahead, you can push that green button! label Jun 5, 2019
tyxla and others added 3 commits June 5, 2019 17:19
Co-Authored-By: Miguel Lezama <[email protected]>
Co-Authored-By: Miguel Lezama <[email protected]>
Co-Authored-By: Miguel Lezama <[email protected]>
@tyxla
Copy link
Member Author

tyxla commented Jun 5, 2019

Thanks @lezama and @jeherve! Going to merge when tests are green.

@tyxla
Copy link
Member Author

tyxla commented Jun 5, 2019

Anyone from @Automattic/jetpack-crew would you recommend that I split this to 2 PRs - one that touches only Fusion-ed files, and one that touches only ones that aren't Fusion-ed?

I think this is part of a larger discussion we should have about syncing packages. We'll run into more and more as we go, and we need to find a good way to ensure packages are well synced. One way could be to actually rely on the packages on WordPress.com, for example.

I don't think that's something you need to worry about in this PR since we are not merging into master just yet, but I think that's a discussion we should start on +jetpackdna.

What do you think?

You're totally right! This will be a recurring problem, so let's discuss together and figure out the best way forward.

@tyxla tyxla merged commit d013dbd into feature/jetpack-packages Jun 5, 2019
@tyxla tyxla deleted the update/polish-constants-package branch June 5, 2019 14:26
@matticbot matticbot added [Status] Needs Changelog and removed [Status] Ready to Merge Go ahead, you can push that green button! labels Jun 5, 2019
dereksmart pushed a commit that referenced this pull request Jun 10, 2019
* Add Custom Autoloader (#12447)

* Try Custom Autoloader

* spelling fix

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix.

Co-Authored-By: Marin Atanasov <[email protected]>

* Updated to make it even simpler

* test plugin

* a Toy plugin :) 🚂

* Minor update

* Minor update

* Fixes typo

* delete file

* Minor updates

* Added limitaionts section to readme

* ooops

* Fix readme

* Turn the jetpack-autoloader into a package.

* fixes to the jetpack a custom plugin

* typo

Co-Authored-By: Marin Atanasov <[email protected]>

* remove scripts to "a" no longer needed thanks to @enejb magic

* Update packages/autoloader/README.md

fixes more wording in the readme

Co-Authored-By: Miguel Lezama <[email protected]>

* Update the version numbers of packages insead of branches

* forgot about the plugin

* update "a" composer

* Update the a composer lock file.

* Revert "Update the a composer lock file."

This reverts commit 90f2cb8dbc50e15caf19fa0b88e1ee201f8f21c5.

* typo fix

Co-Authored-By: Miguel Lezama <[email protected]>

* Rebased against master, testes that a plugin works as expected

* Remove not needed code

* Minor readme fix

* Remoce Space

* Add filter to prevent the autoloader from loading a particular version

* add b toy plugin depending on Jetpack Logo 1.0.1

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix

Co-Authored-By: Miguel Lezama <[email protected]>

* Update a comment

* Fix phpcs fixes

* Make the remove class_map from the global name space, fix phpcs issues

* Add the autoload_packages to be ignored.

* Add debug info

* Remove versions from composer.json of packages

* Add missing vendor to namespace

* Fix typo

* Fix typo and add punctuation

* Fix a typo

* Update .gitignore

Co-Authored-By: Jeremy Herve <[email protected]>

* Update all the composer files

* Take into account the @dev and always use the dev-* version

* Bug Fix load the latest version!

* Update the logic when enqueing the classes

* Update to use Namespaces

* Add tests to make sure that the enqueing works as expected

* Fix suggestions from Marin

* Remove generateClassMap method

* Fix the tests, rename the fucntion name to be more accurate

* More fixes to the tests.

* FuN

* Making it all work again

* Update the lock file

* Minor

* Remove unused plugins (#12529)

* Removed unnecessary gitignore lines.

* Separate the connection library into its own package. (#12399)

* Added an interface as a guide for the new package methods.

* Add package structure

* Initialized the composer library, added gitignore.

* Removed phpunit from connection dependencies.

* Added first real code to the connection manager class, as well as tests for it.

* Renamed the test folder to tests.

* Made the option name be a class constant.

* Added 10up's WP_Mock as a dependency, refactored the injection to use filters instead of setters.

* Changed the internal method accessibility to protected.

* Initialized an empty package repo for the options manager.

* Added the options package as a dependency to the master repo.

* Added a package structure placeholder for the options manager.

* Added the first test for the delete option method.

* Added the update method and a test for it.

* Added a test for the grouped option deletion.

* Added the group updater method and a test for it.

* Added the grouped option getter and a test for it.

* Added a test for the noncompact option getter.

* Added tests for network option manipulation.

* Removed autoloader requirement in favour of the existing one.

* Added the connection manager secret generator to actual Jetpack class.

* Removed individual gitignore files in favor of a parent-level file, props @tyxla!

* Moved packages source code into src folders.

* Removed the V7 part of the namespace.

* Remove v7 from namespace in the Manager Interface

* Remove V7 from namespaces

* Add Automattic to the namespace

* Rename jetpack-[name] packages to [name]

* Update composer lock

* Adding a package for Jetpack Constants

* Attempting to fix WPCOM tests.

* Excluding packages folder from linting for PHP 5.6 and earlier.

* adjust syntax in connection tests

* removing new unit tests. i'm not sure why they are failing. we can re-add them later.

* reverting last commit, and fixing tests in `packages/options`

* ah, one more

* remove an un-needed linting hack (#12543)

* Composer: avoid duplicate repositories key (#12546)

* Composer: avoid duplicate repositories key

Rely on wildcard instead. See #12483

* Revert changes in composer.lock

* Revert changes in composer.lock

* Revert changes in composer.lock

* Packages: Make logo package tests independent (#12514)

* Move package tests to package directory

* Add some dev deps to logo package

* Ignore vendor of all packages

* Add a logo package simple bootstrap

* Add a logo package phpunit config

* Cleanup package tests from Jetpack phpunit config

* Remove WP prefix from class name

* Make sure composer is installed

* Try: add SCOPE to travis matrix

* Try: Disable older PHP versions

* Replace WP_Mock with PHPMock

* Enable php 7.0 in Travis again

* Make phpunit version more permissive

* Fix setUp signature

* Play with phpunit versions

* Try enabling CI for feature branch

* Try enabling CI for feature branch

* Try enabling CI for feature branch

* Revert latest changes

* Try adding the branch to the whitelist

* Enable PHP 5.6 again

* Use php-mock instead of php-mock-phpunit

* Run composer phpunit for all packages

* Make mocking method protected

* Add parent teardown

* Remove whitelisted branch

* Run only for packages with tests

* remove trailing slash 🤔

* nope

* not sure what I am doing

* add debug statements

* run only if we have `php` tests

@zinigor @tyxla  we need to normalise de connection one

* Jetpack Options Package: just class map existing options class (#12562)

* instead of a new implementation of jetpack options, let's class map it

* Packages: Fix connection tests and allow them to run in CI (#12560)

* Use php-mock instead of wp_mock

* Add phpunit script

* Migrate tests from wp_mock to phpmock

* Make tests run in CI

* Run travis only for packages that have the php test dir

* Revert "Jetpack Options Package: just class map existing options class (#12562)" (#12571)

This reverts commit 0e3ac7a.

* Packages: Finish the constants package (#12558)

* PSR-4 constants

* Actually add namespacing to the constants class

* Update composer.lock

* Fix phpcs errors and add some docs

* Add a package README

* Move constant tests to the package

* Update Jetpack to use the constants package

* Fix constants usage in options package

* Rename README variable

Co-Authored-By: Miguel Lezama <[email protected]>

* Fix typo

Co-Authored-By: Miguel Lezama <[email protected]>

* Use plural

Co-Authored-By: Miguel Lezama <[email protected]>

* Making Jetpack_Options a classmapped package. (#12577)

* Making Jetpack_Options a classmapped package.

* Update Jetpack to use new JITM package (#12516)

* Update Jetpack to use new JITM package

* Add instructions on package installation and usage (#12576)

* Add instructions on package installation and usage

* Move content about installing Composer to the doc regarding development environment. Add a pointer to that section in the packages' readme

* Explain how to install Composer on systems other than macOS. Props @aldavigdis

* Update docs/development-environment.md

Co-Authored-By: Jeremy Herve <[email protected]>

* Apply suggestions from code review

Co-Authored-By: Jeremy Herve <[email protected]>

* Add reference to Composer installation in the section that explains how to start developing for Jetpack

* Packages: Fix alias example in README (#12582)

* Packages: Move sync to a classmapped package (#12572)

* Move all sync files to the package

* Add sync package composer.json

* Composer require the new sync package

* Update composer.lock after adding sync package dependency

* Remove some sync file requiring in sync package

* Remove some sync file requiring in the rest of Jetpack

* Hook Jetpack actions properly

* Fix a rebase conflict

* Fix update post terms test to not compare against the DB

* Packages: Move JITM tests to package and fix deps (#12583)

* Add phpunit devdep and composer phpunit script

* Add JITM tests config

* Move tests and add bootstrap

* Remove legacy jitm suite

* Rely on @dev connection package

* Remove version

* Update minimum stability and prefer stable

* Fix tests

* Update composer.lock

* Fix whitespace

Co-Authored-By: Miguel Lezama <[email protected]>

* Prepend an empty line

Co-Authored-By: Miguel Lezama <[email protected]>

* Connection Package: add Jetpack_Data methods (#12580)

Jetpack_Data -> Connection package
* removes php_bug_66229_check method - it's no longer used in the code base.
* Moving is_usable_domain to Connection package.
* Moves `get_access_token` to Connection package.

* Create package for Jetpack Tracking (#12596)

Created package for Jetpack Tracking

* Update/package logo add gray (#12610)

* Update the logo package to include a gray version. Add parameter to render method to specify the type

* Remove svg files. Update method to return an SVG string that can be stylized with CSS. Update tests.

* Fixed issue with logo in Jetpack connection banner in WP Admin

* Update test so it strictly tests two instances of the CSS class

* Optimize performance. Use const since the string is immutable. Use nowdoc to compose the string.

* Update logo tests in new file

* Constants_Manager -> Constants

* inc/lib/admin-pages/class.jetpack-react-page.php (#12627)

* Add jetpack signature class to connection package (#12620)

* Connection package: Add class.jetpack-signature and class.jetpack-error to connection package

* DNA: Don't require composer autoloader (#12624)

* Jitm package, don't use global Jetpack class (#12629)
kraftbj pushed a commit that referenced this pull request Dec 9, 2019
* Add Custom Autoloader (#12447)

* Try Custom Autoloader

* spelling fix

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix.

Co-Authored-By: Marin Atanasov <[email protected]>

* Updated to make it even simpler

* test plugin

* a Toy plugin :) 🚂

* Minor update

* Minor update

* Fixes typo

* delete file

* Minor updates

* Added limitaionts section to readme

* ooops

* Fix readme

* Turn the jetpack-autoloader into a package.

* fixes to the jetpack a custom plugin

* typo

Co-Authored-By: Marin Atanasov <[email protected]>

* remove scripts to "a" no longer needed thanks to @enejb magic

* Update packages/autoloader/README.md

fixes more wording in the readme

Co-Authored-By: Miguel Lezama <[email protected]>

* Update the version numbers of packages insead of branches

* forgot about the plugin

* update "a" composer

* Update the a composer lock file.

* Revert "Update the a composer lock file."

This reverts commit 90f2cb8dbc50e15caf19fa0b88e1ee201f8f21c5.

* typo fix

Co-Authored-By: Miguel Lezama <[email protected]>

* Rebased against master, testes that a plugin works as expected

* Remove not needed code

* Minor readme fix

* Remoce Space

* Add filter to prevent the autoloader from loading a particular version

* add b toy plugin depending on Jetpack Logo 1.0.1

Co-Authored-By: Marin Atanasov <[email protected]>

* minor space fix

Co-Authored-By: Miguel Lezama <[email protected]>

* Update a comment

* Fix phpcs fixes

* Make the remove class_map from the global name space, fix phpcs issues

* Add the autoload_packages to be ignored.

* Add debug info

* Remove versions from composer.json of packages

* Add missing vendor to namespace

* Fix typo

* Fix typo and add punctuation

* Fix a typo

* Update .gitignore

Co-Authored-By: Jeremy Herve <[email protected]>

* Update all the composer files

* Take into account the @dev and always use the dev-* version

* Bug Fix load the latest version!

* Update the logic when enqueing the classes

* Update to use Namespaces

* Add tests to make sure that the enqueing works as expected

* Fix suggestions from Marin

* Remove generateClassMap method

* Fix the tests, rename the fucntion name to be more accurate

* More fixes to the tests.

* FuN

* Making it all work again

* Update the lock file

* Minor

* Remove unused plugins (#12529)

* Removed unnecessary gitignore lines.

* Separate the connection library into its own package. (#12399)

* Added an interface as a guide for the new package methods.

* Add package structure

* Initialized the composer library, added gitignore.

* Removed phpunit from connection dependencies.

* Added first real code to the connection manager class, as well as tests for it.

* Renamed the test folder to tests.

* Made the option name be a class constant.

* Added 10up's WP_Mock as a dependency, refactored the injection to use filters instead of setters.

* Changed the internal method accessibility to protected.

* Initialized an empty package repo for the options manager.

* Added the options package as a dependency to the master repo.

* Added a package structure placeholder for the options manager.

* Added the first test for the delete option method.

* Added the update method and a test for it.

* Added a test for the grouped option deletion.

* Added the group updater method and a test for it.

* Added the grouped option getter and a test for it.

* Added a test for the noncompact option getter.

* Added tests for network option manipulation.

* Removed autoloader requirement in favour of the existing one.

* Added the connection manager secret generator to actual Jetpack class.

* Removed individual gitignore files in favor of a parent-level file, props @tyxla!

* Moved packages source code into src folders.

* Removed the V7 part of the namespace.

* Remove v7 from namespace in the Manager Interface

* Remove V7 from namespaces

* Add Automattic to the namespace

* Rename jetpack-[name] packages to [name]

* Update composer lock

* Adding a package for Jetpack Constants

* Attempting to fix WPCOM tests.

* Excluding packages folder from linting for PHP 5.6 and earlier.

* adjust syntax in connection tests

* removing new unit tests. i'm not sure why they are failing. we can re-add them later.

* reverting last commit, and fixing tests in `packages/options`

* ah, one more

* remove an un-needed linting hack (#12543)

* Composer: avoid duplicate repositories key (#12546)

* Composer: avoid duplicate repositories key

Rely on wildcard instead. See #12483

* Revert changes in composer.lock

* Revert changes in composer.lock

* Revert changes in composer.lock

* Packages: Make logo package tests independent (#12514)

* Move package tests to package directory

* Add some dev deps to logo package

* Ignore vendor of all packages

* Add a logo package simple bootstrap

* Add a logo package phpunit config

* Cleanup package tests from Jetpack phpunit config

* Remove WP prefix from class name

* Make sure composer is installed

* Try: add SCOPE to travis matrix

* Try: Disable older PHP versions

* Replace WP_Mock with PHPMock

* Enable php 7.0 in Travis again

* Make phpunit version more permissive

* Fix setUp signature

* Play with phpunit versions

* Try enabling CI for feature branch

* Try enabling CI for feature branch

* Try enabling CI for feature branch

* Revert latest changes

* Try adding the branch to the whitelist

* Enable PHP 5.6 again

* Use php-mock instead of php-mock-phpunit

* Run composer phpunit for all packages

* Make mocking method protected

* Add parent teardown

* Remove whitelisted branch

* Run only for packages with tests

* remove trailing slash 🤔

* nope

* not sure what I am doing

* add debug statements

* run only if we have `php` tests

@zinigor @tyxla  we need to normalise de connection one

* Jetpack Options Package: just class map existing options class (#12562)

* instead of a new implementation of jetpack options, let's class map it

* Packages: Fix connection tests and allow them to run in CI (#12560)

* Use php-mock instead of wp_mock

* Add phpunit script

* Migrate tests from wp_mock to phpmock

* Make tests run in CI

* Run travis only for packages that have the php test dir

* Revert "Jetpack Options Package: just class map existing options class (#12562)" (#12571)

This reverts commit 0e3ac7a.

* Packages: Finish the constants package (#12558)

* PSR-4 constants

* Actually add namespacing to the constants class

* Update composer.lock

* Fix phpcs errors and add some docs

* Add a package README

* Move constant tests to the package

* Update Jetpack to use the constants package

* Fix constants usage in options package

* Rename README variable

Co-Authored-By: Miguel Lezama <[email protected]>

* Fix typo

Co-Authored-By: Miguel Lezama <[email protected]>

* Use plural

Co-Authored-By: Miguel Lezama <[email protected]>

* Making Jetpack_Options a classmapped package. (#12577)

* Making Jetpack_Options a classmapped package.

* Update Jetpack to use new JITM package (#12516)

* Update Jetpack to use new JITM package

* Add instructions on package installation and usage (#12576)

* Add instructions on package installation and usage

* Move content about installing Composer to the doc regarding development environment. Add a pointer to that section in the packages' readme

* Explain how to install Composer on systems other than macOS. Props @aldavigdis

* Update docs/development-environment.md

Co-Authored-By: Jeremy Herve <[email protected]>

* Apply suggestions from code review

Co-Authored-By: Jeremy Herve <[email protected]>

* Add reference to Composer installation in the section that explains how to start developing for Jetpack

* Packages: Fix alias example in README (#12582)

* Packages: Move sync to a classmapped package (#12572)

* Move all sync files to the package

* Add sync package composer.json

* Composer require the new sync package

* Update composer.lock after adding sync package dependency

* Remove some sync file requiring in sync package

* Remove some sync file requiring in the rest of Jetpack

* Hook Jetpack actions properly

* Fix a rebase conflict

* Fix update post terms test to not compare against the DB

* Packages: Move JITM tests to package and fix deps (#12583)

* Add phpunit devdep and composer phpunit script

* Add JITM tests config

* Move tests and add bootstrap

* Remove legacy jitm suite

* Rely on @dev connection package

* Remove version

* Update minimum stability and prefer stable

* Fix tests

* Update composer.lock

* Fix whitespace

Co-Authored-By: Miguel Lezama <[email protected]>

* Prepend an empty line

Co-Authored-By: Miguel Lezama <[email protected]>

* Connection Package: add Jetpack_Data methods (#12580)

Jetpack_Data -> Connection package
* removes php_bug_66229_check method - it's no longer used in the code base.
* Moving is_usable_domain to Connection package.
* Moves `get_access_token` to Connection package.

* Create package for Jetpack Tracking (#12596)

Created package for Jetpack Tracking

* Update/package logo add gray (#12610)

* Update the logo package to include a gray version. Add parameter to render method to specify the type

* Remove svg files. Update method to return an SVG string that can be stylized with CSS. Update tests.

* Fixed issue with logo in Jetpack connection banner in WP Admin

* Update test so it strictly tests two instances of the CSS class

* Optimize performance. Use const since the string is immutable. Use nowdoc to compose the string.

* Update logo tests in new file

* Constants_Manager -> Constants

* inc/lib/admin-pages/class.jetpack-react-page.php (#12627)

* Add jetpack signature class to connection package (#12620)

* Connection package: Add class.jetpack-signature and class.jetpack-error to connection package

* DNA: Don't require composer autoloader (#12624)

* Jitm package, don't use global Jetpack class (#12629)
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.

7 participants