diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml index a4d32a34e..4af343a33 100644 --- a/.github/workflows/build-ci.yml +++ b/.github/workflows/build-ci.yml @@ -1,85 +1,104 @@ name: CI on: - push: - branches: - tags: - pull_request: + push: + branches: + tags: + pull_request: jobs: - build: - runs-on: ${{ matrix.os }} - name: PHP v${{ matrix.php }} with Mongo v${{ matrix.mongodb }} - continue-on-error: ${{ matrix.experimental }} - strategy: - matrix: - include: - - { os: ubuntu-latest, php: 7.2, mongodb: 3.6, experimental: true} - - { os: ubuntu-latest, php: 7.2, mongodb: '4.0', experimental: true} - - { os: ubuntu-latest, php: 7.2, mongodb: 4.2, experimental: true} - - { os: ubuntu-latest, php: 7.2, mongodb: 4.4, experimental: true} - - { os: ubuntu-latest, php: 7.3, mongodb: 3.6, experimental: false} - - { os: ubuntu-latest, php: 7.3, mongodb: '4.0', experimental: false} - - { os: ubuntu-latest, php: 7.3, mongodb: 4.2, experimental: false} - - { os: ubuntu-latest, php: 7.3, mongodb: 4.4, experimental: false} - - { os: ubuntu-latest, php: 7.4, mongodb: 3.6, experimental: false} - - { os: ubuntu-latest, php: 7.4, mongodb: '4.0', experimental: false} - - { os: ubuntu-latest, php: 7.4, mongodb: 4.2, experimental: false} - - { os: ubuntu-latest, php: 7.4, mongodb: 4.4, experimental: false} - - { os: ubuntu-latest, php: 8.0, mongodb: 4.4, experimental: false} - services: - mongo: - image: mongo:${{ matrix.mongodb }} - ports: - - 27017:27017 - mysql: - image: mysql:5.7 - ports: - - 3307:3306 - env: - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - MYSQL_DATABASE: 'unittest' - MYSQL_ROOT_PASSWORD: + php-cs-fixer: + runs-on: ubuntu-latest + strategy: + matrix: + php: + - '7.4' + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: curl,mbstring + tools: php-cs-fixer + coverage: none + - name: Run PHP-CS-Fixer Fix + run: php-cs-fixer fix --dry-run --diff --ansi - steps: - - uses: actions/checkout@v2 - - name: "Installing php" - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: curl,mbstring,xdebug - coverage: xdebug - tools: composer - - name: Show PHP version - run: php -v && composer -V - - name: Show Docker version - run: if [[ "$DEBUG" == "true" ]]; then docker version && env; fi - env: - DEBUG: ${{secrets.DEBUG}} - - name: Download Composer cache dependencies from cache - if: (!startsWith(matrix.php, '7.2')) - id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache Composer dependencies - if: (!startsWith(matrix.php, '7.2')) - uses: actions/cache@v1 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ matrix.os }}-composer-${{ hashFiles('**/composer.json') }} - restore-keys: ${{ matrix.os }}-composer- - - name: Install dependencies - if: (!startsWith(matrix.php, '7.2')) - run: | - composer install --no-interaction - - name: Run tests - if: (!startsWith(matrix.php, '7.2')) - run: | - ./vendor/bin/phpunit --coverage-clover coverage.xml - env: - MONGO_HOST: 0.0.0.0 - MYSQL_HOST: 0.0.0.0 - MYSQL_PORT: 3307 - - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: false + build: + runs-on: ${{ matrix.os }} + name: PHP v${{ matrix.php }} with Mongo v${{ matrix.mongodb }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + include: + - { os: ubuntu-latest, php: 7.2, mongodb: 3.6, experimental: true } + - { os: ubuntu-latest, php: 7.2, mongodb: '4.0', experimental: true } + - { os: ubuntu-latest, php: 7.2, mongodb: 4.2, experimental: true } + - { os: ubuntu-latest, php: 7.2, mongodb: 4.4, experimental: true } + - { os: ubuntu-latest, php: 7.3, mongodb: 3.6, experimental: false } + - { os: ubuntu-latest, php: 7.3, mongodb: '4.0', experimental: false } + - { os: ubuntu-latest, php: 7.3, mongodb: 4.2, experimental: false } + - { os: ubuntu-latest, php: 7.3, mongodb: 4.4, experimental: false } + - { os: ubuntu-latest, php: 7.4, mongodb: 3.6, experimental: false } + - { os: ubuntu-latest, php: 7.4, mongodb: '4.0', experimental: false } + - { os: ubuntu-latest, php: 7.4, mongodb: 4.2, experimental: false } + - { os: ubuntu-latest, php: 7.4, mongodb: 4.4, experimental: false } + - { os: ubuntu-latest, php: 8.0, mongodb: 4.4, experimental: false } + services: + mongo: + image: mongo:${{ matrix.mongodb }} + ports: + - 27017:27017 + mysql: + image: mysql:5.7 + ports: + - 3307:3306 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: 'unittest' + MYSQL_ROOT_PASSWORD: + + steps: + - uses: actions/checkout@v2 + - name: "Installing php" + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: curl,mbstring,xdebug + coverage: xdebug + tools: composer + - name: Show PHP version + run: php -v && composer -V + - name: Show Docker version + run: if [[ "$DEBUG" == "true" ]]; then docker version && env; fi + env: + DEBUG: ${{secrets.DEBUG}} + - name: Download Composer cache dependencies from cache + if: (!startsWith(matrix.php, '7.2')) + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache Composer dependencies + if: (!startsWith(matrix.php, '7.2')) + uses: actions/cache@v1 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ matrix.os }}-composer-${{ hashFiles('**/composer.json') }} + restore-keys: ${{ matrix.os }}-composer- + - name: Install dependencies + if: (!startsWith(matrix.php, '7.2')) + run: | + composer install --no-interaction + - name: Run tests + if: (!startsWith(matrix.php, '7.2')) + run: | + ./vendor/bin/phpunit --coverage-clover coverage.xml + env: + MONGO_HOST: 0.0.0.0 + MYSQL_HOST: 0.0.0.0 + MYSQL_PORT: 3307 + - uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false diff --git a/.gitignore b/.gitignore index 5d4e6ba97..691162d09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,13 @@ -.DS_Store -phpunit.phar -/vendor -composer.phar -composer.lock +*.project *.sublime-project *.sublime-workspace -*.project +.DS_Store .idea/ .phpunit.result.cache +/.php_cs +/.php_cs.cache +/vendor +composer.lock +composer.phar +phpunit.phar phpunit.xml diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 000000000..81b74cffb --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,174 @@ + true, + 'align_multiline_comment' => [ + 'comment_type' => 'phpdocs_like', + ], + 'ordered_imports' => [ + 'sort_algorithm' => 'alpha', + ], + 'array_indentation' => true, + 'binary_operator_spaces' => [ + 'operators' => [ + '=>' => null, + '=' => 'single_space', + ], + ], + 'blank_line_after_namespace' => true, + 'blank_line_after_opening_tag' => true, + 'blank_line_before_statement' => [ + 'statements' => [ + 'return', + ], + ], + 'cast_spaces' => true, + 'class_definition' => true, + 'clean_namespace' => true, + 'compact_nullable_typehint' => true, + 'concat_space' => [ + 'spacing' => 'none', + ], + 'declare_equal_normalize' => true, + 'no_alias_language_construct_call' => true, + 'elseif' => true, + 'encoding' => true, + 'full_opening_tag' => true, + 'function_declaration' => true, + 'function_typehint_space' => true, + 'single_line_comment_style' => [ + 'comment_types' => [ + 'hash', + ], + ], + 'heredoc_to_nowdoc' => true, + 'include' => true, + 'indentation_type' => true, + 'lowercase_cast' => true, + 'lowercase_constants' => true, + 'lowercase_keywords' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'method_argument_space' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'method', + ], + ], + 'visibility_required' => [ + 'elements' => [ + 'method', + 'property', + ], + ], + 'native_function_casing' => true, + 'native_function_type_declaration_casing' => true, + 'no_alternative_syntax' => true, + 'no_binary_string' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_extra_blank_lines' => [ + 'tokens' => [ + 'throw', + 'use', + 'use_trait', + 'extra', + ], + ], + 'no_closing_tag' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_multiline_whitespace_around_double_arrow' => true, + 'multiline_whitespace_before_semicolons' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_spaces_after_function_name' => true, + 'no_spaces_around_offset' => [ + 'positions' => [ + 'inside', + ], + ], + 'no_spaces_inside_parenthesis' => true, + 'no_trailing_comma_in_list_call' => true, + 'no_trailing_comma_in_singleline_array' => true, + 'no_trailing_whitespace' => true, + 'no_trailing_whitespace_in_comment' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unneeded_curly_braces' => true, + 'no_unset_cast' => true, + 'no_unused_imports' => true, + 'lambda_not_used_import' => true, + 'no_useless_return' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'normalize_index_brace' => true, + 'not_operator_with_successor_space' => true, + 'object_operator_without_whitespace' => true, + 'phpdoc_indent' => true, + 'phpdoc_inline_tag_normalizer' => true, + 'phpdoc_no_access' => true, + 'phpdoc_no_package' => true, + 'phpdoc_no_useless_inheritdoc' => true, + 'phpdoc_return_self_reference' => true, + 'phpdoc_scalar' => true, + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_summary' => true, + 'phpdoc_trim' => true, + 'phpdoc_no_alias_tag' => [ + 'type' => 'var', + ], + 'phpdoc_types' => true, + 'phpdoc_var_without_name' => true, + 'increment_style' => [ + 'style' => 'post', + ], + 'no_mixed_echo_print' => [ + 'use' => 'echo', + ], + 'braces' => true, + 'return_type_declaration' => [ + 'space_before' => 'none', + ], + 'array_syntax' => [ + 'syntax' => 'short', + ], + 'list_syntax' => [ + 'syntax' => 'short', + ], + 'short_scalar_cast' => true, + 'single_blank_line_at_eof' => true, + 'single_blank_line_before_namespace' => true, + 'single_class_element_per_statement' => true, + 'single_import_per_statement' => true, + 'single_line_after_imports' => true, + 'single_quote' => true, + 'space_after_semicolon' => true, + 'standardize_not_equals' => true, + 'switch_case_semicolon_to_colon' => true, + 'switch_case_space' => true, + 'switch_continue_to_break' => true, + 'ternary_operator_spaces' => true, + 'trailing_comma_in_multiline_array' => true, + 'trim_array_spaces' => true, + 'unary_operator_spaces' => true, + 'line_ending' => true, + 'whitespace_after_comma_in_array' => true, + 'no_alias_functions' => true, + 'no_unreachable_default_argument_value' => true, + 'psr4' => true, + 'self_accessor' => true, +]; + +$finder = PhpCsFixer\Finder::create() + ->in(__DIR__); + +$config = new PhpCsFixer\Config(); +return $config + ->setRiskyAllowed(true) + ->setRules($rules) + ->setFinder($finder);