diff --git a/.gitignore b/.gitignore index 0e9cb33bbf6c8595c9c9458fca0f41ee146f2157..b9438a85c50b8990c869a76af1fb416ca511b6d9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ composer.lock docs/_build build/ phpunit.xml -behat.yml \ No newline at end of file +behat.yml +docker-compose.yml \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 854a802e7b943d4c2f261bd62928f872eac7fd21..f894eeeccf8922e8ae52a0420a7489fe363da4c0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,36 +1,43 @@ sudo: required +language: php + +php: +- 5.6 +- 7.1 + +git: + depth: 1 services: - - docker - - docker-compose +- docker env: global: - - DOCKER_COMPOSE_VERSION=1.17.1 + - DOCKER_COMPOSE_VERSION=1.17.1 matrix: - - DRUPAL_VERSION=8.5.x-dev - - DRUPAL_VERSION=8.6.x-dev + - DRUPAL_VERSION=~8.5 + - DRUPAL_VERSION=~8.6@rc + - DRUPAL_VERSION=8.7.x-dev matrix: allow_failures: - - env: DRUPAL_VERSION=8.6.x-dev + - env: DRUPAL_VERSION=8.7.x-dev before_install: - - docker-compose up -d - - docker ps +- cp docker-compose.yml.dist docker-compose.yml +- docker-compose up -d install: - - docker-compose exec -u root php composer require drupal/core:$DRUPAL_VERSION --dev --prefer-dist +- docker-compose exec -u root php composer require webflo/drupal-core-require-dev:$DRUPAL_VERSION --dev before_script: - - docker-compose exec -u root php ./vendor/bin/run drupal:site-setup - - docker-compose exec -u root php ./vendor/bin/run drupal:site-install - - docker-compose exec -u root php chown -R www-data:www-data build +- docker-compose exec -u root php ./vendor/bin/run drupal:site-install +- docker-compose exec -u root php chown -R www-data:www-data build script: - - docker-compose exec -u root php ./vendor/bin/grumphp run - - docker-compose exec -u root php ./vendor/bin/phpunit - - docker-compose exec -u root php ./vendor/bin/behat +- docker-compose exec -u root php ./vendor/bin/grumphp run +- docker-compose exec -u root php ./vendor/bin/phpunit +- docker-compose exec -u root php ./vendor/bin/behat notifications: email: false \ No newline at end of file diff --git a/behat.yml.dist b/behat.yml.dist index d207f10df142d6d9686a5e5ab4307a27616e8b03..8e4da865c334043eba0ea482301484266b46d483 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -19,8 +19,10 @@ default: extensions: Behat\MinkExtension: goutte: ~ + browser_name: chrome selenium2: wd_host: 'http://selenium:4444/wd/hub' + capabilities: { "browser": "chrome", "version": "*" } javascript_session: selenium2 base_url: "${drupal.base_url}" NuvoleWeb\Drupal\DrupalExtension: diff --git a/composer.json b/composer.json index db58d06ce347486811859922f59dff20d8dff620..9c4b113de0e4a800426b599ca7e5c4fb7427ae6e 100644 --- a/composer.json +++ b/composer.json @@ -15,11 +15,10 @@ "require-dev": { "cweagans/composer-patches": "~1.0", "drupal-composer/drupal-scaffold": "^2.2", - "drupal/config_installer": "1.3.0", + "drupal/config_installer": "~1", "drupal/console": "~1", - "drush/drush": "*", - "drupal/core": "8.5.x-dev", - "webflo/drupal-core-require-dev": "^8.5", + "drush/drush": "~9", + "webflo/drupal-core-require-dev": "~8.6@rc", "drupal/ds": "~3", "drupal/field_group": "~1", "drupal/coffee": "~1", @@ -30,8 +29,7 @@ "drupal/token": "~1", "drupal/bootstrap": "3.1", "nuvoleweb/drupal-behat": "~1.1.0", - "phpro/grumphp": "0.11.4", - "peridot-php/leo": "^1.6", + "phpro/grumphp": "~0.14", "openeuropa/task-runner": "^0.4" }, "repositories": [ @@ -41,16 +39,19 @@ } ], "autoload": { - "psr-4": {"Drupal\\ui_patterns\\": "src" + "psr-4": { + "Drupal\\ui_patterns\\": "./src" } }, "autoload-dev": { "psr-4": { - "Drupal\\Tests\\ui_patterns\\": "tests/src" + "Drupal\\Tests\\ui_patterns\\": "./tests/src" } }, "scripts": { - "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold" + "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold", + "post-install-cmd": "./vendor/bin/run drupal:site-setup", + "post-update-cmd": "./vendor/bin/run drupal:site-setup" }, "extra": { "patches": { @@ -64,5 +65,8 @@ "build/profiles/contrib/{$name}": ["type:drupal-profile"], "build/themes/contrib/{$name}": ["type:drupal-theme"] } + }, + "config": { + "sort-packages": true } } diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index f22ff5f551ebe159cb35a94669cc023e8a75df48..0000000000000000000000000000000000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,63 +0,0 @@ -version: "2" - -services: - mariadb: - image: wodby/mariadb:10.1-2.3.5 - environment: - MYSQL_ROOT_PASSWORD: password - MYSQL_DATABASE: drupal - MYSQL_USER: drupal - MYSQL_PASSWORD: drupal - - php: - image: wodby/drupal-php:7.0-3.0.0 - environment: - PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025 - PHP_FPM_CLEAR_ENV: "no" - DB_HOST: mariadb - DB_USER: drupal - DB_PASSWORD: drupal - DB_NAME: drupal - DB_DRIVER: mysql - PHP_XDEBUG: 1 - PHP_XDEBUG_DEFAULT_ENABLE: 1 - PHP_XDEBUG_REMOTE_CONNECT_BACK: 1 - PHP_XDEBUG_REMOTE_HOST: "10.254.254.254" - PHP_XDEBUG_IDEKEY: "PHPSTORM" - PHP_IDE_CONFIG: "serverName=ui_patterns" - volumes: - - ./:/var/www/html - - nginx: - image: wodby/drupal-nginx:8-1.13-3.0.1 - depends_on: - - php - environment: - NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off" - NGINX_ERROR_LOG_LEVEL: debug - NGINX_BACKEND_HOST: php - NGINX_SERVER_ROOT: /var/www/html/build - volumes: - - ./:/var/www/html - labels: - - 'traefik.backend=nginx' - - 'traefik.port=80' - - 'traefik.frontend.rule=Host:ui_patterns.localhost' - - traefik: - image: traefik - command: -c /dev/null --web --docker --logLevel=INFO - ports: - - '80:80' - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - selenium: - image: selenium/standalone-firefox-debug:2.53.1-beryllium - ports: - - "5900:5900" - expose: - - '4444' - -volumes: - codebase: diff --git a/docker-compose.yml.dist b/docker-compose.yml.dist new file mode 100644 index 0000000000000000000000000000000000000000..fb5bc454e20d6ddaac0018e9228c8906dbbe9a94 --- /dev/null +++ b/docker-compose.yml.dist @@ -0,0 +1,78 @@ +version: "2" + +services: + + mariadb: + image: wodby/mariadb:10.1-3.3.0 + stop_grace_period: 30s + environment: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: drupal + MYSQL_USER: drupal + MYSQL_PASSWORD: drupal + + php: + image: wodby/drupal-php:${TRAVIS_PHP_VERSION}-4.6.3 + environment: + PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025 + DB_HOST: mariadb + DB_USER: drupal + DB_PASSWORD: drupal + DB_NAME: drupal + DB_DRIVER: mysql + PHP_XDEBUG: 1 + PHP_XDEBUG_DEFAULT_ENABLE: 1 + PHP_XDEBUG_REMOTE_CONNECT_BACK: 1 + PHP_XDEBUG_REMOTE_HOST: "10.254.254.254" + PHP_XDEBUG_IDEKEY: "PHPSTORM" + PHP_IDE_CONFIG: "serverName=ui_patterns" + volumes: + - ./:/var/www/html + + nginx: + image: wodby/nginx:1.15-5.0.0 + depends_on: + - php + environment: + NGINX_STATIC_OPEN_FILE_CACHE: "off" + NGINX_ERROR_LOG_LEVEL: debug + NGINX_BACKEND_HOST: php + NGINX_SERVER_ROOT: /var/www/html/build + NGINX_VHOST_PRESET: drupal8 + volumes: + - ./:/var/www/html + labels: + - 'traefik.backend=nginx' + - 'traefik.port=80' + - 'traefik.frontend.rule=Host:ui_patterns.localhost' + + traefik: + image: traefik + command: -c /dev/null --web --docker --logLevel=INFO + ports: + - '80:80' + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + # If you would like to see what is going on you can run the following on your host: + # docker run --rm -p 4444:4444 -p 5900:5900 --network="host" selenium/standalone-chrome-debug:latest + # Newer version of this image might run into this issue: + # @link https://github.com/elgalu/docker-selenium/issues/20 + selenium: + image: selenium/standalone-chrome-debug:3.11 + expose: + - '4444' + environment: + - DISPLAY=:99 + - SE_OPTS=-debug + - SCREEN_WIDTH=1280 + - SCREEN_HEIGHT=800 + - VNC_NO_PASSWORD=1 + ports: + - '4444:4444' + - "5900:5900" + volumes: + - /dev/shm:/dev/shm + +volumes: + codebase: diff --git a/tests/features/bootstrap/FeatureContext.php b/tests/features/bootstrap/FeatureContext.php index 0737faffbd333318d8e9f1576c509bc63e6faae9..7b16bbc2ade7199ec97a49a102cf8bc62ce7a6a8 100644 --- a/tests/features/bootstrap/FeatureContext.php +++ b/tests/features/bootstrap/FeatureContext.php @@ -29,7 +29,9 @@ class FeatureContext extends RawDrupalContext { public function assertModulesEnabled(TableNode $table) { $rows = $table->getRows(); foreach ($rows as $row) { - expect(\Drupal::moduleHandler()->moduleExists($row[0]))->to->be->true("Module '{$row[0]}' should be enabled but it is not."); + if (!\Drupal::moduleHandler()->moduleExists($row[0])) { + throw new \Exception("Module '{$row[0]}' should be enabled but it is not."); + } } } diff --git a/tests/src/Kernel/Plugin/Deriver/YamlDeriverTest.php b/tests/src/Kernel/Plugin/Deriver/YamlDeriverTest.php index 491f4b6608f1dd9ae0785e0c387a2b37196a2746..9e2523a911c1aa3cab18e69647df94f36567ac19 100644 --- a/tests/src/Kernel/Plugin/Deriver/YamlDeriverTest.php +++ b/tests/src/Kernel/Plugin/Deriver/YamlDeriverTest.php @@ -19,7 +19,7 @@ class YamlDeriverTest extends AbstractUiPatternsTest { */ public function testGetDerivativeDefinitions() { foreach (UiPatterns::getManager()->getDefinitions() as $definition) { - expect($definition)->to->have->keys(['id', 'provider', 'base path']); + $this->assertArrayHasKey(['id', 'provider', 'base path'], $definition); } } diff --git a/tests/src/Kernel/Plugin/PatternBaseTest.php b/tests/src/Kernel/Plugin/PatternBaseTest.php index 07ed30ac630956f66a58fa67bf4bcf7bb905c14f..11988470b81944f217d54f9c82ce3530af4961b9 100644 --- a/tests/src/Kernel/Plugin/PatternBaseTest.php +++ b/tests/src/Kernel/Plugin/PatternBaseTest.php @@ -26,7 +26,7 @@ class PatternBaseTest extends AbstractUiPatternsTest { /** @var \Drupal\ui_patterns\Plugin\PatternBase $pattern */ $libraries = $pattern->getLibraryDefinitions(); - expect($libraries)->to->loosely->equal($item['expected']); + $this->assertEquals($item['expected'], $libraries); } } diff --git a/tests/src/Kernel/TypedData/PatternDataDefinitionTest.php b/tests/src/Kernel/TypedData/PatternDataDefinitionTest.php index 8727590fc25b5ebb98587d0b091d58c08a993ee6..e99e2f436393c6b2bd0cf4641e806d6da337c6f9 100644 --- a/tests/src/Kernel/TypedData/PatternDataDefinitionTest.php +++ b/tests/src/Kernel/TypedData/PatternDataDefinitionTest.php @@ -26,7 +26,7 @@ class PatternDataDefinitionTest extends AbstractUiPatternsTest { foreach ($violations as $violation) { $actual[] = $violation->getPropertyPath() . ': ' . $violation->getMessage(); } - expect($actual)->to->equal($expected); + $this->assertEquals($expected, $actual); } /** diff --git a/tests/src/Kernel/UiPatternsManagerTest.php b/tests/src/Kernel/UiPatternsManagerTest.php index 0ce777ef6d158832daec66e28e55e046fa02a42c..093b28c567c704dbddbd949b71bca3a5fcec6640 100644 --- a/tests/src/Kernel/UiPatternsManagerTest.php +++ b/tests/src/Kernel/UiPatternsManagerTest.php @@ -21,7 +21,7 @@ class UiPatternsManagerTest extends AbstractUiPatternsTest { $definitions = $manager->getDefinitions(); foreach ($manager->getPatterns() as $pattern) { - expect($pattern->getBaseId())->to->equal($definitions[$pattern->getPluginId()]->id()); + $this->assertEquals($definitions[$pattern->getPluginId()]->id(), $pattern->getBaseId()); } } diff --git a/tests/src/Kernel/UiPatternsSourceManagerTest.php b/tests/src/Kernel/UiPatternsSourceManagerTest.php index b8a6124a28fb04c2c74a6427aa5f0e6cf5438d2d..97d116156cb39efeb0b2bb6447fa92ba3c33ec65 100644 --- a/tests/src/Kernel/UiPatternsSourceManagerTest.php +++ b/tests/src/Kernel/UiPatternsSourceManagerTest.php @@ -19,9 +19,8 @@ class UiPatternsSourceManagerTest extends AbstractUiPatternsTest { $plugin_manager = \Drupal::service('plugin.manager.ui_patterns_source'); $definitions = $plugin_manager->getDefinitions(); - expect($definitions) - ->to->not->be->empty() - ->and->to->have->keys(['test_source']); + $this->assertNotEmpty($definitions); + $this->assertArrayHasKey('test_source', $definitions); $expected = [ ['name' => 'field_1', 'label' => 'Field 1'], @@ -34,8 +33,8 @@ class UiPatternsSourceManagerTest extends AbstractUiPatternsTest { /** @var \Drupal\ui_patterns\Plugin\PatternSourceBase $plugin */ $plugin = $plugin_manager->createInstance('test_source'); foreach ($plugin->getSourceFields() as $key => $field) { - expect($field->getFieldName())->to->equal($expected[$key]['name']); - expect($field->getFieldLabel())->to->equal($expected[$key]['label']); + $this->assertEquals($expected[$key]['name'], $field->getFieldName()); + $this->assertEquals($expected[$key]['label'], $field->getFieldLabel()); } } diff --git a/tests/src/Unit/Definition/PatternDefinitionTest.php b/tests/src/Unit/Definition/PatternDefinitionTest.php index 9942c0786c917e0d922d38e57cb02faa0b6c6e6a..8abd236c78650c7dd699673b465809c3f61f2a0a 100644 --- a/tests/src/Unit/Definition/PatternDefinitionTest.php +++ b/tests/src/Unit/Definition/PatternDefinitionTest.php @@ -20,7 +20,7 @@ class PatternDefinitionTest extends AbstractUiPatternsTest { */ public function testGettersSetters($getter, $name, $value) { $pattern_definition = new PatternDefinition([$name => $value]); - expect($value)->to->equal(call_user_func([$pattern_definition, $getter])); + $this->assertEquals(call_user_func([$pattern_definition, $getter]), $value); } /** @@ -37,18 +37,37 @@ class PatternDefinitionTest extends AbstractUiPatternsTest { ]; $pattern_definition = new PatternDefinition(); $pattern_definition->setFields($fields); - expect($pattern_definition->getField('name')->getLabel())->to->equal($fields['name']['label']); - expect($pattern_definition->getField('name')->getName())->to->equal($fields['name']['name']); - expect($pattern_definition->getField('name')->getType())->to->equal(NULL); - expect($pattern_definition->getField('name')->getDescription())->to->equal(NULL); - expect($pattern_definition->getField('name')->getPreview())->to->equal(NULL); + $this->assertEquals( + [ + $fields['name']['label'], + $fields['name']['name'], + NULL, + NULL, + NULL, + ], + [ + $pattern_definition->getField('name')->getLabel(), + $pattern_definition->getField('name')->getName(), + $pattern_definition->getField('name')->getType(), + $pattern_definition->getField('name')->getDescription(), + $pattern_definition->getField('name')->getPreview(), + ]); $pattern_definition->getField('name')->setType('type'); $pattern_definition->getField('name')->setPreview('preview'); $pattern_definition->getField('name')->setDescription('description'); - expect($pattern_definition->getField('name')->getType())->to->equal('type'); - expect($pattern_definition->getField('name')->getDescription())->to->equal('description'); - expect($pattern_definition->getField('name')->getPreview())->to->equal('preview'); + + $this->assertEquals( + [ + 'type', + 'description', + 'preview', + ], + [ + $pattern_definition->getField('name')->getType(), + $pattern_definition->getField('name')->getDescription(), + $pattern_definition->getField('name')->getPreview(), + ]); } /** @@ -59,7 +78,7 @@ class PatternDefinitionTest extends AbstractUiPatternsTest { public function testFieldsProcessing($actual, $expected) { $pattern_definition = new PatternDefinition(); $data = $pattern_definition->setFields($actual)->toArray(); - expect($data['fields'])->to->be->loosely->equal($expected); + $this->assertEquals($expected, $data['fields']); } /** diff --git a/tests/src/Unit/Element/PatternPreviewTest.php b/tests/src/Unit/Element/PatternPreviewTest.php index bad88b799e901c703eb445404959f84a75b2fa92..3bd41623bbbf504c01bcd29e2496de6786bb5f2d 100644 --- a/tests/src/Unit/Element/PatternPreviewTest.php +++ b/tests/src/Unit/Element/PatternPreviewTest.php @@ -22,7 +22,7 @@ class PatternPreviewTest extends AbstractUiPatternsTest { $assertions = Yaml::decode(file_get_contents($this->getFixturePath() . '/preview_markup.yml')); foreach ($assertions as $assertion) { $result = PatternPreview::getPreviewMarkup($assertion['actual']); - expect($assertion['expected'])->to->equal($result); + $this->assertEquals($assertion['expected'], $result); } }