Created
February 23, 2016 17:34
-
-
Save dzuelke/4cc18791e439afe99183 to your computer and use it in GitHub Desktop.
Composer replace ext test cases
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6", | |
| "ext-mongo": "1.6.12" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6", | |
| "ext-mongo": "1.6.12" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6", | |
| "ext-mongo": "1.6.12" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-hash": "*", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "ext-mongo": "^1.5", | |
| "php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "ext-mongo": "1.6.12" | |
| }, | |
| "config": { | |
| "platform": { | |
| "php": "5.6", | |
| "ext-mongo": "1.6.12" | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "my-custom-sys/php", | |
| "version": "5.6.18", | |
| "replace": { | |
| "my-custom-sys/ext-hash": "self.version" | |
| } | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-hash": "*", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-mongo": "^1.5", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "my-custom-sys/php", | |
| "version": "5.6.18", | |
| "replace": { | |
| "my-custom-sys/ext-hash": "self.version" | |
| } | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-hash": "*", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": { | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| }, | |
| "provide": [], | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-mongo": "^1.5", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "my-custom-sys/php", | |
| "version": "5.6.18", | |
| "replace": { | |
| "my-custom-sys/ext-hash": "self.version" | |
| } | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-hash": "*", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-mongo": "^1.5", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "doctrine\/mongodb": "dev-master" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "repositories": [ | |
| { | |
| "packagist": false | |
| }, | |
| { | |
| "type": "package", | |
| "package": [ | |
| { | |
| "type": "metapackage", | |
| "name": "my-custom-sys/php", | |
| "version": "5.6.18", | |
| "replace": { | |
| "my-custom-sys/ext-hash": "self.version" | |
| } | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "alcaeus\/mongo-php-adapter", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-hash": "*", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": { | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| }, | |
| "conflict": [] | |
| }, | |
| { | |
| "type": "metapackage", | |
| "name": "doctrine\/mongodb", | |
| "version": "dev-master", | |
| "require": { | |
| "my-custom-sys/ext-mongo": "^1.5", | |
| "my-custom-sys/php": "^5.5 || ^7.0" | |
| }, | |
| "replace": [], | |
| "provide": [], | |
| "conflict": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "require": { | |
| "alcaeus\/mongo-php-adapter": "dev-master", | |
| "my-custom-sys/ext-mongo": "1.6.12" | |
| } | |
| } |
I guess the reason why different people report different results is because some have ext-mongo installed and some haven't. So many permutations :(
From what I can tell, examples 3, 4, 5 and 6 are the ones we actually want. There are two different approaches though:
providemakes the adapter behave like a polyfill, meaning "require this class in caseext-mongois missing but don't do anything if it's there". This may seem desirable but users may not be aware that the adapter is not being used becauseext-mongois installed.replaceadheres more strictly to the "composer way of life": ifext-mongois installed the user will be informed that there is a conflict and all is well.
The replace directive would have to be changed to replace all versions of ext-mongo that can be possibly replaced; in this case I'd actually use the following replace in mongo-php-adapter:
"replace": {
"ext-mongo": ">=1.3.0 || <1.7"
},
Also, the error message that comes up in case ext-mongo is already installed is quite confusing:
[InvalidArgumentException]
Package is not installed: ext-mongo-1.6.12.0
This can be confusing for users since it may seem that ext-mongo has to be installed when it already is installed.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
git clone https://gist.github.com/4cc18791e439afe99183.gitcd 4cc18791e439afe99183for f in composer*.json; do echo "$f:"; COMPOSER=$f composer update --dry-run; donefor f in composer*.json; do echo "$f:"; COMPOSER=$f php -n $(which composer) update --dry-run; done