From 915ac4bb25948651622dfe23ac6026f1ee9d49f6 Mon Sep 17 00:00:00 2001 From: Andrey Helldar Date: Sun, 15 Feb 2026 14:12:41 +0300 Subject: [PATCH] Improve icon matching logic with labeled loop and extend tests for Symfony polyfill --- src/utils/icons.ts | 5 ++++- ...er-symfony.json => composer-symfony-framework.json} | 0 tests/fixtures/packages/composer-symfony-polyfill.json | 8 ++++++++ tests/unit/icons.test.ts | 10 ++++++++-- 4 files changed, 20 insertions(+), 3 deletions(-) rename tests/fixtures/packages/{composer-symfony.json => composer-symfony-framework.json} (100%) create mode 100644 tests/fixtures/packages/composer-symfony-polyfill.json diff --git a/src/utils/icons.ts b/src/utils/icons.ts index f5f7fd0..1b7f97c 100644 --- a/src/utils/icons.ts +++ b/src/utils/icons.ts @@ -24,6 +24,7 @@ const find = ( ): string | undefined => { const names: string[] = Object.keys(dependencies); + outer: for (const name of names) { for (const icon of icons) { if (! name.includes(icon.query)) { @@ -36,9 +37,11 @@ const find = ( for (const exclude of icon.exclude) { if (name.includes(exclude)) { - return icon.icon; + break outer; } } + + return icon.icon; } } diff --git a/tests/fixtures/packages/composer-symfony.json b/tests/fixtures/packages/composer-symfony-framework.json similarity index 100% rename from tests/fixtures/packages/composer-symfony.json rename to tests/fixtures/packages/composer-symfony-framework.json diff --git a/tests/fixtures/packages/composer-symfony-polyfill.json b/tests/fixtures/packages/composer-symfony-polyfill.json new file mode 100644 index 0000000..ebd324f --- /dev/null +++ b/tests/fixtures/packages/composer-symfony-polyfill.json @@ -0,0 +1,8 @@ +{ + "name": "dragon-code/any", + "description": "Performing any actions during the deployment process", + "require": { + "php": "^8.5", + "symfony/polyfill-php85": "^1.33" + } +} diff --git a/tests/unit/icons.test.ts b/tests/unit/icons.test.ts index d652651..4df6a6f 100644 --- a/tests/unit/icons.test.ts +++ b/tests/unit/icons.test.ts @@ -18,12 +18,18 @@ test("composer illuminate", () => { expect(detectIcon(undefined, data)).toBe(phpIcons[1].icon); }); -test("composer symfony", () => { - const data = getPackage("tests/fixtures/packages/composer-symfony.json"); +test("composer symfony framework", () => { + const data = getPackage("tests/fixtures/packages/composer-symfony-framework.json"); expect(detectIcon(undefined, data)).toBe(phpIcons[2].icon); }); +test("composer symfony polyfill", () => { + const data = getPackage("tests/fixtures/packages/composer-symfony-polyfill.json"); + + expect(detectIcon(undefined, data)).toBe(defaultPhpIcon); +}); + test("composer default", () => { const data = getPackage("tests/fixtures/packages/composer-default.json");