Commit Graph
16 Commits
Author SHA1 Message Date
Markus PodarandBarry vd. Heuvel ea17a4076b Small improvements for github actions (#961)
* Remove travis leftovers

* gha: remove --no-interaction

* gha: use separate job for style check and use composer scripts

* gha: give workflow a nice name

* gha: remove packages we don't need, reduce workflow runtime

Co-authored-by: Barry vd. Heuvel <[email protected]>
2020-06-22 21:07:19 +02:00
Markus Podar b7197aec89 Document that model_locations/dir now supports glob (#925)
Feature was added with https://github.com/barryvdh/laravel-ide-helper/pull/921
2020-04-22 21:20:09 +02:00
Markus Podar f4ae4c4b45 Remove unnecessary and wrong definition of SoftDelete methods (#918)
These two methods are already regular methods on the trait, there's no
need to add them and additionally they're not static, so their
definition was changed for the worse.

The other methods are magic so it's fine to keep them.

Fixes https://github.com/barryvdh/laravel-ide-helper/issues/917
2020-04-19 07:49:54 +02:00
Markus Podar b72689755b Infer return type from reflection if no phpdoc given 2020-04-01 22:44:26 +02:00
Markus Podar 68d3d19298 tests: fix after recent merged "stepping on each others toes" (#882)
🩰
2020-02-02 21:12:24 +01:00
Markus Podar 75149ddb1f tests: cover reset and smart-reset options (#875) 2020-01-12 18:24:10 +01:00
Markus Podar e020e265a4 Fixed bug in model command where loose string comparison would override properties for model relations (#873) 2020-01-12 18:23:52 +01:00
Markus Podar 6af1f32d96 tests: fix typo in migration 🤦‍♂️ and adapt tests (#874) 2020-01-12 18:23:27 +01:00
Markus Podar c0bb9ee1fd Add more tests (#870)
* tests: be more systematic when testing discrete column types

Still not covering all due to SQLite limitation

* tests: relations of models

* tests: model in another namespace gets correctly qualified

* tests: cover SoftDeletes trait

* tests: cover some variants of getter
2020-01-03 23:08:24 +01:00
Markus Podar d9a731daba [TESTS] Add some basic tests for ModelsCommand (#869)
* tests: add abstract class for all database related tests

* tests: add abstract class for all ModelsCommand related tests

* tests: add GenerateBasicPhpdoc test

* tests: add CustomDate test

* tests: remove MITM abstract TestCaseDatabase, not useful here

* tests: skip new ModelsCommand test on Laravel < 6

* tests: remove CarbonImmutable checked

Since we decided to skip for Laravel < 6.0 anyway, it's always present
2020-01-03 09:52:10 +01:00
Markus Podar d3b24ffeae Bump grumphp version (#867)
The current version emits the following:
```
Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75

Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75

```

Manually tested it locally, worked as expected.
2020-01-02 15:21:05 +01:00
Markus Podar 015cc6c493 Drop support for PHP < 7.2 and improve test matrix (#868)
* travis: use explicit test matrix and drop PHP < 7.2

* composer: use more liberal version requirements for orchestra

This is to easier satisfy when we want to use older Laravel versions on travis

* tests: add shim for assertStringContainsString for older Laravel/phpunit versions

Specifically, Laravel 5.5 works with an older phpunit version, which
does not feature assertStringContainsString

* composer: bump minimum PHP version to 7.2

* travis: explicitly install Mockery for testing older Laravel versions

* composer: make mockery a root requirement and remove the one from travis

* travis: further improve based on suggestions from https://github.com/fruitcake/laravel-cors/blob/master/.travis.yml

* tests: skip test if mixin markers are already present in model

We're also testing Laravel 5.5 which contains them (they were removed later)
2020-01-02 14:39:34 +01:00
Markus Podar 44f289f76a [CHORE] Remove unused/stale utilities (#866)
* Remove grumphp

It reports so many violations, I don't think anyone paid attention
to them in some time.

Also there's code sniffer which is:
- installed
- works
- and also run on travis explicitly

Here are the current violations:

```
$ vendor/bin/grumphp run
PHP Deprecated:  strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in /Users/mfischer/src/laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75

Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in /Users/mfischer/src/laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75
GrumPHP is sniffing your code!✘
Running task 2/2: Phpunit... ✔
             ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
           ▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
       ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
  ▄███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
 █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
 ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
   ▀█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
     ▀▀▓▓▓▓▓▓▓▓▓▓▓▓█▀▀▀▀▀▀▀▀▀▀▀▀▀▀████████████▄
      ▄███████                       ██████████
     ███████▀  ▀▀▀▀▀▄      ▄▀▀▀▀▀     █████ ▀
      ▐████      ▐██        ▐██        ████▌
      ████▌                            ███
       ▌██▌           ▄▄ ▄▄           ▐███
        ███       ▄▄▄▄▄▄▄▄▄▄▄▄       ▐███
         ██▄ ▐███████████████████████████
        █▀███████████▀     ▀▀███████████
          ██████████▄███████▄███████████
         ▐█████████████████████████████
          █████████████████████████████
           ██ █████████████████████▐██▀
            ▀ ▐███████████████████▌ ▐▀
                ████▀████████▀▐███
                 ▀█▌  ▐█████  ██▌
                        ██▀   ▐▀

       ██████████████████████████████████
       █░░░░░░▀█▀░░░░░░▀█░░░░░░▀█▀░░░░░▀█
       █░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
       █░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
       █░░▐█▌░░█░░░██░░░█░░░░░░▄█░░▄▄▄▄▄█
       █░░▐█▌░░█░░░██░░░█░░░░████░░░░░░░█
       █░░░█░░░█▄░░░░░░▄█░░░░████▄░░░░░▄█
       ██████████████████████████████████

FILE: ...Users/mfischer/src/laravel-ide-helper/resources/views/helper.php
----------------------------------------------------------------------
FOUND 46 ERRORS AND 3 WARNINGS AFFECTING 24 LINES
----------------------------------------------------------------------
  23 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  23 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  24 | ERROR   | [x] Line indented incorrectly; expected at least 4
     |         |     spaces, found 0
  24 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  24 | ERROR   | [x] Newline required after opening brace
  24 | ERROR   | [x] Closing brace must be on a line by itself
  24 | ERROR   | [x] Each PHP statement must be on a line by itself
  26 | ERROR   | [x] Line indented incorrectly; expected at least 4
     |         |     spaces, found 0
  26 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  26 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  26 | ERROR   | [x] Blank line found at start of control structure
  28 | ERROR   | [x] Line indented incorrectly; expected at least 8
     |         |     spaces, found 4
  29 | ERROR   | [x] Line indented incorrectly; expected at least 8
     |         |     spaces, found 4
  30 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  30 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  30 | ERROR   | [x] Blank line found at start of control structure
  32 | ERROR   | [x] Line indented incorrectly; expected at least 12
     |         |     spaces, found 8
  34 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  34 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  34 | ERROR   | [x] Blank line found at start of control structure
  37 | ERROR   | [x] Closing brace indented incorrectly; expected 9
     |         |     spaces, found 12
  39 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  39 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  51 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  51 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  53 | ERROR   | [x] Line indented incorrectly; expected at least 4
     |         |     spaces, found 0
  53 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  53 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  53 | ERROR   | [x] Blank line found at start of control structure
  55 | ERROR   | [x] Line indented incorrectly; expected at least 8
     |         |     spaces, found 4
  55 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  55 | WARNING | [ ] Line exceeds 120 characters; contains 180
     |         |     characters
  56 | ERROR   | [x] Expected 1 space(s) after FOREACH keyword; 0
     |         |     found
  56 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  59 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  59 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  59 | ERROR   | [x] Blank line found at start of control structure
  62 | ERROR   | [x] Closing brace indented incorrectly; expected 13
     |         |     spaces, found 16
  64 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  64 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  70 | ERROR   | [x] Closing brace indented incorrectly; expected 4
     |         |     spaces, found 0
  76 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  76 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
  78 | ERROR   | [x] Line indented incorrectly; expected at least 4
     |         |     spaces, found 0
  82 | ERROR   | [x] Expected 1 space(s) after IF keyword; 0 found
  82 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
 109 | ERROR   | [x] Expected 1 space(s) after closing parenthesis;
     |         |     found 0
 112 | WARNING | [ ] Line exceeds 120 characters; contains 141
     |         |     characters
 113 | WARNING | [ ] Line exceeds 120 characters; contains 139
     |         |     characters
----------------------------------------------------------------------
PHPCBF CAN FIX THE 46 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

FILE: /Users/mfischer/src/laravel-ide-helper/resources/views/meta.php
----------------------------------------------------------------------
FOUND 10 ERRORS AFFECTING 6 LINES
----------------------------------------------------------------------
 14 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
    |       |     found 0
 17 | ERROR | [x] Line indented incorrectly; expected at least 4
    |       |     spaces, found 0
 17 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0 found
 17 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
    |       |     found 0
 23 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
    |       |     found 0
 24 | ERROR | [x] Spaces must be used to indent lines; tabs are not
    |       |     allowed
 26 | ERROR | [x] Line indented incorrectly; expected at least 4
    |       |     spaces, found 0
 26 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0 found
 26 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
    |       |     found 0
 29 | ERROR | [x] Spaces must be used to indent lines; tabs are not
    |       |     allowed
----------------------------------------------------------------------
PHPCBF CAN FIX THE 10 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 260ms; Memory: 12MB
```

* Remove scrutinizer/ocular

Looks unused, also not used on travis

* Remove StyleCI

Isn't enabled

* Revert "Remove grumphp"

This reverts commit a69696f0

* grumphp: add whitelist to ignore the resources/ folder

* grumphp: per .editorconf the indentation is 4 spaces, not 2
2020-01-02 11:34:21 +01:00
Markus Podar fb0c576806 [PROPOSAL] Add more tests to the library (#865)
* phpunit: use dedicate `Tests` namespace for tests

* tests: replace phpunit with orchestra/testbench

* phpunit: ignore result cache file

* phpunit: adapt test for newer version

* tests: add base testcase class with a helper to run/assert commands

* tests: add test for ide-helper:eloquent

* travis: add global default variables

* travis: disable xdebug, speeds up running tests

* travis: convert php versions to build matrix for environment vars

* travis: only run phpcs/phpunit when the env vars signal it

However phpcs only runs with one test combination from the matrix,
not necessary to execute it every time.
2020-01-01 22:51:21 +01:00
Markus Podar 0d1dd2182b Add support for custom date class via Date::use() (#859)
Laravel 5.8 introduced a feature to support a custom date class via
`Date::use()`, see https://github.com/laravel/framework/pull/25320

When e.g. using `Date::use(CarbonImmutable)` in a project, it means
all date casts are not returning `\Illuminate\Support\Carbon` anymore
but `\Carbon\CarbonImmutable`, which means all the generated type hints
for dates are now wrong.

This change tries to be still backwards compatible with Laravel < 5.8
which do not have the Date facade.
2019-12-28 14:33:08 +01:00
Markus Fischer 76a1952c41 Keep "null"-ness of column even with model casts
A cast in Laravel should only affect the type, but not the database intrinsics whether a column accepts `null` or not.

As an example, consider this table (Postgres syntax):
```sql
CREATE TABLE foo (
  some_column jsonb
);
```
This will be generated as: `@property string|null $some_column`

When providing a the following casts on the model:
```php
protected $casts = [
  'some_column' => 'array',
];
```
then the generated property changes to: `@property array $some_column`

However the DB still accepts `null`, but this can't be expressed via the casts.

This change will make the null "sticky" and generate: `@property array|null $some_column`
2017-10-28 18:01:18 +02:00