feat: update dependencies, add linting, fix codebase, cleanup (#11)

* chore(deps): update dependencies

* feat(tests): add matrix testing, problem matcher

* feat(lint): add php-cs-fixer, fix codebase
This commit is contained in:
Ismo Vuorinen
2024-11-08 18:40:40 +02:00
committed by GitHub
parent dfd2dc0d8a
commit 61ac97155c
15 changed files with 119 additions and 6951 deletions

16
.editorconfig Normal file
View File

@@ -0,0 +1,16 @@
# EditorConfig is awesome: https://editorconfig.org
# top-most EditorConfig file
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 4
max_line_length = 100
[*.yml]
indent_size = 2

View File

@@ -6,15 +6,40 @@ jobs:
build-test: build-test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
php_version:
- 7.4
- 8.0
- 8.1
- 8.2
- 8.3
- latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: php-actions/composer@v5 - uses: shivammathur/setup-php@v2
- name: PHPUnit Tests
uses: php-actions/phpunit@v2
with: with:
php_extensions: xdebug mbstring php-version: ${{ matrix.php_version }}
bootstrap: vendor/autoload.php tools: composer, phpunit
configuration: phpunit.xml
args: --coverage-text - name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-${{ matrix.php_version }}-${{ hashFiles('**/composer.json') }}
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Configure matchers
uses: mheap/phpunit-matcher-action@v1
- name: Run tests
run: composer test-ci

3
.gitignore vendored
View File

@@ -1 +1,2 @@
vendor vendor
composer.lock

15
.php-cs-fixer.dist.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
$finder = (new PhpCsFixer\Finder())
->in(__DIR__);
return (new PhpCsFixer\Config())
->setRules([
'@PhpCsFixer' => true,
'@PHP74Migration' => true,
'@PSR12' => true,
'strict_param' => true,
'array_syntax' => ['syntax' => 'short'],
])
->setFinder($finder)
;

View File

@@ -1,21 +0,0 @@
language: php
php:
- 7.3
- 7.4
- 8.0
- nightly
matrix:
allow_failures:
- php: nightly
fast_finish: true
cache:
directories:
- $HOME/.composer/cache/files
before_script:
- phpenv global "$TRAVIS_PHP_VERSION"
- composer config extra.platform.php $TRAVIS_PHP_VERSION
install:
- flags="--ansi --prefer-dist --no-interaction --optimize-autoloader --no-suggest --no-progress"
- travis_wait 30 composer install $flags
script:
- ./vendor/bin/phpunit -c phpunit.xml

View File

@@ -2,9 +2,6 @@
[![Latest Version on Packagist][ico-version]][link-packagist] [![Latest Version on Packagist][ico-version]][link-packagist]
[![Software License][ico-license]](LICENSE.md) [![Software License][ico-license]](LICENSE.md)
[![Build Status][ico-travis]][link-travis]
[![Coverage Status][ico-scrutinizer]][link-scrutinizer]
[![Quality Score][ico-code-quality]][link-code-quality]
[![Total Downloads][ico-downloads]][link-downloads] [![Total Downloads][ico-downloads]][link-downloads]
This is a collection of Laravel Artisan commands created to help everyone This is a collection of Laravel Artisan commands created to help everyone
@@ -16,7 +13,7 @@ This package requires PHP 7.3 or later. The `composer.lock` file has been genera
### Step 1: Install Through Composer ### Step 1: Install Through Composer
``` bash ```bash
$ composer require superhelio/commands --dev $ composer require superhelio/commands --dev
``` ```
@@ -35,12 +32,12 @@ public function register()
## Usage ## Usage
- *superhelio:gozer* - _superhelio:gozer_
- Force delete database tables that have your table prefix - Force delete database tables that have your table prefix
- `php artisan superhelio:gozer` - `php artisan superhelio:gozer`
- *superhelio:reload* - _superhelio:reload_
- Reset database, migrate and seed - Reset database, migrate and seed
- `php artisan superhelio:reload` - `php artisan superhelio:reload`
## Change log ## Change log
@@ -48,7 +45,7 @@ Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recen
## Testing ## Testing
``` bash ```bash
$ composer test $ composer test
``` ```
@@ -67,15 +64,8 @@ The MIT License (MIT). Please see [License File](LICENSE.md) for more informatio
[ico-version]: https://img.shields.io/packagist/v/superhelio/commands.svg?style=flat-square [ico-version]: https://img.shields.io/packagist/v/superhelio/commands.svg?style=flat-square
[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square [ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square
[ico-travis]: https://img.shields.io/travis/superhelio/commands/master.svg?style=flat-square
[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/superhelio/commands.svg?style=flat-square
[ico-code-quality]: https://img.shields.io/scrutinizer/g/superhelio/commands.svg?style=flat-square
[ico-downloads]: https://img.shields.io/packagist/dt/superhelio/commands.svg?style=flat-square [ico-downloads]: https://img.shields.io/packagist/dt/superhelio/commands.svg?style=flat-square
[link-packagist]: https://packagist.org/packages/superhelio/commands [link-packagist]: https://packagist.org/packages/superhelio/commands
[link-travis]: https://travis-ci.org/superhelio/commands
[link-scrutinizer]: https://scrutinizer-ci.com/g/superhelio/commands/code-structure
[link-code-quality]: https://scrutinizer-ci.com/g/superhelio/commands
[link-downloads]: https://packagist.org/packages/superhelio/commands [link-downloads]: https://packagist.org/packages/superhelio/commands
[link-author]: https://github.com/superhelio [link-author]: https://github.com/superhelio
[link-contributors]: https://github.com/superhelio/commands/graphs/contributors [link-contributors]: https://github.com/superhelio/commands/graphs/contributors

View File

@@ -17,14 +17,15 @@
} }
], ],
"require": { "require": {
"php" : ">=7.3", "php": "^7.4|^8",
"illuminate/support": "^5.3|^6.0|^7.0|^8.0", "illuminate/support": "^5.3|^6|^7|^8|^9|^10|^11",
"doctrine/dbal": "^2.5|^2.6" "doctrine/dbal": "^2.5|^2.6|^3"
}, },
"require-dev": { "require-dev": {
"roave/security-advisories": "dev-master", "roave/security-advisories": "dev-master",
"phpunit/phpunit" : "^8.0", "phpunit/phpunit": "^8.0",
"orchestra/testbench": "^3.3|^4|^5|^6" "orchestra/testbench": "^3.3|^4|^5|^6|^7|^8",
"friendsofphp/php-cs-fixer": "^3.9"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -37,7 +38,9 @@
} }
}, },
"scripts": { "scripts": {
"test": "phpunit" "lint": "PHP_CS_FIXER_IGNORE_ENV=1 php-cs-fixer fix --diff --allow-risky=yes",
"test": "phpunit",
"test-ci": "phpunit --teamcity"
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {

6849
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -76,16 +76,14 @@ class Gozer extends Command
*/ */
$tables = $this->getFilteredTables($tables); $tables = $this->getFilteredTables($tables);
/** // Check that we got at least one table, bail out if not
* Check that we got at least one table, bail out if not
*/
if ($tables->count() < 1) { if ($tables->count() < 1) {
$this->info('There are no tables, only Zuul.'); $this->info('There are no tables, only Zuul.');
return true; return true;
} }
/** /*
* Bid your farewells to these tables. * Bid your farewells to these tables.
* Last look and confirmation. * Last look and confirmation.
*/ */
@@ -95,27 +93,22 @@ class Gozer extends Command
)); ));
$this->line(''); $this->line('');
/** // Last confirmation before dropping tables
* Last confirmation before dropping tables
*/
if ($this->confirm('Really delete those tables?')) { if ($this->confirm('Really delete those tables?')) {
/** Fancy pants progress bar to see your tables get destroyed */ /** Fancy pants progress bar to see your tables get destroyed */
$bar = $this->output->createProgressBar($tables->count()); $bar = $this->output->createProgressBar($tables->count());
Schema::disableForeignKeyConstraints(); Schema::disableForeignKeyConstraints();
$tables->each(function ($table) use ($bar, $connection) { $tables->each(function ($table) use ($bar, $connection) {
// Drop the table
/** Drop the table */
$connection->dropTable($table); $connection->dropTable($table);
/** Advance our progress bar */ // Advance our progress bar
$bar->advance(); $bar->advance();
}); });
Schema::enableForeignKeyConstraints(); Schema::enableForeignKeyConstraints();
/** Progress bar is now finished */ // Progress bar is now finished
$bar->finish(); $bar->finish();
} }
@@ -134,7 +127,7 @@ class Gozer extends Command
public function getConnection() public function getConnection()
{ {
try { try {
/** @var \Doctrine\DBAL\Schema\AbstractSchemaManager $connection */ // @var \Doctrine\DBAL\Schema\AbstractSchemaManager $connection
return app('db')->connection()->getDoctrineSchemaManager(); return app('db')->connection()->getDoctrineSchemaManager();
} catch (\Exception $e) { } catch (\Exception $e) {
$this->error($e->getMessage()); $this->error($e->getMessage());
@@ -144,8 +137,6 @@ class Gozer extends Command
} }
/** /**
* @param \Doctrine\DBAL\Schema\AbstractSchemaManager $connection
*
* @return array|bool * @return array|bool
*/ */
public function getTables(\Doctrine\DBAL\Schema\AbstractSchemaManager $connection) public function getTables(\Doctrine\DBAL\Schema\AbstractSchemaManager $connection)
@@ -168,7 +159,7 @@ class Gozer extends Command
} }
/** /**
* This is mainly for testing purposes * This is mainly for testing purposes.
* *
* @param string $prefix * @param string $prefix
*/ */

