Skip to content

Commit 6c3f323

Browse files
authored
Test with Composer 2 and no Ocramius subdependency in CI (#335)
* Test with Composer 2 and no Ocramius subdependency in CI * Make release default value work on Composer 2 * Add conflict rule to avoid installing dep without Versions::ROOT_PACKAGE_NAME * Upgrade PHPStan * Fix CS * Add changelog entry
1 parent 6e9278d commit 6c3f323

File tree

14 files changed

+401
-64
lines changed

14 files changed

+401
-64
lines changed

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ jobs:
4848
- travis_retry travis_wait composer install --no-interaction --prefer-dist
4949
- composer remove --dev friendsofphp/php-cs-fixer phpstan/phpstan phpstan/phpstan-phpunit jangregor/phpstan-prophecy --no-update
5050
- travis_retry travis_wait composer update --no-interaction --prefer-dist --prefer-stable --prefer-lowest
51+
- name: Composer 2
52+
before_install:
53+
- composer self-update --snapshot
54+
- composer require jean85/pretty-package-versions:^1.4 --no-interaction --no-update
5155
- stage: Code style and static analysis
5256
name: PHPStan
5357
script:

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
66

77
## Unreleased
88
- Capture and flush messages in a Messenger Worker context (#326, thanks to @emarref)
9+
- Support Composer 2 (#335)
10+
- Avoid issues with dependency lower bound, fix #331 (#335)
911
- ...
1012

1113
## 3.4.4 (2020-03-16)

composer.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@
3131
},
3232
"require-dev": {
3333
"friendsofphp/php-cs-fixer": "^2.8",
34-
"jangregor/phpstan-prophecy": "^0.3.0",
34+
"jangregor/phpstan-prophecy": "^0.6.2",
3535
"monolog/monolog": "^1.11||^2.0",
3636
"php-http/mock-client": "^1.0",
37-
"phpstan/phpstan-phpunit": "^0.11",
38-
"phpstan/phpstan-shim": "^0.11",
37+
"phpstan/extension-installer": "^1.0",
38+
"phpstan/phpstan": "^0.12.19",
39+
"phpstan/phpstan-phpunit": "^0.12.8",
3940
"phpunit/phpunit": "^7.5||^8.5",
4041
"symfony/browser-kit": "^3.4||^4.0||^5.0",
4142
"symfony/expression-language": "^3.4||^4.0||^5.0",
@@ -45,6 +46,9 @@
4546
"symfony/phpunit-bridge": "^5.0",
4647
"symfony/yaml": "^3.4||^4.0||^5.0"
4748
},
49+
"conflict": {
50+
"ocramius/package-versions": "<1.3"
51+
},
4852
"suggest": {
4953
"monolog/monolog": "Required to use the Monolog handler"
5054
},

phpstan-baseline.neon

Lines changed: 342 additions & 0 deletions
Large diffs are not rendered by default.

phpstan.neon

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,6 @@ parameters:
44
- src/
55
- test/
66
ignoreErrors:
7-
- "/Call to function method_exists.. with 'Symfony.+' and 'getRootNode' will always evaluate to false./"
8-
- "/Call to function method_exists.. with 'Symfony.+' and 'getThrowable' will always evaluate to false./"
9-
- '/Class PHPUnit_Framework_TestCase not found/'
107
- '/Symfony\\Component\\HttpKernel\\Event\\(GetResponse|FilterController)Event not found.$/'
11-
-
12-
message: '/Symfony\\Bundle\\FrameworkBundle\\Client/'
13-
path: test/End2End/End2EndTest.php
14-
-
15-
message: '/^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder::root...$/'
16-
path: src/DependencyInjection/Configuration.php
17-
-
18-
message: '/Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent.$/'
19-
path: src/EventListener/ErrorListener.php
20-
-
21-
message: '/Sentry\\SentryBundle\\EventListener\\RequestListener(Request|Controller)Event( not found)?.$/'
22-
path: src/EventListener/RequestListener.php
23-
-
24-
message: '/Sentry\\SentryBundle\\EventListener\\SubRequestListenerRequestEvent( not found)?.$/'
25-
path: src/EventListener/SubRequestListener.php
26-
-
27-
message: '/Class Symfony\\Component\\Messenger\\Event\\WorkerMessage[a-zA-Z]*Event constructor invoked with [0-9]+ parameters, [0-9]+ required\.$/'
28-
path: test/EventListener/MessengerListenerTest.php
29-
308
includes:
31-
- vendor/jangregor/phpstan-prophecy/src/extension.neon
32-
- vendor/phpstan/phpstan-phpunit/extension.neon
9+
- phpstan-baseline.neon

src/DependencyInjection/Configuration.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Sentry\SentryBundle\DependencyInjection;
44

5+
use Composer\InstalledVersions;
56
use Jean85\PrettyVersions;
67
use PackageVersions\Versions;
78
use Sentry\Options;
@@ -111,10 +112,17 @@ public function getConfigTreeBuilder(): TreeBuilder
111112
->defaultValue($defaultValues->getPrefixes())
112113
->prototype('scalar');
113114
$optionsChildNodes->scalarNode('project_root');
114-
$optionsChildNodes->scalarNode('release')
115-
->defaultValue(PrettyVersions::getVersion(Versions::ROOT_PACKAGE_NAME)->getPrettyVersion())
115+
116+
$releaseNode = $optionsChildNodes->scalarNode('release')
116117
->info('Release version to be reported to sentry, see https://docs.sentry.io/workflow/releases/?platform=php')
117118
->example('my/application@ff11bb');
119+
120+
if (class_exists(InstalledVersions::class)) {
121+
$releaseNode->defaultValue(PrettyVersions::getVersion(InstalledVersions::getRootPackage()['name'])->getPrettyVersion());
122+
} elseif (class_exists(Versions::class)) {
123+
$releaseNode->defaultValue(PrettyVersions::getVersion(Versions::ROOT_PACKAGE_NAME)->getPrettyVersion());
124+
}
125+
118126
$optionsChildNodes->floatNode('sample_rate')
119127
->min(0.0)
120128
->max(1.0);

src/DependencyInjection/IntegrationFilterFactory.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
class IntegrationFilterFactory
1010
{
11+
/**
12+
* @param IntegrationInterface[] $integrationsFromConfiguration
13+
*/
1114
public static function create(array $integrationsFromConfiguration): callable
1215
{
1316
return function (array $integrations) use ($integrationsFromConfiguration) {

src/DependencyInjection/SentryExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ private function passConfigurationToOptions(ContainerBuilder $container, array $
142142
$options->addMethodCall('setIntegrations', [$integrationsCallable]);
143143
}
144144

145+
/**
146+
* @param string|Reference $value
147+
* @return string|Reference
148+
*/
145149
private function valueToCallable($value)
146150
{
147151
if (is_string($value) && 0 === strpos($value, '@')) {

src/EventListener/RequestListener.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public function onKernelController(RequestListenerControllerEvent $event): void
106106

107107
/**
108108
* @param UserInterface | object | string $user
109+
* @return array<string, string>
109110
*/
110111
private function getUserData($user): array
111112
{

test/DependencyInjection/SentryExtensionTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public function testListenerPriorities(): void
8888

8989
/**
9090
* @dataProvider optionsValueProvider
91+
* @param bool|int|float|string|string[] $value
9192
*/
9293
public function testValuesArePassedToOptions(string $name, $value, string $getter = null): void
9394
{

0 commit comments

Comments
 (0)