Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
588 commits
Select commit Hold shift + click to select a range
6e7111f
Restore $resolvedBuilderClasses cache and fix UseEloquentBuilderTest
binaryfire Jan 23, 2026
e11ad7e
Update HasGlobalScopesTest to match Laravel behavior (no ScopedBy inh…
binaryfire Jan 23, 2026
be1489e
Fix Factory::appNamespace() to use container get() instead of make()
binaryfire Jan 23, 2026
09e934c
Use container get() instead of make() for singleton services
binaryfire Jan 23, 2026
d3a3ceb
Skip observer registration when no observers are declared
binaryfire Jan 23, 2026
59bfd10
Fix EventFake to implement Dispatcher contract and update Broadcaster…
binaryfire Jan 23, 2026
cb6de06
Port support helpers.php from Laravel, fix env() to use namespaced fu…
binaryfire Jan 23, 2026
47d9035
Replace Hyperf\Contract\Arrayable and Jsonable with Hypervel equivalents
binaryfire Jan 23, 2026
ae7e505
Add model class validation to ModelListener and update tests
binaryfire Jan 23, 2026
7b2b8fb
Add TmpIntegrationTestCase base class for Tmp integration tests
binaryfire Jan 23, 2026
04401de
Fix Event tests for Laravel-style halt behavior
binaryfire Jan 23, 2026
8332ea2
Add self-contained test fixtures for InteractsWithDatabaseTest
binaryfire Jan 23, 2026
3152ce2
Fix ConnectionInterface import in RefreshDatabaseTest
binaryfire Jan 23, 2026
885e4ec
Fix various test failures and port Fluent from Laravel
binaryfire Jan 23, 2026
3cb4710
Fix NestedSet compatibility with new Eloquent and Postgres
binaryfire Jan 23, 2026
1b0ae32
Remove hyperf/database-sqlite to use Hypervel's SQLiteConnector
binaryfire Jan 23, 2026
6d23c8c
Fix Queue test failures
binaryfire Jan 23, 2026
efb6fbf
Fix MigrationRepository::setSource to accept nullable string
binaryfire Jan 23, 2026
3512070
Fix Sanctum tests and use enum_value for BackedEnum support
binaryfire Jan 23, 2026
52a0980
wip
binaryfire Jan 23, 2026
a1e5d55
Fix failing Sentry test
binaryfire Jan 23, 2026
9b83d80
Allow null in Arr::get() first parameter
binaryfire Jan 23, 2026
c46ae15
Merge remote-tracking branch 'origin/main' into feature/database-impr…
binaryfire Jan 23, 2026
3bcd8a7
Exclude tests/Tmp from default test suite
binaryfire Jan 23, 2026
64018e8
Merge pull request #345 from binaryfire/port-missing-validation-rules
albertcht Jan 24, 2026
fa9f80c
Move contracts to contracts package wip
binaryfire Jan 24, 2026
850a824
Fix phpstan errors and update contract usages
binaryfire Jan 24, 2026
d6ace2a
Fix PHPStan errors
binaryfire Jan 24, 2026
f3d3659
Fix PHPStan errors
binaryfire Jan 24, 2026
57144b0
Fix PHPStan errors and update tests for database port
binaryfire Jan 24, 2026
2d2cc76
Update QueueWorkerTest for Worker EventDispatcher type change
binaryfire Jan 24, 2026
174b287
Fix PHPStan errors
binaryfire Jan 24, 2026
da137c9
Fix PHPStan errors
binaryfire Jan 24, 2026
9ce1c3a
Fix test suite hang caused by static afterSettingCallback
binaryfire Jan 24, 2026
41ca36a
Merge remote-tracking branch 'origin/main' into feature/database-impr…
binaryfire Jan 24, 2026
7a0e28d
Fix validation type errors from decoupled Arrayable and strict Str types
binaryfire Jan 24, 2026
236261a
Move Broadcasting contracts to contracts package
binaryfire Jan 24, 2026
dc354cd
Move Queue contracts to contracts package
binaryfire Jan 24, 2026
efbaca5
Move Auth contracts to contracts package
binaryfire Jan 24, 2026
17a944d
Move Bus contracts to contracts package
binaryfire Jan 24, 2026
5ea0d08
Move Cache contracts to contracts package
binaryfire Jan 25, 2026
a1b516b
Move Cookie contracts to contracts package
binaryfire Jan 25, 2026
474e5d1
Move Config contracts to contracts package
binaryfire Jan 25, 2026
69a92ce
Move Console contracts to contracts package
binaryfire Jan 25, 2026
a43c222
Move Database contracts to contracts package
binaryfire Jan 25, 2026
8c28d6e
Move Filesystem contracts to contracts package
binaryfire Jan 25, 2026
1c54475
Move Encryption contracts to contracts package
binaryfire Jan 25, 2026
628a973
Move cross-cutting exceptions to contracts package
binaryfire Jan 25, 2026
66b9a7c
Move Cache InvalidArgumentException to contracts package
binaryfire Jan 25, 2026
236c8c0
Move Router contracts to contracts package
binaryfire Jan 25, 2026
2619459
Move Session contracts to contracts package
binaryfire Jan 25, 2026
e2d48fc
Move Translation contracts to contracts package
binaryfire Jan 25, 2026
f603663
Move Validation contracts to contracts package
binaryfire Jan 25, 2026
d17a846
Move Hashing contracts to contracts package
binaryfire Jan 25, 2026
134225e
Move Foundation and Debug contracts to contracts package
binaryfire Jan 25, 2026
7040b90
Move Container, Mail, and Notifications contracts to contracts package
binaryfire Jan 25, 2026
b2c185d
Move Console Kernel contract to contracts package
binaryfire Jan 25, 2026
be5ba52
Move internal Console contracts back to console package
binaryfire Jan 25, 2026
84f8c7d
Move Event contracts to contracts package
binaryfire Jan 25, 2026
64ddf7d
Move Http Request and Response contracts to centralized contracts pac…
binaryfire Jan 25, 2026
fe73816
Move Pagination contracts to centralized contracts package
binaryfire Jan 25, 2026
06d660a
Tidy up Contracts
binaryfire Jan 25, 2026
e839977
Replace Hyperf\Stringable with Hypervel\Support\Str
binaryfire Jan 25, 2026
2dd3749
Remove hyperf/stringable dependency from package composer.json files
binaryfire Jan 25, 2026
ce7c3c2
Port Laravel's Env class and modernize support functions
binaryfire Jan 25, 2026
8cc7b06
Rename collections functions.php to Functions.php and remove guard
binaryfire Jan 25, 2026
99cb1a9
Add Json helper class and remove hyperf/codec dependency
binaryfire Jan 25, 2026
2120afd
Add enum support to auth package
binaryfire Jan 25, 2026
08ea1ad
Add enum support to broadcasting package
binaryfire Jan 25, 2026
908dc2d
Fix broadcasting test imports to use centralized contracts
binaryfire Jan 25, 2026
8996388
Add enum support to bus package
binaryfire Jan 25, 2026
d39bae1
Add enum support to cache package
binaryfire Jan 25, 2026
72a72b6
Add enum support to console scheduling
binaryfire Jan 25, 2026
fe38f88
Add enum support to cookie package
binaryfire Jan 25, 2026
1d300c8
Add enum support to event package
binaryfire Jan 25, 2026
29876f5
Add enum support to filesystem package
binaryfire Jan 25, 2026
0dc405a
Add enum support to foundation package
binaryfire Jan 25, 2026
32775ca
Simplify enum types in permission package
binaryfire Jan 25, 2026
13aa7bf
Simplify enum types in queue RateLimited middleware
binaryfire Jan 25, 2026
81106e6
Add enum support to redis package
binaryfire Jan 25, 2026
aa62063
Add enum support to router ThrottleRequests middleware
binaryfire Jan 25, 2026
06aaeac
Simplify enum types in sanctum package
binaryfire Jan 25, 2026
fcf2d3a
Add enum support to session package
binaryfire Jan 25, 2026
d1a818f
Add UnitEnum support to support package
binaryfire Jan 25, 2026
87e78d3
Add Collection and LazyCollection enum tests
binaryfire Jan 25, 2026
704e97a
Add enum support to Translator replacements
binaryfire Jan 25, 2026
88ba650
Simplify validation Rule type hints to use UnitEnum
binaryfire Jan 25, 2026
e17874a
Add UnitEnum support to Context class
binaryfire Jan 25, 2026
5a526bb
Reorganize Tmp tests into Database/Integration
binaryfire Jan 25, 2026
b7cc70e
Add SQLite in-memory connection pooling support and reorganize databa…
binaryfire Jan 25, 2026
96bef06
Add SQLite file-based pooling integration tests
binaryfire Jan 25, 2026
85bad0f
Rewrite SQLite file pooling tests with proper coroutine-based verific…
binaryfire Jan 25, 2026
8fa986e
Remove misleading clearPersistentPdos() method from listener tests
binaryfire Jan 25, 2026
bc980db
Fix pool connection management and add pooled-aware DatabaseManager m…
binaryfire Jan 25, 2026
a82a7bb
Add hypervel/pool package ported from hyperf/pool
binaryfire Jan 25, 2026
8886657
Update database package to use internal hypervel/pool package
binaryfire Jan 25, 2026
7c658f4
Fix disconnect() to use concrete Connection class instead of interface
binaryfire Jan 25, 2026
04b0c3e
Add regression tests for pool connection management fixes (DB-01 to D…
binaryfire Jan 25, 2026
027b593
Replace remaining Hyperf\Pool references with Hypervel\Pool
binaryfire Jan 25, 2026
6797629
Replace Hyperf\Paginator\ConfigProvider with Hypervel\Pagination\Conf…
binaryfire Jan 25, 2026
9d95104
Return NullDispatcher from getEventDispatcher() when events disabled
binaryfire Jan 25, 2026
57aa81f
Decouple Eloquent casts from Hyperf dependencies
binaryfire Jan 25, 2026
c8642d7
Use Hypervel\Context\ApplicationContext in SchemaProxy
binaryfire Jan 25, 2026
4610a82
Add hypervel/macroable package and remove hyperf/macroable dependency
binaryfire Jan 25, 2026
bdd1e0c
Replace Hyperf listener with Laravel-style PaginationServiceProvider
binaryfire Jan 25, 2026
0ca33af
Remove empty Pool ConfigProvider
binaryfire Jan 25, 2026
be1dc1c
Remove empty Pagination ConfigProvider
binaryfire Jan 25, 2026
5466902
Decouple support package from Hyperf dependencies
binaryfire Jan 25, 2026
7a1dac9
Fix duplicate --path option in devtool generator commands
binaryfire Jan 25, 2026
1c661bb
Merge branch '0.4' (changes already applied manually)
binaryfire Jan 26, 2026
bc2fb2d
Run CS fixer and fix PHPStan errors
binaryfire Jan 26, 2026
a309b2a
Fix CS fixer issues from CI
binaryfire Jan 26, 2026
fd1b2d7
Add PHPStan ignore for PHP 8.4 ReflectionProperty::hasHooks()
binaryfire Jan 26, 2026
327df71
Replace types/Database with Laravel's type assertions
binaryfire Jan 26, 2026
1300840
Add Collections and Pagination type assertions from Laravel
binaryfire Jan 26, 2026
14d5288
Apply code style fixes to type stubs
binaryfire Jan 26, 2026
bf38635
Add PHPUnit extension for automatic Mockery cleanup
binaryfire Jan 26, 2026
8a17062
Add PHPUnit attribute-based testing infrastructure
binaryfire Jan 26, 2026
e682ea1
Add defineEnvironment hook to InteractsWithContainer
binaryfire Jan 26, 2026
b163b93
Wire up testbench TestCase with testing feature traits
binaryfire Jan 26, 2026
37f7157
Refactor AuthenticateRequestsTest to use testbench hooks
binaryfire Jan 26, 2026
286f63d
Add ApplicationContract type hint to LogFeatureTest::defineEnvironment()
binaryfire Jan 26, 2026
bacd42d
Update Application contract import to Hypervel\Contracts namespace
binaryfire Jan 26, 2026
a53ade1
refactor: match Laravel database integration testing pattern
binaryfire Jan 26, 2026
96c5b10
refactor: replace hyperf/database with hypervel/database
binaryfire Jan 26, 2026
6841486
refactor: follow Laravel test patterns for database seeding
binaryfire Jan 26, 2026
bc6f1fb
chore: remove unused test migrations
binaryfire Jan 26, 2026
cda72c6
fix: align database workflows with Laravel patterns
binaryfire Jan 26, 2026
f057f8a
refactor: remove run() wrapper from coroutine safety tests
binaryfire Jan 26, 2026
a157f11
style: fix code style issues
binaryfire Jan 26, 2026
61be347
fix: run database tests on all pushes, not just main
binaryfire Jan 26, 2026
ec13004
refactor: remove run() wrapper from PooledConnectionStateTest
binaryfire Jan 26, 2026
12ce232
fix: use sqlite as alternate connection in usingConnection tests
binaryfire Jan 26, 2026
2e205d2
fix: move QueryBuilderTest seeding from setUp to test methods
binaryfire Jan 26, 2026
10b4fb7
Port Laravel Database tests structure and fixtures
binaryfire Jan 27, 2026
0bd22fa
Add Capsule support for database testing
binaryfire Jan 27, 2026
b10560b
Port Laravel database tests with namespace and type fixes
binaryfire Jan 27, 2026
973ada4
Port more Laravel database tests to Hypervel
binaryfire Jan 27, 2026
2aed714
Port more Laravel Eloquent BelongsToMany tests to Hypervel
binaryfire Jan 27, 2026
eef9979
Port more Laravel BelongsToMany tests to Hypervel
binaryfire Jan 27, 2026
91cdb3f
Port more Laravel BelongsToMany tests to Hypervel
binaryfire Jan 27, 2026
201817b
Add Laravel test porting guide and port more tests
binaryfire Jan 27, 2026
cba436e
Port more Laravel database tests to Hypervel
binaryfire Jan 27, 2026
56f82ed
Port DatabaseEloquentBuilderCreateOrFirstTest from Laravel
binaryfire Jan 27, 2026
a88e564
Fix null model crash in Builder::hasNamedScope()
binaryfire Jan 27, 2026
96633fe
Port DatabaseEloquentBuilderTest from Laravel
binaryfire Jan 27, 2026
48d2a1f
Add Laravel porting doc
binaryfire Jan 27, 2026
81c2ca0
Port DatabaseEloquentCollectionQueueableTest from Laravel
binaryfire Jan 27, 2026
2f03cd2
Merge branch 'feature/database-improvements' into feature/hyperf-deco…
binaryfire Jan 27, 2026
580037c
fix: restore classmap entry in autoload-dev
binaryfire Jan 27, 2026
d04202a
Port DatabaseEloquentCollectionTest from Laravel
binaryfire Jan 27, 2026
a6c6093
Port DatabaseEloquentDynamicRelationsTest from Laravel
binaryfire Jan 27, 2026
bc94860
Add Container::singleton() alias and skip Factory test
binaryfire Jan 27, 2026
535a68e
Port DatabaseEloquentGlobalScopesTest from Laravel
binaryfire Jan 27, 2026
84e8ba4
Port HasMany and HasManyThrough createOrFirst tests from Laravel
binaryfire Jan 27, 2026
dec468b
Fix JoinClause constructor type and port HasManyThrough/HasOneOfMany …
binaryfire Jan 27, 2026
b299ded
Port HasOne and HasOneThrough integration tests from Laravel
binaryfire Jan 27, 2026
00095d7
Port DatabaseEloquentHasOneThroughOfManyTest from Laravel
binaryfire Jan 27, 2026
9af48b3
Port DatabaseEloquentIntegrationTest and fix type bugs exposed by tests
binaryfire Jan 27, 2026
d8b1986
Port InverseRelation tests from Laravel
binaryfire Jan 27, 2026
d955a29
Add conditionable and reflection packages matching Laravel structure
binaryfire Jan 27, 2026
e43d2d8
Fix namespaces to match Laravel structure
binaryfire Jan 27, 2026
cb4fe8c
Fix PSR-4 autoload mapping for conditionable and reflection packages
binaryfire Jan 27, 2026
e56b727
Port more Eloquent tests from Laravel (partial)
binaryfire Jan 27, 2026
03f72a7
Fix setAttribute() to accept int keys for numeric array storage
binaryfire Jan 27, 2026
ff33dbc
Database tests wip
binaryfire Jan 27, 2026
2e342c1
Refactor HasEvents to use Laravel-style string events
binaryfire Jan 27, 2026
d3fe993
Refactor ModelInspector to use event dispatcher instead of ModelListener
binaryfire Jan 27, 2026
ee2f76e
Add missing @throws annotation to getObservers in ModelInspector
binaryfire Jan 27, 2026
8f8d8ca
Add missing @throws annotations to observe() and registerObserver()
binaryfire Jan 27, 2026
665460f
Refactor Telescope ModelWatcher to use string-based model events
binaryfire Jan 27, 2026
6c02ef3
Complete model events refactor to Laravel-style string events
binaryfire Jan 27, 2026
b105d1b
Fix Telescope watchers for string-based model events
binaryfire Jan 27, 2026
d3f9fd8
EloquentModelTest
binaryfire Jan 27, 2026
a244d85
Port DatabaseEloquentMorphOneOfManyTest and DatabaseEloquentMorphTest
binaryfire Jan 27, 2026
df1a53f
Port DatabaseEloquentMorphToManyTest and DatabaseEloquentMorphToTest
binaryfire Jan 27, 2026
6ca13d3
Port DatabaseEloquentPivotTest and DatabaseEloquentPolymorphicIntegra…
binaryfire Jan 27, 2026
df26bb5
Port DatabaseEloquentPolymorphicRelationsIntegrationTest and Database…
binaryfire Jan 28, 2026
aba1547
Port DatabaseEloquentRelationTest
binaryfire Jan 28, 2026
c712d22
EloquentResouceCollectinoTest wip
binaryfire Jan 28, 2026
dce3391
Port HTTP Resources from Laravel with JsonResponse wrapper
binaryfire Jan 28, 2026
85a6ca7
Fix Resource tests and Kernel return type for JsonResponse compatibility
binaryfire Jan 28, 2026
0266759
Fix EventDispatcher to match Laravel's listener callback semantics
binaryfire Jan 28, 2026
8c8690a
Fix wildcard listener semantics in EventDispatcher
binaryfire Jan 28, 2026
710be33
Port DatabaseEloquentResourceCollectionTest and DatabaseEloquentResou…
binaryfire Jan 28, 2026
25f2b9e
Port DatabaseEloquentSoftDeletesIntegrationTest
binaryfire Jan 28, 2026
02c83ab
Port DatabaseEloquentTimestampsTest
binaryfire Jan 28, 2026
671d4f6
Port Database Laravel tests and fix type issues
binaryfire Jan 28, 2026
ea98122
Port Database Laravel tests, move command tests to Todo
binaryfire Jan 28, 2026
46c7509
Port MySQL database tests
binaryfire Jan 28, 2026
f2eb4f9
Port MySQL schema tests
binaryfire Jan 28, 2026
d2eda91
Port Postgres database tests
binaryfire Jan 28, 2026
f2290b0
Port more Database Laravel tests
binaryfire Jan 28, 2026
0fd8454
Port DatabaseSQLiteBuilderTest to Hypervel
binaryfire Jan 28, 2026
a2f1cca
Port DatabaseSQLiteSchemaGrammarTest to Hypervel
binaryfire Jan 28, 2026
8806b52
Port DatabaseSqliteSchemaStateTest to Hypervel
binaryfire Jan 28, 2026
5c85055
Port DatabaseTransactionsManagerTest to Hypervel
binaryfire Jan 28, 2026
282ffd4
Port DatabaseTransactionsTest to Hypervel
binaryfire Jan 28, 2026
8cc86c1
Port EloquentHasOneOrManyDeprecationTest to Hypervel
binaryfire Jan 28, 2026
a1e833b
Fix increment/decrement to support custom caster types
binaryfire Jan 28, 2026
811bb88
Port QueryDurationThresholdTest to Hypervel
binaryfire Jan 28, 2026
5fa8e25
Port TableGuesserTest to Hypervel
binaryfire Jan 28, 2026
4ab3861
Port DatabaseQueryBuilderTest to Hypervel (partial)
binaryfire Jan 28, 2026
225a7ca
Remove all SqlServer tests from DatabaseQueryBuilderTest
binaryfire Jan 28, 2026
9fb1c8d
Fix Query Builder type issues exposed by ported tests
binaryfire Jan 28, 2026
a72cc04
Fix more Query Builder type issues and add missing features
binaryfire Jan 28, 2026
a38e14b
Port remaining Database tests to Hypervel namespace
binaryfire Jan 28, 2026
ae9e101
Rename duplicate test model classes to avoid redeclaration errors
binaryfire Jan 28, 2026
739a60a
Add castable attribute contracts and cleanup
binaryfire Jan 28, 2026
b2a5a98
Rename remaining duplicate test model classes and fix tearDown
binaryfire Jan 28, 2026
54cc45e
Move in-memory SQLite PDO persistence from global listener to pool
binaryfire Jan 28, 2026
4798a63
Improve SQLite shared PDO naming and add comprehensive tests
binaryfire Jan 28, 2026
3acc952
Improve DbPool docblocks: clarify Capsule isolation, reduce verbosity
binaryfire Jan 28, 2026
39fb1b5
Fix Faker binding capturing stale test instance reference
binaryfire Jan 28, 2026
6450843
Fix RequestContext pollution in FoundationExceptionHandlerTest
binaryfire Jan 28, 2026
f360075
Clear Context after each coroutine test for isolation
binaryfire Jan 28, 2026
5059700
Fix tests relying on leaked unguarded state
binaryfire Jan 28, 2026
141c251
Replace Context::destroyAll() with targeted cleanup
binaryfire Jan 28, 2026
6cd0190
Fix PHPStan errors with targeted ignores
binaryfire Jan 28, 2026
ccfb53f
Apply code style fixes from Laravel database test port
binaryfire Jan 28, 2026
6a0ccf4
Add PHPStan ignores for PHP 8.4 lazy object methods
binaryfire Jan 28, 2026
368977c
Fix type assertion for Query\Builder::find() return type
binaryfire Jan 28, 2026
45e5ce6
Improve static analysis workflow and remove PHP 8.4 ignores
binaryfire Jan 28, 2026
147c11c
Add gmp extension to CI and fix RequiresPhpExtension import
binaryfire Jan 28, 2026
0551365
Suppress expected log output in InMemorySqliteSharedPdoTest
binaryfire Jan 28, 2026
89d5952
Fix Collection return types for afterQuery support
binaryfire Jan 29, 2026
a961f85
Port WithMigration attribute from Orchestra Testbench
binaryfire Jan 29, 2026
a6bd12d
Copy Laravel database integration tests for porting
binaryfire Jan 29, 2026
2def83f
Move cache-related tests to Todo directory
binaryfire Jan 29, 2026
7f71c7f
Remove forced read/write connection syntax (::read/::write)
binaryfire Jan 29, 2026
e241489
Reset cached database connections between tests to prevent pollution
binaryfire Jan 29, 2026
6809bab
Fix PHPStan errors and apply CS-fixer formatting
binaryfire Jan 29, 2026
d8363bd
Port DatabaseCustomCastsTest and DatabaseEloquentBroadcastingTest
binaryfire Jan 29, 2026
0807537
Port DatabaseEloquentModelAttributeCastingTest and DatabaseEloquentMo…
binaryfire Jan 29, 2026
43d2275
Port DatabaseTransactionsTest, EloquentAggregateTest, EloquentBelongs…
binaryfire Jan 29, 2026
dc3ec8c
Port EloquentBelongsToTest, EloquentCollectionFreshTest, EloquentColl…
binaryfire Jan 29, 2026
af213dd
Port EloquentCursorPaginateTest and EloquentCustomPivotCastTest
binaryfire Jan 29, 2026
ee942aa
Port EloquentDeleteTest and EloquentHasManyTest
binaryfire Jan 29, 2026
e5a62bd
Port EloquentEagerLoadingLimitTest and EloquentHasManyThroughTest
binaryfire Jan 29, 2026
4f13963
Port EloquentHasOneIsTest and EloquentHasOneOfManyTest
binaryfire Jan 29, 2026
bfffa6f
Port EloquentLazyEagerLoadingTest and EloquentMassPrunableTest
binaryfire Jan 29, 2026
3a224bd
Port events package from Laravel (WIP)
binaryfire Jan 29, 2026
41e21c4
Port EventServiceProvider, Functions, InvokeQueuedClosure
binaryfire Jan 29, 2026
0e185b5
Port NullDispatcher and QueuedClosure
binaryfire Jan 29, 2026
8728567
Add events package composer.json, LICENSE.md, README.md and register …
binaryfire Jan 29, 2026
6ee7d6f
Port Events contracts (Dispatcher, ShouldDispatchAfterCommit, ShouldH…
binaryfire Jan 29, 2026
ddb89f5
Add onGroup and withDeduplicator to Queueable trait and PendingDispatch
binaryfire Jan 29, 2026
4e39739
Fix phpstan errors in events package
binaryfire Jan 29, 2026
573d729
Apply php-cs-fixer and add Events to phpunit exclusions
binaryfire Jan 29, 2026
8cec3bf
Add Swoole-specific optimizations to events Dispatcher
binaryfire Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Integration tests environment example
# Copy this file to .env and configure to run integration tests locally.
#
# Set DB_CONNECTION to the database you want to test against.
# Tests in tests/Integration/Database will run against this connection.

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testing
DB_USERNAME=root
DB_PASSWORD=
287 changes: 287 additions & 0 deletions .github/workflows/databases.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,287 @@
name: databases

on:
push:
pull_request:

jobs:
mysql_8:
runs-on: ubuntu-latest
timeout-minutes: 5

services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: testing
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping -h localhost"
--health-interval 10s
--health-timeout 5s
--health-retries 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: MySQL 8.0

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_DATABASE: testing
DB_USERNAME: root
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Integration/Database

mysql_9:
runs-on: ubuntu-latest
timeout-minutes: 5

services:
mysql:
image: mysql:9.0
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: testing
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping -h localhost"
--health-interval 10s
--health-timeout 5s
--health-retries 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: MySQL 9.0

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_DATABASE: testing
DB_USERNAME: root
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Integration/Database

mariadb_10:
runs-on: ubuntu-latest
timeout-minutes: 5

services:
mariadb:
image: mariadb:10
env:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: testing
ports:
- 3306:3306
options: >-
--health-cmd "healthcheck.sh --connect --innodb_initialized"
--health-interval 10s
--health-timeout 5s
--health-retries 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: MariaDB 10

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: mariadb
DB_HOST: mariadb
DB_PORT: 3306
DB_DATABASE: testing
DB_USERNAME: root
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Integration/Database

pgsql_17:
runs-on: ubuntu-latest
timeout-minutes: 5

services:
postgres:
image: postgres:17
env:
POSTGRES_PASSWORD: password
POSTGRES_DB: testing
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: PostgreSQL 17

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: testing
DB_USERNAME: postgres
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Integration/Database

pgsql_18:
runs-on: ubuntu-latest
timeout-minutes: 5

services:
postgres:
image: postgres:18
env:
POSTGRES_PASSWORD: password
POSTGRES_DB: testing
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: PostgreSQL 18

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: testing
DB_USERNAME: postgres
DB_PASSWORD: password
run: vendor/bin/phpunit tests/Integration/Database

sqlite:
runs-on: ubuntu-latest
timeout-minutes: 5

container:
image: phpswoole/swoole:6.0.2-php8.4

strategy:
fail-fast: true

name: SQLite

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute integration tests
env:
DB_CONNECTION: sqlite
run: vendor/bin/phpunit tests/Integration/Database/Sqlite
33 changes: 18 additions & 15 deletions .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,36 @@ on:
pull_request:

jobs:
linux_tests:
types:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')"

strategy:
fail-fast: true
matrix:
include:
- php: "8.2"
swoole: "5.1.6"
- php: "8.3"
swoole: "5.1.6"
- php: "8.4"
swoole: "6.0.2"
- name: Source Code
config: phpstan.neon.dist
- name: Types
config: phpstan.types.neon.dist

name: PHP ${{ matrix.php }} (swoole-${{ matrix.swoole }})
name: ${{ matrix.name }}

container:
image: phpswoole/swoole:${{ matrix.swoole }}-php${{ matrix.php }}
image: phpswoole/swoole:6.0.2-php8.4

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-8.4-${{ hashFiles('composer.lock') }}
restore-keys: composer-8.4-

- name: Install dependencies
run: |
COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o
run: COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist --no-interaction --no-progress

- name: Execute static analysis
run: vendor/bin/phpstan --configuration="phpstan.neon.dist" --memory-limit=-1
- name: Execute type checking
run: vendor/bin/phpstan --configuration="${{ matrix.config }}" --memory-limit=-1 --no-progress
14 changes: 13 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,19 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Install PHP extensions
run: |
apt-get update && apt-get install -y libgmp-dev
docker-php-ext-install gmp

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: /root/.composer/cache
key: composer-${{ matrix.php }}-${{ hashFiles('composer.lock') }}
restore-keys: composer-${{ matrix.php }}-

- name: Install dependencies
run: |
Expand Down
Loading