thunder / drupal-testing
用于测试 Drupal 项目的脚本。
Requires
- php: >=7.2
- drupal/coder: ^8.3
- symfony/yaml: ^3.4
- dev-master
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-parallel-testing
- dev-dependabot/github_actions/dot-github/workflows/actions/download-artifact-4.1.7
- dev-remove-verbose-phpunit
- dev-TASK-add-upgrade-commands
- dev-allow-discovery-plugin
- dev-cleanup-patches
- dev-kill-pipefail
- dev-add-private-packagist
- dev-combine-lowest-stable
- dev-update-versions
- dev-code-coverage
- dev-feat/lenient-endpoint
- dev-unset-process-timeout
- dev-fix/allow-older-paratest
- dev-simplify
- dev-fault-tolerant-click
- dev-verbose-chromedriver
- dev-fix/increase-ulimits
- dev-verbose-php-server
- dev-feature/paratest
- dev-feature/improvements
This package is auto-updated.
Last update: 2024-09-04 11:48:12 UTC
README
版本
关于
使用此包简化您的 Drupal 项目的测试。这将运行所有标准 Drupal 测试,并额外检查您的源代码是否符合 Drupal 编码风格指南。它可以用于在本地运行这些测试,或在 Travis 或 GitHub Actions 等持续集成平台上。
先决条件
要充分利用此包,您应该考虑向您的模块添加一些内容。
将您的模块名称添加到测试类的 @group 注释中。
如果您的模块名称为 "my_module",请将以下注释添加到您的测试类中
/**
* Tests for my_module.
*
* @group my_module
*/
class MyModuleTest extends ...
为您的模块添加一个 composer.json 文件。
我们使用该文件来自动化不同的任务。我们从其中解析模块名称,并在运行测试之前自动下载所需的 Drupal 模块。
composer.json 可能如下所示
{
"name": "drupal/my_module",
"description": "The description of my_module",
"type": "drupal-module",
"license": "GPL-2.0-or-later",
"require": {
"drupal/another_module": "^2.0"
}
}
不要使用已弃用的 TestBase 类
只有未弃用的(截至 Drupal 8.6)TestBase 类被测试。特别是已弃用的 JavascriptTestBase 不受支持,请使用 WebDriverTestBase 代替。请参阅 JavascriptTestBase 已弃用,由 WebDriverTestBase 取代
设置
请确保您已安装 bash 4 或更高版本。在大多数系统上都是这样。但在 MacOS 上,您需要使用 homebrew 更新内置的 bash。
其他要求
- [jq](https://stedolan.github.io/jq/)
- PHP > 7.2 + extensions needed by Drupal + sqlite extension, if no other database is used.
- [composer](https://getcomposer.org.cn/)
- [node + npm](https://node.org.cn/en/)
要在 Travis 上使用 drupal-testing,您需要做的就是将 .travis.yaml.dist 复制到您的项目根目录,并将其重命名为 .travis.yaml。如果您的模块满足所有先决条件,您应该已经完成了。否则,您可能需要提供一些环境变量。下面是可能的配置。
与 LionsAd/drupal_ti 的区别
虽然总体方法与 drupal_ti 非常相似,但我们也有一些不同之处。
- 如果您想运行已弃用的 TestBase 类,或者想运行 behat 测试,请使用 drupal_ti。
- 当使用 WebDriverTestBase 和 Drupal > 8.6(需要 selenium 而不是 phantom.js)时,请使用此包。
- 如果您想使用一个简单的 travis.yml 文件,它无需任何配置即可工作,请使用此包。
- 您可以直接使用它来快速在本地和其他 CI 环境中运行测试!只需在您的模块目录中执行
composer global require thunder/drupal-testing
,将全局 composer 目录添加到您的 $PATH,并从模块目录中调用test-drupal-project
。所有内容都将自动构建、安装和测试。
配置
我们尽可能地尝试不进行配置。但如果我们需要为您的模块提供一些特殊处理,或者如果您的测试环境不是 Travis/github(或者他们更改了一些默认值),我们仍然有很多配置选项。
步骤
运行测试最简单的方法是在您的 .travis.yml 中调用 test_drupal_project
。这将完成所有操作,但实际上它被分为几个步骤,可以通过提供参数单独调用这些步骤:test_drupal_project build
将调用构建步骤以及构建步骤所依赖的任何步骤。已执行的步骤在后续调用中不会被再次调用。因此,如果您接下来调用 test_drupal_project start_services
,则构建步骤之前的所有步骤将不会执行。
步骤如下:
requirements
检查测试要求是否满足。
coding_style
测试 PHP 和 JavaScript 编码风格。
prepare_build
创建 Drupal 项目并修改 composer.json 以包含所需的模块。
build
使用 Drupal 项目构建 Drupal 安装,添加所有模块依赖项并调用 composer install。
install
使用最小配置文件或已配置的配置文件安装 Drupal。
start_services
启动测试所需的服务。启动 Web 服务器和 selenium。
run_tests
运行测试。
这也是步骤依赖的顺序,coding_style 依赖于 prepare,build 依赖于 coding_style 和 prepare,依此类推。
将执行分割成步骤的一个非常常见的用例是在构建步骤后停止,并添加自定义构建操作(例如,下载不能由 composer 安装的依赖项),然后稍后继续。这样一个自定义 .travis.yml 的示例如下:
language: php
sudo: required
cache:
apt: true
directories:
- "$HOME/.composer/cache"
- "$HOME/.drush/cache"
- "$HOME/.npm"
php:
- 7.2
branches:
only:
- /^8\.([0-9]+|x)\-[0-9]+\.([0-9]+|x)$/
env:
global:
- PATH="$PATH:$HOME/.composer/vendor/bin"
before_install:
- composer global require thunder/drupal-testing
install:
- test-drupal-project build
# Download something to the ccurrent directory.
- wget -qO- https://www.some-domain.com/some-needed-dependency.tar.gz | tar xvz
script:
# this continues after the build step and finishes testing.
- test-drupal-project
环境变量
您可以使用多个环境变量配置您的测试,其中大多数只在您想在不同于 travis 的环境中运行测试时需要。您可以更改数据库凭据、服务器主机和端口、一些安装路径以及测试设置。所有这些变量在通过具有正确 composer.json 和将测试组设置为模块名称的模块在 travis 上运行时应该可以正常工作(有关更多信息,请参阅先决条件)。可以在 .travis.yml 的 env 部分中设置变量。
可用变量
在 configuration.sh 中查找所有定义的变量
一些有趣的变量是
- DRUPAL_TESTING_PROJECT_BASEDIR
项目所在目录。在 travis 上,这设置为 TRAVIS_BUILD_DIR,否则默认为当前目录。
- DRUPAL_TESTING_COMPOSER_NAME
当前项目的 composer 名称,如果未指定,则从 composer.json 中读取。
- DRUPAL_TESTING_PROJECT_NAME
项目名称,如果未提供,则使用 composer 名称的第二部分。例如,如果 composer 名称是 vendor/myproject,则项目名称将是 myproject。这将用作默认测试组。
- DRUPAL_TESTING_TEST_GROUP
PHPUnit 测试组,默认值为 ${DRUPAL_TESTING_PROJECT_NAME}。要提供多个组,请使用逗号连接它们:DRUPAL_TESTING_TEST_GROUP="mygroup1,mygroup2"。
- DRUPAL_TESTING_TEST_GROUP_EXCLUDE
要排除的 PHPUnit 测试组,默认为空字符串。要提供多个组,请使用逗号连接它们:DRUPAL_TESTING_TEST_GROUP_EXCLUDE="mygroup1,mygroup2"。
- DRUPAL_TESTING_TEST_FILTER
只运行名称与给定正则表达式模式匹配的测试。示例:DRUPAL_TESTING_TEST_FILTER=TestCaseClass::testMethod
- DRUPAL_TESTING_TEST_CODING_STYLES
布尔值,表示是否应使用 burdamagazinorg/thunder-dev-tools 测试编码风格。默认情况下,将测试编码风格。
- DRUPAL_TESTING_TEST_JAVASCRIPT
- DRUPAL_TESTING_TEST_PHP
布尔值,表示是否应测试 JavaScript 和 PHP 编码风格。默认情况下,将测试所有编码风格。
- DRUPAL_TESTING_TEST_BASE_DIRECTORY
所有生成文件的基准目录。Drupal 将安装到这个目录。测试成功后,这个目录及其内容将被删除。
- DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY
Drupal 将安装的目录,默认为 ${DRUPAL_TESTING_TEST_BASE_DIRECTORY}/install。测试成功后,这个目录将被删除。
- DRUPAL_TESTING_HTTP_HOST
- DRUPAL_TESTING_HTTP_PORT
Web 服务器的主机和端口。默认为 127.0.0.1 和 8888。
- DRUPAL_TESTING_SELENIUM_CHROME_VERSION
要使用的 selenium chrome docker 版本。默认为最新版本。
- DRUPAL_TESTING_SELENIUM_HOST
- DRUPAL_TESTING_SELENIUM_PORT
要使用的 selenium 主机和端口。默认为 Web 服务器的主机和端口 4444。
- DRUPAL_TESTING_DATABASE_HOST
- DRUPAL_TESTING_DATABASE_PORT
- DRUPAL_TESTING_DATABASE_USER
- DRUPAL_TESTING_DATABASE_PASSWORD
- DRUPAL_TESTING_DATABASE_NAME
数据库信息。默认为 Web 服务器的主机,端口 3306,用户 testing,密码为空。数据库名为 testing。如果您在本地运行测试,可能需要将这些值修改为您的本地 MySQL 安装。
- DRUPAL_TESTING_CLEANUP
默认情况下,所有创建的文件在测试运行成功后将被删除。您可以通过将其设置为 false 来禁用此行为。
- SYMFONY_DEPRECATIONS_HELPER
用于忽略弃用的 symfony 环境变量,有关可能的值,请参阅 PHPUnit Bridge 文档。默认值为 "week",以忽略任何弃用通知。
- MINK_DRIVER_ARGS_WEBDRIVER
webdriver 的驱动器参数。您可能需要在运行自己的 chromedriver / selenium 实例时更改此值。
包含一些变量设置的示例 .travis.yml
language: php
dist: xenial
php:
- 7.2
services:
- mysql
cache:
apt: true
directories:
- "$HOME/.composer/cache"
- "$HOME/.drush/cache"
- "$HOME/.npm"
branches:
only:
- /^8\.([0-9]+|x)\-[0-9]+\.([0-9]+|x)$/
env:
matrix:
# Add a test matrix where tests are running once with deprecations failing and once without.
# The test with deprecation warnings is allowed to fail.
- SYMFONY_DEPRECATIONS_HELPER=weak
- SYMFONY_DEPRECATIONS_HELPER=0
global:
- PATH="$PATH:$HOME/.composer/vendor/bin"
matrix:
allow_failures:
- env: SYMFONY_DEPRECATIONS_HELPER=0
before_install:
- composer global require thunder/drupal-testing
script:
- test-drupal-project