diff --git a/.gitattributes b/.gitattributes index 475f5f2..2cab225 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ /.gitignore export-ignore /.travis.yml export-ignore /.scrutinizer.yml export-ignore +/codecov.yml 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 61b0c9f..4625fbf 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,5 +1,11 @@ inherit: true +build: + nodes: + analysis: + tests: + override: [php-scrutinizer-run] + checks: php: code_rating: true diff --git a/.travis.yml b/.travis.yml index 51c2a67..e5a9263 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,34 +1,35 @@ -# See https://github.com/silverstripe/silverstripe-travis-support for setup details language: php -sudo: false - env: global: - - COMPOSER_ROOT_VERSION=1.0.x-dev - - CORE_RELEASE=4 - # The path of the module when installed by composer - - MODULE_PATH=iframe + - COMPOSER_ROOT_VERSION=2.0.x-dev matrix: - fast_finish: true include: - php: 5.6 - env: DB=MYSQL + env: DB=MYSQL PHPCS_TEST=1 PHPUNIT_TEST=1 - php: 7.0 - env: DB=MYSQL + env: DB=MYSQL PHPUNIT_TEST=1 - php: 7.1 - env: DB=MYSQL + env: DB=MYSQL PHPUNIT_COVERAGE_TEST=1 + - php: 7.2 + env: DB=MYSQL PHPUNIT_TEST=1 before_script: - - composer self-update || true + # Init PHP - phpenv rehash - phpenv config-rm xdebug.ini + - echo 'memory_limit = 2048M' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini + + # Install composer dependencies - composer validate - - git clone git://github.com/silverstripe/silverstripe-travis-support.git ~/travis-support - - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss - - cd ~/builds/ss - - composer install --prefer-dist + - composer require --no-update silverstripe/recipe-cms:1.0.x-dev + - composer install --prefer-dist --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile script: - - vendor/bin/phpunit $MODULE_PATH/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 code/ tests/ *.php; fi + +after_success: + - if [[ $PHPUNIT_COVERAGE_TEST ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.xml; fi diff --git a/_config.php b/_config.php index a4abe2d..b3d9bbc 100644 --- a/_config.php +++ b/_config.php @@ -1,2 +1 @@ removeFieldFromTab('Root.Main', 'Content'); $fields->addFieldToTab('Root.Main', $url = new TextField('IFrameURL', 'Iframe URL')); - $url->setRightTitle('Can be absolute (http://silverstripe.com) or relative to this site (about-us).'); + $url->setRightTitle( + 'Can be absolute (http://silverstripe.com) or relative to this site (about-us).' + ); $fields->addFieldToTab( 'Root.Main', DropdownField::create('ForceProtocol', 'Force protocol?') ->setSource(array('http://' => 'http://', 'https://' => 'https://')) ->setEmptyString('') - ->setDescription('Avoids mixed content warnings when iframe content is just available under a specific protocol'), + ->setDescription( + 'Avoids mixed content warnings when iframe content is just available under a specific protocol' + ), 'Metadata' ); - $fields->addFieldToTab('Root.Main', new CheckboxField('AutoHeight', 'Auto height (only works with same domain URLs)')); - $fields->addFieldToTab('Root.Main', new CheckboxField('AutoWidth', 'Auto width (100% of the available space)')); - $fields->addFieldToTab('Root.Main', new NumericField('FixedHeight', 'Fixed height (in pixels)')); - $fields->addFieldToTab('Root.Main', new NumericField('FixedWidth', 'Fixed width (in pixels)')); - $fields->addFieldToTab('Root.Main', new HtmlEditorField('Content', 'Content (appears above iframe)')); - $fields->addFieldToTab('Root.Main', new HtmlEditorField('BottomContent', 'Content (appears below iframe)')); - $fields->addFieldToTab('Root.Main', new HtmlEditorField('AlternateContent', 'Alternate Content (appears when user has iframes disabled)')); + $fields->addFieldsToTab('Root.Main', [ + CheckboxField::create('AutoHeight', 'Auto height (only works with same domain URLs)'), + CheckboxField::create('AutoWidth', 'Auto width (100% of the available space)'), + NumericField::create('FixedHeight', 'Fixed height (in pixels)'), + NumericField::create('FixedWidth', 'Fixed width (in pixels)'), + HtmlEditorField::create('Content', 'Content (appears above iframe)'), + HtmlEditorField::create('BottomContent', 'Content (appears below iframe)'), + HtmlEditorField::create('AlternateContent', 'Alternate Content (appears when user has iframes disabled)') + ]); // Move the Metadata field to last position, but make a check for it's // existence first. diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..69cb760 --- /dev/null +++ b/codecov.yml @@ -0,0 +1 @@ +comment: false diff --git a/composer.json b/composer.json index 1c636c0..8fbb328 100644 --- a/composer.json +++ b/composer.json @@ -11,10 +11,11 @@ } ], "require": { - "silverstripe/recipe-cms": "^1" + "silverstripe/cms": "^4.0" }, "require-dev": { - "phpunit/PHPUnit": "^5.7" + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.0" }, "autoload": { "psr-4": { 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..50a2f92 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,13 @@ + + + tests/ + + + + code/ + + tests/ + + + + diff --git a/tests/IFramePageTest.php b/tests/IFramePageTest.php index 2b178a8..fbe0ed7 100644 --- a/tests/IFramePageTest.php +++ b/tests/IFramePageTest.php @@ -12,18 +12,6 @@ class IFramePageTest extends SapphireTest { protected $usesDatabase = true; - public function setUp() - { - parent::setUp(); - Config::nest(); - } - - public function tearDown() - { - Config::unnest(); - parent::tearDown(); - } - public function testGetClass() { $iframe = new IFramePage(); @@ -109,40 +97,40 @@ class IFramePageTest extends SapphireTest $page->URLSegment = 'iframe'; $page->IFrameURL = 'http://target.com'; - Config::inst()->update(Director::class, 'alternate_protocol', 'http'); - Config::inst()->update(Director::class, 'alternate_base_url', 'http://host.com'); + Config::modify()->set(Director::class, 'alternate_protocol', 'http'); + Config::modify()->set(Director::class, 'alternate_base_url', 'http://host.com'); $page->ForceProtocol = ''; $controller = new IFramePageController($page); $controller->doInit(); $response = $controller->getResponse(); $this->assertNull($response->getHeader('Location')); - Config::inst()->update(Director::class, 'alternate_protocol', 'https'); - Config::inst()->update(Director::class, 'alternate_base_url', 'https://host.com'); + Config::modify()->set(Director::class, 'alternate_protocol', 'https'); + Config::modify()->set(Director::class, 'alternate_base_url', 'https://host.com'); $page->ForceProtocol = ''; $controller = new IFramePageController($page); $controller->doInit(); $response = $controller->getResponse(); $this->assertNull($response->getHeader('Location')); - Config::inst()->update(Director::class, 'alternate_protocol', 'http'); - Config::inst()->update(Director::class, 'alternate_base_url', 'http://host.com'); + Config::modify()->set(Director::class, 'alternate_protocol', 'http'); + Config::modify()->set(Director::class, 'alternate_base_url', 'http://host.com'); $page->ForceProtocol = 'http://'; $controller = new IFramePageController($page); $controller->doInit(); $response = $controller->getResponse(); $this->assertNull($response->getHeader('Location')); - Config::inst()->update(Director::class, 'alternate_protocol', 'http'); - Config::inst()->update(Director::class, 'alternate_base_url', 'http://host.com'); + Config::modify()->set(Director::class, 'alternate_protocol', 'http'); + Config::modify()->set(Director::class, 'alternate_base_url', 'http://host.com'); $page->ForceProtocol = 'https://'; $controller = new IFramePageController($page); $controller->doInit(); $response = $controller->getResponse(); $this->assertEquals($response->getHeader('Location'), 'https://host.com/iframe/'); - Config::inst()->update(Director::class, 'alternate_protocol', 'https'); - Config::inst()->update(Director::class, 'alternate_base_url', 'https://host.com'); + Config::modify()->set(Director::class, 'alternate_protocol', 'https'); + Config::modify()->set(Director::class, 'alternate_base_url', 'https://host.com'); $page->ForceProtocol = 'http://'; $controller = new IFramePageController($page); $controller->doInit();