From cdcf1e0d22b71dc72f3a15feb961e428800d9638 Mon Sep 17 00:00:00 2001 From: Titouan Galopin Date: Thu, 16 Jan 2025 09:33:07 +0100 Subject: [PATCH 1/7] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 96477b4..0195e87 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ } ], "require": { - "league/glide": "^2.0", + "league/glide": "^2.0|^3.0", "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0|^6.0|^7.0" }, "require-dev": { From 70a79017e670bf7de5f273bea3f93d24cdf43e15 Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:19:22 +0200 Subject: [PATCH 2/7] Update test-suite and dependencies for Glide 3 --- .github/workflows/unit-tests.yaml | 10 ++++++--- composer.json | 3 ++- .../Responses/SymfonyResponseFactoryTest.php | 21 +++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 9b82195..d07cb17 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -10,15 +10,19 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] + php: [8.1, 8.2, 8.3, 8.4] + symfony: [^5, ^6, ^7] + glide: [^2, ^3] steps: - name: Checkout uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: - php-version: ${{ matrix.php-versions }} + php-version: ${{ matrix.php }} - name: Install dependencies - run: composer install --no-interaction --no-ansi + run: | + composer require "symfony/http-foundation:${{ matrix.symfony }}" "league/glide:${{ matrix.glide }}" --no-interaction --no-update + composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest --with-all-dependencies - name: PHPUnit run: php vendor/bin/phpunit diff --git a/composer.json b/composer.json index 0195e87..d517a24 100644 --- a/composer.json +++ b/composer.json @@ -11,8 +11,9 @@ } ], "require": { + "php": "^8.1", "league/glide": "^2.0|^3.0", - "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0|^6.0|^7.0" + "symfony/http-foundation": "^5|^6|^7" }, "require-dev": { "mockery/mockery": "^1.3.3", diff --git a/tests/Responses/SymfonyResponseFactoryTest.php b/tests/Responses/SymfonyResponseFactoryTest.php index 6250077..3363f7a 100644 --- a/tests/Responses/SymfonyResponseFactoryTest.php +++ b/tests/Responses/SymfonyResponseFactoryTest.php @@ -5,6 +5,7 @@ use League\Glide\Responses\SymfonyResponseFactory; use Mockery; use PHPUnit\Framework\TestCase; +use Symfony\Component\HttpFoundation\Request; class SymfonyResponseFactoryTest extends TestCase { @@ -38,4 +39,24 @@ public function testCreate(): void self::assertStringContainsString(gmdate('D, d M Y H:i', strtotime('+1 years')), $response->headers->get('Expires')); self::assertEquals('max-age=31536000, public', $response->headers->get('Cache-Control')); } + + public function testCreateWithRequest(): void + { + $cache = Mockery::mock('League\Flysystem\FilesystemOperator', function ($mock) { + $mock->shouldReceive('mimeType')->andReturn('image/jpeg')->once(); + $mock->shouldReceive('fileSize')->andReturn(0)->once(); + $mock->shouldReceive('readStream'); + $mock->shouldReceive('lastModified')->andReturn(strtotime('2025-01-01')); + }); + + $factory = new SymfonyResponseFactory(new Request()); + $response = $factory->create($cache, ''); + + self::assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response); + self::assertEquals('image/jpeg', $response->headers->get('Content-Type')); + self::assertEquals('0', $response->headers->get('Content-Length')); + self::assertStringContainsString(gmdate('D, d M Y H:i', strtotime('+1 years')), $response->headers->get('Expires')); + self::assertEquals('max-age=31536000, public', $response->headers->get('Cache-Control')); + self::assertEquals('Wed, 01 Jan 2025 00:00:00 GMT', $response->headers->get('Last-Modified')); + } } From 4c968c7b883840fbc0e21473e1a3aeb3923cb15f Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:25:01 +0200 Subject: [PATCH 3/7] Add prefer dependency --- .github/workflows/unit-tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index d07cb17..1498566 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -13,6 +13,7 @@ jobs: php: [8.1, 8.2, 8.3, 8.4] symfony: [^5, ^6, ^7] glide: [^2, ^3] + dependency-version: [prefer-lowest, prefer-stable] steps: - name: Checkout uses: actions/checkout@v2 From d7ee249a1dbfbde352d666e60ca4a1d5fdf3dd44 Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:31:43 +0200 Subject: [PATCH 4/7] Update phpunit --- composer.json | 2 +- phpunit.xml.dist | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index d517a24..375618f 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ }, "require-dev": { "mockery/mockery": "^1.3.3", - "phpunit/phpunit": "^8.5|^9.4" + "phpunit/phpunit": "^10.5" }, "autoload": { "psr-4": { diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 2c7e087..c915551 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -5,16 +5,9 @@ tests/ - - + + src/ - - - - - - - - - + + \ No newline at end of file From 80a7a824c08f3ee2329a11f335114123d2b5b5ca Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:39:45 +0200 Subject: [PATCH 5/7] Exclude Symfony 7 on php8.1 --- .github/workflows/unit-tests.yaml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 1498566..c161682 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -10,20 +10,23 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php: [8.1, 8.2, 8.3, 8.4] - symfony: [^5, ^6, ^7] - glide: [^2, ^3] - dependency-version: [prefer-lowest, prefer-stable] + php-version: [8.1, 8.2, 8.3, 8.4] + symfony-version: [^5, ^6, ^7] + glide-version: [^2, ^3] + dependencies: [lowest, stable] + exclude: + - php: 8.1 + symfony: ^7 steps: - name: Checkout uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: - php-version: ${{ matrix.php }} + php-version: ${{ matrix.php-version }} - name: Install dependencies run: | - composer require "symfony/http-foundation:${{ matrix.symfony }}" "league/glide:${{ matrix.glide }}" --no-interaction --no-update - composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest --with-all-dependencies + composer require "symfony/http-foundation:${{ matrix.symfony-version }}" "league/glide:${{ matrix.glide-version }}" --no-interaction --no-update + composer update --prefer-${{ matrix.dependencies }} --prefer-dist --no-interaction --no-suggest --with-all-dependencies - name: PHPUnit run: php vendor/bin/phpunit From 2ea6d272db4604712f00ef3264c8da93757c5c6c Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:41:30 +0200 Subject: [PATCH 6/7] Fix matrix --- .github/workflows/unit-tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index c161682..f629a63 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -15,8 +15,8 @@ jobs: glide-version: [^2, ^3] dependencies: [lowest, stable] exclude: - - php: 8.1 - symfony: ^7 + - php-version: 8.1 + symfony-version: ^7 steps: - name: Checkout uses: actions/checkout@v2 From 291d6a35909a8deb74b73e4fe53326804c72573c Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Mon, 19 May 2025 14:45:59 +0200 Subject: [PATCH 7/7] Fix nullable type --- src/Responses/SymfonyResponseFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Responses/SymfonyResponseFactory.php b/src/Responses/SymfonyResponseFactory.php index ca4c1c5..23c5c95 100644 --- a/src/Responses/SymfonyResponseFactory.php +++ b/src/Responses/SymfonyResponseFactory.php @@ -18,7 +18,7 @@ class SymfonyResponseFactory implements ResponseFactoryInterface * Create SymfonyResponseFactory instance. * @param Request|null $request Request object to check "is not modified". */ - public function __construct(Request $request = null) + public function __construct(?Request $request = null) { $this->request = $request; }