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