Skip to content

Commit 1693a75

Browse files
committed
ref: use composer to get installed modules
1 parent 5780d2a commit 1693a75

3 files changed

Lines changed: 37 additions & 26 deletions

File tree

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"ext-mbstring": "*",
2828
"ext-curl": "*",
2929
"guzzlehttp/psr7": "^1.8.4|^2.1.1",
30-
"jean85/pretty-package-versions": "^1.5|^2.0.4",
3130
"psr/log": "^1.0|^2.0|^3.0",
3231
"symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0"
3332
},

src/Integration/ModulesIntegration.php

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
namespace Sentry\Integration;
66

77
use Composer\InstalledVersions;
8-
use Jean85\PrettyVersions;
9-
use PackageVersions\Versions;
108
use Sentry\Event;
119
use Sentry\SentrySdk;
1210
use Sentry\State\Scope;
@@ -46,33 +44,14 @@ public function setupOnce(): void
4644
private static function getComposerPackages(): array
4745
{
4846
if (empty(self::$packages)) {
49-
foreach (self::getInstalledPackages() as $package) {
50-
try {
51-
self::$packages[$package] = PrettyVersions::getVersion($package)->getPrettyVersion();
52-
} catch (\Throwable $exception) {
53-
continue;
47+
foreach (InstalledVersions::getInstalledPackages() as $package) {
48+
$version = InstalledVersions::getPrettyVersion($package);
49+
if ($version !== null) {
50+
self::$packages[$package] = $version;
5451
}
5552
}
5653
}
5754

5855
return self::$packages;
5956
}
60-
61-
/**
62-
* @return string[]
63-
*/
64-
private static function getInstalledPackages(): array
65-
{
66-
if (class_exists(InstalledVersions::class)) {
67-
return InstalledVersions::getInstalledPackages();
68-
}
69-
70-
if (class_exists(Versions::class)) {
71-
// BC layer for Composer 1, using a transient dependency
72-
return array_keys(Versions::VERSIONS);
73-
}
74-
75-
// this should not happen
76-
return ['sentry/sentry'];
77-
}
7857
}

tests/Integration/ModulesIntegrationTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
use Sentry\Integration\ModulesIntegration;
1212
use Sentry\SentrySdk;
1313
use Sentry\State\Scope;
14+
use Sentry\ClientBuilder;
15+
use Sentry\Transport\Result;
16+
use Sentry\Transport\ResultStatus;
17+
use Sentry\Transport\TransportInterface;
1418

1519
use function Sentry\withScope;
1620

@@ -57,4 +61,33 @@ public static function invokeDataProvider(): \Generator
5761
false,
5862
];
5963
}
64+
65+
public function testModuleIntegration(): void
66+
{
67+
/** @var TransportInterface&MockObject $transport */
68+
$transport = $this->createMock(TransportInterface::class);
69+
$transport->expects($this->once())
70+
->method('send')
71+
->with($this->callback(function (Event $event): bool {
72+
$modules = $event->getModules();
73+
74+
$this->assertIsArray($modules);
75+
$this->assertNotEmpty($modules);
76+
$this->assertArrayHasKey('psr/log', $modules);
77+
$this->assertMatchesRegularExpression("/^\d+\.\d+\.\d+$/", $modules['psr/log']);
78+
79+
return true;
80+
}))
81+
->willReturnCallback(static function (Event $event): Result {
82+
return new Result(ResultStatus::success(), $event);
83+
});
84+
85+
$client = ClientBuilder::create()
86+
->setTransport($transport)
87+
->getClient();
88+
89+
SentrySdk::getCurrentHub()->bindClient($client);
90+
91+
$client->captureEvent(Event::createEvent(), null, new Scope());
92+
}
6093
}

0 commit comments

Comments
 (0)