View File

@@ -33,7 +33,7 @@ class Reload extends Command
[ [
'--no-interaction' => true, '--no-interaction' => true,
'--env' => 'development', '--env' => 'development',
'--verbose' => 3 '--verbose' => 3,
] ]
); );
$this->call( $this->call(
@@ -42,7 +42,7 @@ class Reload extends Command
'--seed' => true, '--seed' => true,
'--no-interaction' => true, '--no-interaction' => true,
'--env' => 'development', '--env' => 'development',
'--verbose' => 3 '--verbose' => 3,
] ]
); );

View File

@@ -5,9 +5,8 @@ namespace Superhelio\Commands;
use Illuminate\Support\ServiceProvider as BaseServiceProvider; use Illuminate\Support\ServiceProvider as BaseServiceProvider;
/** /**
* Class PackageServiceProvider * Class PackageServiceProvider.
* *
* @package Superhelio\Commands
* @see http://laravel.com/docs/master/packages#service-providers * @see http://laravel.com/docs/master/packages#service-providers
* @see http://laravel.com/docs/master/providers * @see http://laravel.com/docs/master/providers
*/ */
@@ -17,6 +16,7 @@ class ServiceProvider extends BaseServiceProvider
* Indicates if loading of the provider is deferred. * Indicates if loading of the provider is deferred.
* *
* @see http://laravel.com/docs/master/providers#deferred-providers * @see http://laravel.com/docs/master/providers#deferred-providers
*
* @var bool * @var bool
*/ */
protected $defer = false; protected $defer = false;
@@ -25,7 +25,6 @@ class ServiceProvider extends BaseServiceProvider
* Register the service provider. * Register the service provider.
* *
* @see http://laravel.com/docs/master/providers#the-register-method * @see http://laravel.com/docs/master/providers#the-register-method
* @return void
*/ */
public function register() public function register()
{ {

View File

@@ -7,6 +7,10 @@ use Superhelio\Commands\Commands\Gozer;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
/**
* @internal
* @coversNothing
*/
class GozerTest extends \Orchestra\Testbench\TestCase class GozerTest extends \Orchestra\Testbench\TestCase
{ {
/** /**
@@ -22,8 +26,6 @@ class GozerTest extends \Orchestra\Testbench\TestCase
* Define environment setup. * Define environment setup.
* *
* @param \Illuminate\Foundation\Application $app * @param \Illuminate\Foundation\Application $app
*
* @return void
*/ */
protected function getEnvironmentSetUp($app) protected function getEnvironmentSetUp($app)
{ {
@@ -51,16 +53,16 @@ class GozerTest extends \Orchestra\Testbench\TestCase
{ {
return [ return [
\Superhelio\Commands\Tests\Stubs\ServiceProvider::class, \Superhelio\Commands\Tests\Stubs\ServiceProvider::class,
\Superhelio\Commands\ServiceProvider::class \Superhelio\Commands\ServiceProvider::class,
]; ];
} }
public function test_database_is_there_and_functions() public function testDatabaseIsThereAndFunctions()
{ {
DB::table('users')->insert([ DB::table('users')->insert([
'name' => 'User name', 'name' => 'User name',
'email' => 'hello@gozer.dev', 'email' => 'hello@gozer.dev',
'password' => bcrypt('123') 'password' => bcrypt('123'),
]); ]);
$users = DB::table('users')->where('id', '=', 1)->first(); $users = DB::table('users')->where('id', '=', 1)->first();
@@ -69,17 +71,17 @@ class GozerTest extends \Orchestra\Testbench\TestCase
self::assertTrue(Hash::check('123', $users->password)); self::assertTrue(Hash::check('123', $users->password));
} }
public function test_dbal_is_installed() public function testDbalIsInstalled()
{ {
self::assertTrue(class_exists('\\Doctrine\\DBAL\\Schema\\Schema')); self::assertTrue(class_exists('\\Doctrine\\DBAL\\Schema\\Schema'));
} }
public function test_gozer_is_installed() public function testGozerIsInstalled()
{ {
self::assertTrue(class_exists('\\Superhelio\\Commands\\Commands\\Gozer')); self::assertTrue(class_exists('\\Superhelio\\Commands\\Commands\\Gozer'));
} }
public function test_gozer_has_required_methods_and_properties() public function testGozerHasRequiredMethodsAndProperties()
{ {
$gozer = new ReflectionClass('\\Superhelio\\Commands\\Commands\\Gozer'); $gozer = new ReflectionClass('\\Superhelio\\Commands\\Commands\\Gozer');
self::assertTrue($gozer->hasMethod('handle')); self::assertTrue($gozer->hasMethod('handle'));
@@ -88,14 +90,14 @@ class GozerTest extends \Orchestra\Testbench\TestCase
self::assertTrue($gozer->hasProperty('dbPrefix')); self::assertTrue($gozer->hasProperty('dbPrefix'));
} }
public function test_gozer_finds_database_prefix() public function testGozerFindsDatabasePrefix()
{ {
$gozer = new Gozer(); $gozer = new Gozer();
self::assertEquals('gozerTest__', $gozer->getDatabasePrefix()); self::assertEquals('gozerTest__', $gozer->getDatabasePrefix());
} }
public function test_gozer_finds_users_table() public function testGozerFindsUsersTable()
{ {
$gozer = new Gozer(); $gozer = new Gozer();
@@ -110,15 +112,15 @@ class GozerTest extends \Orchestra\Testbench\TestCase
self::assertContains('gozerTest__users', $filteredTables->toArray()); self::assertContains('gozerTest__users', $filteredTables->toArray());
} }
public function test_gozer_table_filtering_works() public function testGozerTableFilteringWorks()
{ {
$gozer = new Gozer(); $gozer = new Gozer();
$tables = array( $tables = [
'gozerTest__users', 'gozerTest__users',
'gozerTest__migrations', 'gozerTest__migrations',
'this_should_be_filtered', 'this_should_be_filtered',
'filter_me_too' 'filter_me_too',
); ];
$gozer->setDatabasePrefix('gozerTest__'); $gozer->setDatabasePrefix('gozerTest__');
$filtered = $gozer->getFilteredTables($tables); $filtered = $gozer->getFilteredTables($tables);

View File

@@ -2,10 +2,10 @@
namespace Superhelio\Commands\Tests; namespace Superhelio\Commands\Tests;
use Superhelio\Commands\Commands\Reload; /**
use Illuminate\Foundation\Testing\DatabaseMigrations; * @internal
use Illuminate\Foundation\Testing\DatabaseTransactions; * @coversNothing
*/
class ReloadTest extends \Orchestra\Testbench\TestCase class ReloadTest extends \Orchestra\Testbench\TestCase
{ {
public function testReloadTest() public function testReloadTest()
@@ -13,12 +13,12 @@ class ReloadTest extends \Orchestra\Testbench\TestCase
self::assertTrue(true); self::assertTrue(true);
} }
public function test_reload_is_installed() public function testReloadIsInstalled()
{ {
self::assertTrue(class_exists('\\Superhelio\\Commands\\Commands\\Reload')); self::assertTrue(class_exists('\\Superhelio\\Commands\\Commands\\Reload'));
} }
public function test_reload_has_required_methods_and_properties() public function testReloadHasRequiredMethodsAndProperties()
{ {
$reload = new \ReflectionClass('\\Superhelio\\Commands\\Commands\\Reload'); $reload = new \ReflectionClass('\\Superhelio\\Commands\\Commands\\Reload');
self::assertTrue($reload->hasMethod('handle')); self::assertTrue($reload->hasMethod('handle'));

View File

@@ -6,6 +6,6 @@ class ServiceProvider extends \Illuminate\Support\ServiceProvider
{ {
public function boot() public function boot()
{ {
$this->loadMigrationsFrom(dirname(__DIR__) . '/migrations'); $this->loadMigrationsFrom(dirname(__DIR__).'/migrations');
} }
} }

View File

@@ -8,8 +8,6 @@ class CreateUsersTable extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
*
* @return void
*/ */
public function up() public function up()
{ {
@@ -25,8 +23,6 @@ class CreateUsersTable extends Migration
/** /**
* Reverse the migrations. * Reverse the migrations.
*
* @return void
*/ */
public function down() public function down()
{ {