Skip to content

Commit 0b685b2

Browse files
committed
docs(readme): add CI test matrix and version-aware test details
1 parent ccd3cc3 commit 0b685b2

File tree

1 file changed

+41
-21
lines changed

1 file changed

+41
-21
lines changed

README.md

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ This tool provides a structured and extensible approach to reverse-engineering d
1515
migration files. It supports foreign key constraints, correct dependency order, and customizable mapping logic –
1616
enabling seamless integration into both legacy and modern Laravel projects (Laravel 5–12 supported).
1717

18-
---
19-
2018
## ✨ Features
2119

2220
- ✅ Detects tables, columns, indexes, and foreign keys with precision
@@ -25,8 +23,6 @@ enabling seamless integration into both legacy and modern Laravel projects (Lara
2523
- 🧩 Supports Laravel 5 to 12 (EOL versions maintained in read-only mode)
2624
- 🛠 Clean, testable, and maintainable codebase
2725

28-
---
29-
3026
## 📊 Version Compatibility
3127

3228
| Laravel/Lumen | PHP Version | Generator Version | Status |
@@ -42,16 +38,12 @@ enabling seamless integration into both legacy and modern Laravel projects (Lara
4238

4339
> ⚠️ EOL versions are not actively developed but remain functional for legacy compatibility.
4440
45-
---
46-
4741
## ⚙ Requirements
4842

4943
- PHP ≥ 8.2
5044
- `pdo_mysql` extension
5145
- MySQL ≥ 5.7
5246

53-
---
54-
5547
## 🧰 Installation
5648

5749
Install the package via Composer:
@@ -68,8 +60,6 @@ For **Lumen**, register the service provider manually in `bootstrap/app.php`:
6860
$app->register(\N3XT0R\MigrationGenerator\Providers\MigrationGeneratorServiceProvider::class);
6961
```
7062

71-
---
72-
7363
## 🚀 Usage
7464

7565
Run the migration generator via Artisan:
@@ -81,8 +71,6 @@ php artisan migrate:regenerate
8171
This command will generate migration files from your existing MySQL schema into the `database/migrations/` folder. The
8272
files will be ordered automatically to maintain referential integrity – no manual reordering required.
8373

84-
---
85-
8674
## ⚙️ Custom Export Strategy
8775

8876
If the default export does not meet your needs, the generator is fully extensible. You can override the export logic
@@ -98,8 +86,6 @@ php artisan vendor:publish --tag=migration-generator-config
9886

9987
Edit `config/migration-generator.php` to adjust or override definitions and mappings.
10088

101-
---
102-
10389
## 🧩 Export Architecture
10490

10591
The export process is divided into two customizable layers:
@@ -114,8 +100,6 @@ Laravel and can be reused, extended, or mapped differently.
114100
These classes transform the internal representation into **valid Laravel migration code** (PHP). You can override them
115101
to adjust formatting, naming conventions, or structure.
116102

117-
---
118-
119103
## 🧪 Testing
120104

121105
To run the tests:
@@ -126,21 +110,57 @@ To run the tests:
126110

127111
Docker and CI pipelines are already integrated for continuous validation and quality assurance.
128112

129-
---
113+
## ✅ CI Test Matrix
114+
115+
This package is continuously tested across multiple Laravel and PHP versions to ensure full compatibility and
116+
reliability.
117+
118+
| Laravel Version | PHP Versions | Database |
119+
|-----------------|---------------|-----------|
120+
| 10 | 8.2, 8.3 | MySQL 5.7 |
121+
| 11 | 8.2, 8.3, 8.4 | MySQL 5.7 |
122+
| 12 | 8.2, 8.3, 8.4 | MySQL 5.7 |
123+
124+
CI is powered by GitHub Actions and includes:
125+
126+
- Multiple Laravel versions via dynamic `composer require`
127+
- PHPUnit 10/11 support (auto-detected per version)
128+
- Full code coverage with Clover reports (Xdebug enabled)
129+
- Version-aware tests (e.g., different table sets for Laravel 10 vs. 11+)
130+
131+
### ℹ️ Composer Compatibility Strategy
132+
133+
Although the root `composer.json` targets Laravel 12 by default, earlier Laravel versions (10, 11) are tested in CI
134+
using dynamic version installation:
135+
136+
```yaml
137+
run: composer require laravel/framework:^${{ matrix.laravel }} --no-interaction --no-update
138+
```
139+
140+
This ensures flexible version handling while keeping the default installation aligned with the latest stable Laravel
141+
release.
142+
143+
### 🧪 Version-Aware Assertions
144+
145+
Table-based tests (e.g., migration sorting or detection) dynamically adjust expected values based on the Laravel
146+
version:
147+
148+
```php
149+
$expectedTables = match (true) {
150+
str_starts_with(Application::VERSION, '10.') => [...],
151+
default => [...], // Laravel 11+
152+
};
153+
```
130154

131155
## 📄 License
132156

133157
This project is licensed under the [MIT License](LICENSE).
134158

135-
---
136-
137159
## 🙌 Contributions
138160

139161
Contributions are welcome! Feel free to open issues or submit pull requests to improve the generator, add new database
140162
support (e.g., PostgreSQL), or enhance the customization layers.
141163

142-
---
143-
144164
## 🔗 Links
145165

146166
- 📦 [Packagist Package](https://packagist.org/packages/n3xt0r/laravel-migration-generator)

0 commit comments

Comments
 (0)