From 42406c9b9317294cb54a177f4cec59587f66bdd8 Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Wed, 22 Mar 2023 22:38:16 -0500 Subject: [PATCH 1/6] Add .devcontainer --- .devcontainer/devcontainer.json | 23 +++++++++++++++++++++ .devcontainer/docker-compose.yml | 32 +++++++++++++++++++++++++++++ .devcontainer/docker/app/Dockerfile | 4 ++++ 3 files changed, 59 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml create mode 100644 .devcontainer/docker/app/Dockerfile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..227bb36 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,23 @@ +{ + "name": "codespaces-laravel", + "dockerComposeFile": ["docker-compose.yml"], + "workspaceFolder": "/workspace", + "service": "app", + "shutdownAction": "stopCompose", + "extensions": [ + "editorconfig.editorconfig", + "ryannaddy.laravel-artisan", + "amiralizadeh9480.laravel-extra-intellisense", + "stef-k.laravel-goto-controller", + "codingyu.laravel-goto-view", + "mikestead.dotenv", + "eg2.tslint", + "christian-kohler.path-intellisense", + "esbenp.prettier-vscode", + "CoenraadS.bracket-pair-colorizer" + ], + "settings": { + "#terminal.integrated.shell.linux": "/bin/bash" + }, + "postCreateCommand": "cp .env.example .env && composer install", +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..94fbb18 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3" +services: + app: + build: ./docker/app + volumes: + - ../:/workspace:cached + ports: + - 80:80 + tty: true + environment: + APP_ENV: local + PHP_EXTENSION_XDEBUG: 1 + PHP_EXTENSION_PGSQL: 1 + PHP_EXTENSION_PDO_PGSQL: 1 + APACHE_DOCUMENT_ROOT: /workspace/public + db: + image: postgres:13 + restart: unless-stopped + ports: + - 5432:5432 + environment: + POSTGRES_DB: laravel + POSTGRES_USER: laravel + POSTGRES_PASSWORD: laravel + redis: + image: redis:6-alpine + ports: + - 6379:6379 + mailhog: + image: mailhog/mailhog + ports: + - 8025:8025 diff --git a/.devcontainer/docker/app/Dockerfile b/.devcontainer/docker/app/Dockerfile new file mode 100644 index 0000000..ee3c2e0 --- /dev/null +++ b/.devcontainer/docker/app/Dockerfile @@ -0,0 +1,4 @@ +ARG PHP_EXTENSIONS="mysqli pgsql pdo_mysql pdo_pgsql" + +FROM thecodingmachine/php:8.1-v4-apache-node12 +WORKDIR /workspace From b162735f5439864b4a52dd4d12f58308aca81455 Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Thu, 23 Mar 2023 04:02:34 +0000 Subject: [PATCH 2/6] Use function --- src/Serializers/Y.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Serializers/Y.php b/src/Serializers/Y.php index 44a99ff..370bb65 100644 --- a/src/Serializers/Y.php +++ b/src/Serializers/Y.php @@ -40,7 +40,7 @@ public static function decode(string $data): string public static function serialize($data): string { SerializableClosure::setSecretKey(config('app.key')); - return self::encode(serialize(new SerializableClosure(static fn () => $data))); + return self::encode(serialize(new SerializableClosure(function () { return $data; }))); } public static function unserialize(string $data) From 219d28f67a2a3e41d8a4e4d77cb0553014283cad Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Thu, 23 Mar 2023 05:14:41 +0000 Subject: [PATCH 3/6] Serialize exception as array --- src/Serializers/Y.php | 12 +++++++++++- tests/Unit/Serializers/SerializeTest.php | 13 ++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Serializers/Y.php b/src/Serializers/Y.php index 370bb65..4241b91 100644 --- a/src/Serializers/Y.php +++ b/src/Serializers/Y.php @@ -5,6 +5,7 @@ namespace Workflow\Serializers; use Laravel\SerializableClosure\SerializableClosure; +use Throwable; final class Y implements SerializerInterface { @@ -40,7 +41,16 @@ public static function decode(string $data): string public static function serialize($data): string { SerializableClosure::setSecretKey(config('app.key')); - return self::encode(serialize(new SerializableClosure(function () { return $data; }))); + if ($data instanceof Throwable) { + $data = [ + 'class' => get_class($data), + 'message' => $data->getMessage(), + 'code' => $data->getCode(), + 'line' => $data->getLine(), + 'trace' => collect($data->getTrace())->filter(fn ($trace) => $trace instanceof Closure)->toArray(), + ]; + } + return self::encode(serialize(new SerializableClosure(static fn () => $data))); } public static function unserialize(string $data) diff --git a/tests/Unit/Serializers/SerializeTest.php b/tests/Unit/Serializers/SerializeTest.php index c7d13bf..e604dc7 100644 --- a/tests/Unit/Serializers/SerializeTest.php +++ b/tests/Unit/Serializers/SerializeTest.php @@ -6,6 +6,7 @@ use Tests\Fixtures\TestEnum; use Tests\TestCase; +use Throwable; use Workflow\Serializers\Y; final class SerializeTest extends TestCase @@ -17,7 +18,17 @@ public function testSerialize($data): void { $unserialized = Y::unserialize(Y::serialize($data)); if (is_object($data)) { - $this->assertEqualsCanonicalizing($data, $unserialized); + if ($data instanceof Throwable) { + $this->assertEquals([ + 'class' => get_class($data), + 'message' => $data->getMessage(), + 'code' => $data->getCode(), + 'line' => $data->getLine(), + 'trace' => collect($data->getTrace())->filter(fn ($trace) => $trace instanceof Closure)->toArray(), + ], $unserialized); + } else { + $this->assertEqualsCanonicalizing($data, $unserialized); + } } else { $this->assertSame($data, $unserialized); } From 5e834d32ff485c2f565fae1e73337e4fb0bb18ed Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Thu, 23 Mar 2023 05:25:15 +0000 Subject: [PATCH 4/6] ECS --- src/Serializers/Y.php | 4 +++- tests/Unit/Serializers/SerializeTest.php | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Serializers/Y.php b/src/Serializers/Y.php index 4241b91..876be2f 100644 --- a/src/Serializers/Y.php +++ b/src/Serializers/Y.php @@ -47,7 +47,9 @@ public static function serialize($data): string 'message' => $data->getMessage(), 'code' => $data->getCode(), 'line' => $data->getLine(), - 'trace' => collect($data->getTrace())->filter(fn ($trace) => $trace instanceof Closure)->toArray(), + 'trace' => collect($data->getTrace()) + ->filter(static fn ($trace) => $trace instanceof Closure) + ->toArray(), ]; } return self::encode(serialize(new SerializableClosure(static fn () => $data))); diff --git a/tests/Unit/Serializers/SerializeTest.php b/tests/Unit/Serializers/SerializeTest.php index e604dc7..3ee7e9f 100644 --- a/tests/Unit/Serializers/SerializeTest.php +++ b/tests/Unit/Serializers/SerializeTest.php @@ -24,7 +24,9 @@ public function testSerialize($data): void 'message' => $data->getMessage(), 'code' => $data->getCode(), 'line' => $data->getLine(), - 'trace' => collect($data->getTrace())->filter(fn ($trace) => $trace instanceof Closure)->toArray(), + 'trace' => collect($data->getTrace()) + ->filter(static fn ($trace) => $trace instanceof Closure) + ->toArray(), ], $unserialized); } else { $this->assertEqualsCanonicalizing($data, $unserialized); From dbfdd45cb7444f9ba0e875815942008cb8ebb9f3 Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Thu, 23 Mar 2023 05:28:54 +0000 Subject: [PATCH 5/6] PHPStan --- src/Serializers/Y.php | 1 + tests/Unit/Serializers/SerializeTest.php | 1 + 2 files changed, 2 insertions(+) diff --git a/src/Serializers/Y.php b/src/Serializers/Y.php index 876be2f..791d368 100644 --- a/src/Serializers/Y.php +++ b/src/Serializers/Y.php @@ -4,6 +4,7 @@ namespace Workflow\Serializers; +use Closure; use Laravel\SerializableClosure\SerializableClosure; use Throwable; diff --git a/tests/Unit/Serializers/SerializeTest.php b/tests/Unit/Serializers/SerializeTest.php index 3ee7e9f..120a274 100644 --- a/tests/Unit/Serializers/SerializeTest.php +++ b/tests/Unit/Serializers/SerializeTest.php @@ -4,6 +4,7 @@ namespace Tests\Unit\Serializers; +use Closure; use Tests\Fixtures\TestEnum; use Tests\TestCase; use Throwable; From 31fe825cf25da14703267692ebc50e13d7f8bd0f Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Thu, 23 Mar 2023 05:34:30 +0000 Subject: [PATCH 6/6] Fix test --- tests/Feature/ExceptionWorkflowTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Feature/ExceptionWorkflowTest.php b/tests/Feature/ExceptionWorkflowTest.php index a771ef6..482f939 100644 --- a/tests/Feature/ExceptionWorkflowTest.php +++ b/tests/Feature/ExceptionWorkflowTest.php @@ -23,7 +23,7 @@ public function testRetry(): void $this->assertSame(WorkflowCompletedStatus::class, $workflow->status()); $this->assertSame('workflow_activity_other', $workflow->output()); if ($workflow->exceptions()->first()) { - $this->assertSame('failed', Y::unserialize($workflow->exceptions()->first()->exception)->getMessage()); + $this->assertSame('failed', Y::unserialize($workflow->exceptions()->first()->exception)['message']); } } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy