From 4b59fdba02a381abdba5968eeea9b05e466c68fc Mon Sep 17 00:00:00 2001 From: Dylan Wagstaff Date: Wed, 22 Nov 2017 13:05:03 +1300 Subject: [PATCH] Update supporting items for SilverStripe 4 conventions Update versions and configurations for tests and code checkers, such as phpunit and the SilverStripe CI tools. Altered the layout of the repository to be more in line with other SilverStripe 4 modules (including core ones). --- .gitattributes | 1 + .gitignore | 1 + .scrutinizer.yml | 70 +++---------------- .travis.yml | 47 ++++++------- .tx/config | 8 --- codecov.yml | 2 + composer.json | 64 ++++++++++------- license.md | 2 +- phpcs.xml.dist | 9 +++ phpunit.xml.dist | 13 ++++ .../Controllers}/CMSExternalLinks.php | 0 .../Jobs}/CheckExternalLinksJob.php | 0 .../Model}/BrokenExternalLink.php | 0 .../Model}/BrokenExternalPageTrack.php | 0 .../Model}/BrokenExternalPageTrackStatus.php | 0 .../Reports}/BrokenExternalLinksReport.php | 0 .../Tasks}/CheckExternalLinksTask.php | 0 {code/tasks => src/Tasks}/CurlLinkChecker.php | 0 {code/tasks => src/Tasks}/LinkChecker.php | 0 19 files changed, 96 insertions(+), 121 deletions(-) create mode 100644 .gitignore delete mode 100644 .tx/config create mode 100644 codecov.yml create mode 100644 phpcs.xml.dist create mode 100644 phpunit.xml.dist rename {code/controllers => src/Controllers}/CMSExternalLinks.php (100%) rename {code/jobs => src/Jobs}/CheckExternalLinksJob.php (100%) rename {code/model => src/Model}/BrokenExternalLink.php (100%) rename {code/model => src/Model}/BrokenExternalPageTrack.php (100%) rename {code/model => src/Model}/BrokenExternalPageTrackStatus.php (100%) rename {code/reports => src/Reports}/BrokenExternalLinksReport.php (100%) rename {code/tasks => src/Tasks}/CheckExternalLinksTask.php (100%) rename {code/tasks => src/Tasks}/CurlLinkChecker.php (100%) rename {code/tasks => src/Tasks}/LinkChecker.php (100%) diff --git a/.gitattributes b/.gitattributes index 475f5f2..89eb187 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ /.gitignore export-ignore /.travis.yml export-ignore /.scrutinizer.yml export-ignore +/codecov.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/.scrutinizer.yml b/.scrutinizer.yml index d1ebd80..051ef9a 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,69 +1,15 @@ inherit: true +build: + nodes: + analysis: + tests: + override: [php-scrutinizer-run] + checks: php: - verify_property_names: true - verify_argument_usable_as_reference: true - verify_access_scope_valid: true - useless_calls: true - use_statement_alias_conflict: true - variable_existence: true - unused_variables: true - unused_properties: true - unused_parameters: true - unused_methods: true - unreachable_code: true - too_many_arguments: true - sql_injection_vulnerabilities: true - simplify_boolean_return: true - side_effects_or_types: true - security_vulnerabilities: true - return_doc_comments: true - return_doc_comment_if_not_inferrable: true - require_scope_for_properties: true - require_scope_for_methods: true - require_php_tag_first: true - psr2_switch_declaration: true - psr2_class_declaration: true - property_assignments: true - prefer_while_loop_over_for_loop: true - precedence_mistakes: true - precedence_in_conditions: true - phpunit_assertions: true - php5_style_constructor: true - parse_doc_comments: true - parameter_non_unique: true - parameter_doc_comments: true - param_doc_comment_if_not_inferrable: true - optional_parameters_at_the_end: true - one_class_per_file: true - no_unnecessary_if: true - no_trailing_whitespace: true - no_property_on_interface: true - no_non_implemented_abstract_methods: true - no_error_suppression: true - no_duplicate_arguments: true - no_commented_out_code: true - newline_at_end_of_file: true - missing_arguments: true - method_calls_on_non_object: true - instanceof_class_exists: true - foreach_traversable: true - fix_line_ending: true - fix_doc_comments: true - duplication: true - deprecated_code_usage: true - deadlock_detection_in_loops: true code_rating: true - closure_use_not_conflicting: true - catch_class_exists: true - blank_line_after_namespace_declaration: false - avoid_multiple_statements_on_same_line: true - avoid_duplicate_types: true - avoid_conflicting_incrementers: true - avoid_closing_tag: true - assignment_of_null_return: true - argument_type_checks: true + duplication: true filter: - paths: [code/*, tests/*] + paths: [src/*, tests/*] diff --git a/.travis.yml b/.travis.yml index 75153e6..8a176d9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,36 +1,35 @@ -# See https://github.com/silverstripe-labs/silverstripe-travis-support for setup details - -sudo: false - language: php -php: - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 - env: - - DB=MYSQL CORE_RELEASE=3.2 + global: + - COMPOSER_ROOT_VERSION=2.0.x-dev matrix: include: - php: 5.6 - env: DB=MYSQL CORE_RELEASE=3 - - php: 5.6 - env: DB=MYSQL CORE_RELEASE=3.1 - - php: 5.6 - env: DB=PGSQL CORE_RELEASE=3.2 - allow_failures: + env: DB=MYSQL PHPCS_TEST=1 PHPUNIT_TEST=1 - php: 7.0 + env: DB=MYSQL PHPUNIT_TEST=1 + - php: 7.1 + env: DB=PGSQL PHPUNIT_COVERAGE_TEST=1 + - php: 7.2 + env: DB=MYSQL PHPUNIT_TEST=1 before_script: - - composer self-update || true - - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support - - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss - - cd ~/builds/ss - - composer install + # Init PHP + - phpenv rehash + - phpenv config-rm xdebug.ini + + # Install composer dependencies + - composer validate + - composer require --no-update silverstripe/installer 4.0.x-dev + - if [[ $DB == PGSQL ]]; then composer require --no-update silverstripe/postgresql 2.0.x-dev; fi + - composer install --prefer-dist --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile script: - - vendor/bin/phpunit externallinks/tests + - if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit; fi + - if [[ $PHPUNIT_COVERAGE_TEST ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml; fi + - if [[ $PHPCS_TEST ]]; then vendor/bin/phpcs --ignore=install.php src/ tests/ *.php; fi + +after_success: + - if [[ $PHPUNIT_COVERAGE_TEST ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.xml; fi diff --git a/.tx/config b/.tx/config deleted file mode 100644 index 360a807..0000000 --- a/.tx/config +++ /dev/null @@ -1,8 +0,0 @@ -[main] -host = https://www.transifex.com - -[silverstripe-externallinks.master] -file_filter = lang/.yml -source_file = lang/en.yml -source_lang = en -type = YML diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..230b4ed --- /dev/null +++ b/codecov.yml @@ -0,0 +1,2 @@ +comment: false + diff --git a/composer.json b/composer.json index 757ad21..4ccbd0d 100644 --- a/composer.json +++ b/composer.json @@ -1,28 +1,40 @@ { - "name": "silverstripe/externallinks", - "description": "Adds tracking of external broken links to the SilverStripe CMS", - "type": "silverstripe-vendormodule", - "keywords": ["silverstripe", "broken", "links", "href"], - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Kirk Mayo", - "email": "kirk@silverstripe.com" - } - ], - "require": { - "silverstripe/recipe-cms": "^1.0" - }, - "require-dev": { - "hafriedlander/silverstripe-phockito": "*", - "phpunit/PHPUnit": "^3.7" - }, - "suggest": { - "silverstripe/queuedjobs": "Speeds up running the job for Content Editors fropm the report" - }, - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - } + "name": "silverstripe/externallinks", + "description": + "Adds tracking of broken external links to the SilverStripe CMS", + "type": "silverstripe-vendormodule", + "keywords": ["silverstripe", "broken", "links", "href"], + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Kirk Mayo", + "email": "kirk@silverstripe.com" + } + ], + "require": { + "silverstripe/recipe-cms": "^1.0" + }, + "require-dev": { + "hafriedlander/silverstripe-phockito": "*", + "phpunit/PHPUnit": "^5.7", + "squizlabs/php_codesniffer": "^3.0" + }, + "suggest": { + "silverstripe/queuedjobs": + "Provides a more efficient method of generating/updating the report" + }, + "autoload": { + "psr-4": { + "SilverStripe\\ExternalLinks\\": "src/", + "SilverStripe\\ExternalLinks\\Tests\\": "tests/" + } + }, + "extra": { + "expose": ["javascript"], + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/license.md b/license.md index 9445c8e..8794670 100644 --- a/license.md +++ b/license.md @@ -1,4 +1,4 @@ -Copyright (c) 2016, SilverStripe Limited +Copyright (c) 2017, SilverStripe Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..1b984f8 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,9 @@ + + + CodeSniffer ruleset for SilverStripe coding conventions. + + + + + + diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..b543ea6 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,13 @@ + + + tests/ + + + + src/ + + tests/ + + + + diff --git a/code/controllers/CMSExternalLinks.php b/src/Controllers/CMSExternalLinks.php similarity index 100% rename from code/controllers/CMSExternalLinks.php rename to src/Controllers/CMSExternalLinks.php diff --git a/code/jobs/CheckExternalLinksJob.php b/src/Jobs/CheckExternalLinksJob.php similarity index 100% rename from code/jobs/CheckExternalLinksJob.php rename to src/Jobs/CheckExternalLinksJob.php diff --git a/code/model/BrokenExternalLink.php b/src/Model/BrokenExternalLink.php similarity index 100% rename from code/model/BrokenExternalLink.php rename to src/Model/BrokenExternalLink.php diff --git a/code/model/BrokenExternalPageTrack.php b/src/Model/BrokenExternalPageTrack.php similarity index 100% rename from code/model/BrokenExternalPageTrack.php rename to src/Model/BrokenExternalPageTrack.php diff --git a/code/model/BrokenExternalPageTrackStatus.php b/src/Model/BrokenExternalPageTrackStatus.php similarity index 100% rename from code/model/BrokenExternalPageTrackStatus.php rename to src/Model/BrokenExternalPageTrackStatus.php diff --git a/code/reports/BrokenExternalLinksReport.php b/src/Reports/BrokenExternalLinksReport.php similarity index 100% rename from code/reports/BrokenExternalLinksReport.php rename to src/Reports/BrokenExternalLinksReport.php diff --git a/code/tasks/CheckExternalLinksTask.php b/src/Tasks/CheckExternalLinksTask.php similarity index 100% rename from code/tasks/CheckExternalLinksTask.php rename to src/Tasks/CheckExternalLinksTask.php diff --git a/code/tasks/CurlLinkChecker.php b/src/Tasks/CurlLinkChecker.php similarity index 100% rename from code/tasks/CurlLinkChecker.php rename to src/Tasks/CurlLinkChecker.php diff --git a/code/tasks/LinkChecker.php b/src/Tasks/LinkChecker.php similarity index 100% rename from code/tasks/LinkChecker.php rename to src/Tasks/LinkChecker.php