diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..9e7c8382 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,3 @@ +comment: false +codecov: + branch: master diff --git a/.travis.yml b/.travis.yml index 9b516338..00f1a969 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,12 +34,13 @@ matrix: - php: 5.6 env: NPM_TEST=1 - php: 7.0 - env: DB=MYSQL PDO=1 PHPUNIT_TEST=1 + env: DB=MYSQL PDO=1 PHPUNIT_COVERAGE_TEST=1 before_script: - composer self-update || true - phpenv rehash - phpenv config-rm xdebug.ini + - echo 'memory_limit = 2G' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - composer install --prefer-dist - "if [ \"$DB\" = \"PGSQL\" ]; then composer require silverstripe/postgresql:2.0.x-dev --prefer-dist; fi" - "if [ \"$DB\" = \"SQLITE\" ]; then composer require silverstripe/sqlite3:2.0.x-dev --prefer-dist; fi" @@ -56,6 +57,8 @@ script: - "if [ \"$PHPUNIT_TEST\" = \"1\" ]; then vendor/bin/phpunit tests flush=1; fi" - "if [ \"$BEHAT_TEST\" = \"1\" ]; then vendor/bin/behat .; fi" - "if [ \"$NPM_TEST\" = \"1\" ]; then (nvm use 4 && npm run lint); fi" + - "if [ \"$PHPUNIT_COVERAGE_TEST\" = \"1\" ]; then phpdbg -qrr vendor/bin/phpunit tests flush=1 --coverage-clover=coverage.xml; fi" + - "if [ \"$PHPUNIT_COVERAGE_TEST\" = \"1\" ]; then bash <(curl -s https://codecov.io/bash) -f coverage.xml; fi" after_failure: - php ~/travis-support/travis_upload_artifacts.php --if-env BEHAT_TEST,ARTIFACTS_BUCKET,ARTIFACTS_KEY,ARTIFACTS_SECRET --target-path $TRAVIS_REPO_SLUG/$TRAVIS_BUILD_ID/$TRAVIS_JOB_ID --artifacts-base-url https://s3.amazonaws.com/$ARTIFACTS_BUCKET/ diff --git a/README.md b/README.md index f2e0e54b..3ce7c8a8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,13 @@ ## SilverStripe CMS -[![Build Status](https://secure.travis-ci.org/silverstripe/silverstripe-cms.png?branch=master)](http://travis-ci.org/silverstripe/silverstripe-cms) +[![Build Status](https://api.travis-ci.org/silverstripe/silverstripe-cms.svg?branch=master)](https://travis-ci.org/silverstripe/silverstripe-cms) +[![Latest Stable Version](https://poser.pugx.org/silverstripe/cms/version.svg)](http://www.silverstripe.org/stable-download/) +[![Latest Unstable Version](https://poser.pugx.org/silverstripe/cms/v/unstable.svg)](https://packagist.org/packages/silverstripe/cms) +[![codecov](https://codecov.io/gh/silverstripe/silverstripe-cms/branch/master/graph/badge.svg)](https://codecov.io/gh/silverstripe/silverstripe-cms) +[![Total Downloads](https://poser.pugx.org/silverstripe/cms/downloads.svg)](https://packagist.org/packages/silverstripe/cms) +[![License](https://poser.pugx.org/silverstripe/cms/license.svg)](https://github.com/silverstripe/silverstripe-cms#license) +[![Dependency Status](https://www.versioneye.com/php/silverstripe:cms/badge.svg)](https://www.versioneye.com/php/silverstripe:cms) +[![Reference Status](https://www.versioneye.com/php/silverstripe:cms/reference_badge.svg?style=flat)](https://www.versioneye.com/php/silverstripe:cms/references) ![helpfulrobot](https://helpfulrobot.io/silverstripe/cms/badge) PHP5 Content Management System (CMS), see [http://silverstripe.org](http://silverstripe.org). Requires the [`framework`](http://github.com/silverstripe/silverstripe-framework) module and a [`silverstripe-installer`](http://github.com/silverstripe/silverstripe-installer) base project. diff --git a/_config.php b/_config.php index 6e13b509..6bfb33eb 100644 --- a/_config.php +++ b/_config.php @@ -11,7 +11,7 @@ use SilverStripe\Assets\File; */ define('CMS_PATH', realpath(__DIR__)); if(strpos(CMS_PATH, BASE_PATH) === 0) { - define('CMS_DIR', trim(substr(CMS_PATH, strlen(BASE_PATH)), '/')); + define('CMS_DIR', trim(substr(CMS_PATH, strlen(BASE_PATH)), DIRECTORY_SEPARATOR)); } else { throw new Exception("Path error: CMS_PATH " . CMS_PATH . " not within BASE_PATH " . BASE_PATH); } diff --git a/code/Model/RedirectorPage.php b/code/Model/RedirectorPage.php index b73c3686..894973df 100644 --- a/code/Model/RedirectorPage.php +++ b/code/Model/RedirectorPage.php @@ -6,7 +6,6 @@ use SilverStripe\Forms\HeaderField; use SilverStripe\Forms\OptionsetField; use SilverStripe\Forms\TextField; use SilverStripe\Forms\TreeDropdownField; -use SilverStripe\View\Requirements; use Page; /** @@ -139,8 +138,6 @@ class RedirectorPage extends Page { } public function getCMSFields() { - Requirements::javascript(CMS_DIR . '/client/dist/js/RedirectorPage.js'); - $fields = parent::getCMSFields(); $fields->removeByName('Content', true); diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 4bfdbc59..a30a8a3a 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,21 +1,3 @@ - @@ -26,12 +8,6 @@ - - - sanitychecks - - - . diff --git a/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_Content.ss b/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_Content.ss index aca889e1..f2591c9e 100644 --- a/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_Content.ss +++ b/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_Content.ss @@ -1,4 +1,4 @@ -
+
$Tools @@ -30,7 +30,7 @@
-
+
$EditForm
diff --git a/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_PreviewPanel.ss b/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_PreviewPanel.ss index 9500d96b..4de4fecb 100644 --- a/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_PreviewPanel.ss +++ b/templates/SilverStripe/CMS/Controllers/Includes/CMSMain_PreviewPanel.ss @@ -1,9 +1,11 @@
-
+
<%t CMSPageHistoryController_versions_ss.PREVIEW 'Website preview' %>
-
-
- +
+
+
+ +
diff --git a/tests/controller/ContentControllerTest.php b/tests/controller/ContentControllerTest.php index a7890d34..796ead3f 100755 --- a/tests/controller/ContentControllerTest.php +++ b/tests/controller/ContentControllerTest.php @@ -145,7 +145,7 @@ class ContentControllerTest extends FunctionalTest { /** * Tests that {@link ContentController::getViewer()} chooses the correct templates. * - * @covers ContentController::getViewer() + * @covers SilverStripe\CMS\Controllers\ContentController::getViewer() **/ public function testGetViewer() { diff --git a/tests/model/ErrorPageFileExtensionTest.php b/tests/model/ErrorPageFileExtensionTest.php index 804f35fc..c789d8fe 100644 --- a/tests/model/ErrorPageFileExtensionTest.php +++ b/tests/model/ErrorPageFileExtensionTest.php @@ -5,6 +5,8 @@ use SilverStripe\Assets\File; use SilverStripe\Control\Session; use SilverStripe\View\Parsers\ShortcodeParser; use SilverStripe\Dev\SapphireTest; +use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore; + class ErrorPageFileExtensionTest extends SapphireTest { @@ -17,7 +19,7 @@ class ErrorPageFileExtensionTest extends SapphireTest { parent::setUp(); $this->versionedMode = Versioned::get_reading_mode(); Versioned::set_stage(Versioned::DRAFT); - AssetStoreTest_SpyStore::activate('ErrorPageFileExtensionTest'); + TestAssetStore::activate('ErrorPageFileExtensionTest'); $file = new File(); $file->setFromString('dummy', 'dummy.txt'); $file->write(); @@ -25,7 +27,7 @@ class ErrorPageFileExtensionTest extends SapphireTest { public function tearDown() { Versioned::set_reading_mode($this->versionedMode); - AssetStoreTest_SpyStore::reset(); + TestAssetStore::reset(); parent::tearDown(); // TODO: Change the autogenerated stub } diff --git a/tests/model/ErrorPageTest.php b/tests/model/ErrorPageTest.php index dd1dc7f5..eef48b9f 100644 --- a/tests/model/ErrorPageTest.php +++ b/tests/model/ErrorPageTest.php @@ -4,6 +4,8 @@ use SilverStripe\ORM\Versioning\Versioned; use SilverStripe\CMS\Model\ErrorPage; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\FunctionalTest; +use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore; + @@ -25,14 +27,14 @@ class ErrorPageTest extends FunctionalTest { public function setUp() { parent::setUp(); // Set temporary asset backend store - AssetStoreTest_SpyStore::activate('ErrorPageTest'); + TestAssetStore::activate('ErrorPageTest'); Config::inst()->update('SilverStripe\\CMS\\Model\\ErrorPage', 'enable_static_file', true); Config::inst()->update('SilverStripe\\Control\\Director', 'environment_type', 'live'); $this->logInWithPermission('ADMIN'); } public function tearDown() { - AssetStoreTest_SpyStore::reset(); + TestAssetStore::reset(); parent::tearDown(); } @@ -88,7 +90,7 @@ class ErrorPageTest extends FunctionalTest { public function testStaticCaching() { // Test new error code does not have static content $this->assertEmpty(ErrorPage::get_content_for_errorcode('401')); - $expectedErrorPagePath = AssetStoreTest_SpyStore::base_path() . '/error-401.html'; + $expectedErrorPagePath = TestAssetStore::base_path() . '/error-401.html'; $this->assertFileNotExists($expectedErrorPagePath, 'Error page is not automatically cached'); // Write new 401 page @@ -101,7 +103,7 @@ class ErrorPageTest extends FunctionalTest { // Static cache should now exist $this->assertNotEmpty(ErrorPage::get_content_for_errorcode('401')); - $expectedErrorPagePath = AssetStoreTest_SpyStore::base_path() . '/error-401.html'; + $expectedErrorPagePath = TestAssetStore::base_path() . '/error-401.html'; $this->assertFileExists($expectedErrorPagePath, 'Error page is cached'); } @@ -126,7 +128,7 @@ class ErrorPageTest extends FunctionalTest { // Static content is not available $this->assertEmpty(ErrorPage::get_content_for_errorcode('405')); - $expectedErrorPagePath = AssetStoreTest_SpyStore::base_path() . '/error-405.html'; + $expectedErrorPagePath = TestAssetStore::base_path() . '/error-405.html'; $this->assertFileNotExists($expectedErrorPagePath, 'Error page is not cached in static location'); } } diff --git a/tests/model/FileLinkTrackingTest.php b/tests/model/FileLinkTrackingTest.php index ed5a4553..716bb9f1 100644 --- a/tests/model/FileLinkTrackingTest.php +++ b/tests/model/FileLinkTrackingTest.php @@ -6,6 +6,8 @@ use SilverStripe\CMS\Model\VirtualPage; use SilverStripe\Assets\File; use SilverStripe\Assets\Filesystem; use SilverStripe\Dev\SapphireTest; +use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore; + @@ -20,13 +22,13 @@ class FileLinkTrackingTest extends SapphireTest { Versioned::set_stage(Versioned::DRAFT); - AssetStoreTest_SpyStore::activate('FileLinkTrackingTest'); + TestAssetStore::activate('FileLinkTrackingTest'); $this->logInWithPermission('ADMIN'); // Write file contents $files = File::get()->exclude('ClassName', 'SilverStripe\\Assets\\Folder'); foreach($files as $file) { - $destPath = AssetStoreTest_SpyStore::getLocalPath($file); + $destPath = TestAssetStore::getLocalPath($file); Filesystem::makeFolder(dirname($destPath)); file_put_contents($destPath, str_repeat('x', 1000000)); // Ensure files are published, thus have public urls @@ -44,7 +46,7 @@ class FileLinkTrackingTest extends SapphireTest { } public function tearDown() { - AssetStoreTest_SpyStore::reset(); + TestAssetStore::reset(); parent::tearDown(); } diff --git a/tests/model/SiteTreeBrokenLinksTest.php b/tests/model/SiteTreeBrokenLinksTest.php index 311efa24..f00332db 100644 --- a/tests/model/SiteTreeBrokenLinksTest.php +++ b/tests/model/SiteTreeBrokenLinksTest.php @@ -7,6 +7,8 @@ use SilverStripe\CMS\Model\VirtualPage; use SilverStripe\CMS\Model\RedirectorPage; use SilverStripe\Assets\File; use SilverStripe\Dev\SapphireTest; +use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore; + @@ -23,12 +25,12 @@ class SiteTreeBrokenLinksTest extends SapphireTest { parent::setUp(); Versioned::set_stage(Versioned::DRAFT); - AssetStoreTest_SpyStore::activate('SiteTreeBrokenLinksTest'); + TestAssetStore::activate('SiteTreeBrokenLinksTest'); $this->logInWithPermission('ADMIN'); } public function tearDown() { - AssetStoreTest_SpyStore::reset(); + TestAssetStore::reset(); parent::tearDown(); } diff --git a/tests/model/SiteTreeHTMLEditorFieldTest.php b/tests/model/SiteTreeHTMLEditorFieldTest.php index bdff016a..80672901 100644 --- a/tests/model/SiteTreeHTMLEditorFieldTest.php +++ b/tests/model/SiteTreeHTMLEditorFieldTest.php @@ -6,6 +6,8 @@ use SilverStripe\Assets\Filesystem; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; use SilverStripe\Dev\CSSContentParser; use SilverStripe\Dev\FunctionalTest; +use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore; + class SiteTreeHTMLEditorFieldTest extends FunctionalTest { protected static $fixture_file = 'SiteTreeHTMLEditorFieldTest.yml'; @@ -14,20 +16,20 @@ class SiteTreeHTMLEditorFieldTest extends FunctionalTest { public function setUp() { parent::setUp(); - AssetStoreTest_SpyStore::activate('SiteTreeHTMLEditorFieldTest'); + TestAssetStore::activate('SiteTreeHTMLEditorFieldTest'); $this->logInWithPermission('ADMIN'); // Write file contents $files = File::get()->exclude('ClassName', 'SilverStripe\\Assets\\Folder'); foreach($files as $file) { - $destPath = AssetStoreTest_SpyStore::getLocalPath($file); + $destPath = TestAssetStore::getLocalPath($file); Filesystem::makeFolder(dirname($destPath)); file_put_contents($destPath, str_repeat('x', 1000000)); } } public function tearDown() { - AssetStoreTest_SpyStore::reset(); + TestAssetStore::reset(); parent::tearDown(); } diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php index 5c72a954..b5ae123a 100644 --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -838,7 +838,7 @@ class SiteTreeTest extends SapphireTest { } /** - * @covers SiteTree::validURLSegment + * @covers SilverStripe\CMS\Model\SiteTree::validURLSegment */ public function testValidURLSegmentURLSegmentConflicts() { $sitetree = new SiteTree(); @@ -869,7 +869,7 @@ class SiteTreeTest extends SapphireTest { } /** - * @covers SiteTree::validURLSegment + * @covers SilverStripe\CMS\Model\SiteTree::validURLSegment */ public function testValidURLSegmentClassNameConflicts() { $sitetree = new SiteTree(); @@ -879,7 +879,7 @@ class SiteTreeTest extends SapphireTest { } /** - * @covers SiteTree::validURLSegment + * @covers SilverStripe\CMS\Model\SiteTree::validURLSegment */ public function testValidURLSegmentControllerConflicts() { Config::inst()->update('SilverStripe\\CMS\\Model\\SiteTree', 'nested_urls', true);