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 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 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 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 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 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 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 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 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 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 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 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 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:
provide
makes the adapter behave like a polyfill, meaning "require this class in caseext-mongo
is 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-mongo
is installed.replace
adheres more strictly to the "composer way of life": ifext-mongo
is 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.git
cd 4cc18791e439afe99183
for f in composer*.json; do echo "$f:"; COMPOSER=$f composer update --dry-run; done
for f in composer*.json; do echo "$f:"; COMPOSER=$f php -n $(which composer) update --dry-run; done