thunder / travis
travis 脚本用于测试 drupal 模块。
Requires
- php: >=7.0
- dealerdirect/phpcodesniffer-composer-installer: ^0.4.4
- drupal/coder: ^8.2.0
- symfony/yaml: ^3.4
This package is auto-updated.
Last update: 2024-09-04 23:38:28 UTC
README
版本
关于
使用此包简化您在 travis 上对 drupal 模块的测试。这将运行您在 travis 上的所有标准 drupal 测试,并额外检查您的源代码以符合 drupal 编码风格指南。
先决条件
为了充分利用此包,您应考虑将一些内容添加到您的模块中
将您的模块名称添加到测试类的 @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 类
只有未弃用的 TestBase 类(截至 drupal 8.6)受到测试。特别是已弃用的 JavascriptTestBase 不受支持,请使用 WebDriverTestBase 代替。请参阅 JavascriptTestBase 已弃用,由 WebDriverTestBase 取代
设置
您需要做的就是将 .travis.yaml.dist 复制到您的项目根目录,并将其重命名为 .travis.yaml。如果您的模块满足所有先决条件,您应该已经完成了。否则,您可能需要提供一些环境变量。下面是可能的配置。
与 LionsAd/drupal_ti 的区别
虽然总体方法与 drupal_ti 非常相似,但我们也有一些不同之处。
- 如果您想运行已弃用的 TestBase 类,或者如果您想运行 behat 测试,请使用 drupal_ti。
- 当使用 WebDriverTestBase 和 Drupal > 8.6(需要 selenium 而不是 phantom.js)时,请使用此包。
- 如果您想要一个简单的 travis.yml 文件,无需任何配置即可使用,请使用此包。
- 您可以直接使用此包快速在本地运行测试!您需要的只是一个 php 命令行客户端、composer、chromedriver 和 docker(或本地运行的 mysql)。如果您在本地机器上安装了所有这些,只需在模块目录中执行
composer global require thunder/travis
将全局 composer 目录添加到您的 $PATH 中,然后从模块目录中调用test-drupal-project
。所有内容都将自动构建、安装和测试。
配置
我们尽可能地不配置运行,但我们仍然有很多配置选项,如果您的模块需要一些特殊处理,或者如果您的测试环境不是 travis(或 travis 改变了某些默认值),或者如果您想将测试过程拆分为多个步骤。
步骤
运行测试的最简单方法是只需在 .travis.yml 中调用 test_drupal_module
。这将做所有事情,但实际上它被分为几个步骤,可以通过提供步骤作为参数单独调用:调用 test_drupal_module build
将调用构建步骤以及构建步骤所依赖的任何步骤。已执行的步骤在后续调用中不会再次调用。因此,如果您接下来调用 test_drupal_module start_web_server
,则所有步骤都将不会执行到构建步骤。
步骤如下
setup
设置测试环境。如果需要,启动 selenium 和 mysql,并调整 travis 上的 php
coding_style
测试 php 和 javascript 编码风格
准备构建
创建Drupal项目,并修改composer.json以包含所需模块。
构建
使用Drupal项目构建安装,添加模块的所有依赖,并调用composer install。
安装
使用简单测试模块所需的最低配置安装Drupal。启用简单测试模块。
启动Web服务器
启动指向已安装Drupal的Web服务器。
运行测试
运行测试
这也是步骤依赖的顺序,编码风格依赖于准备,构建依赖于编码风格和准备,依此类推。
将执行分解为步骤的一个非常常见的用例是在构建步骤后停止,添加自定义构建操作(例如下载无法通过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/travis
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的环境中运行测试时需要。您可以更改数据库凭据、服务器主机和端口、一些安装路径和测试设置。所有这些变量在travis上运行具有正确composer.json和将测试组设置为模块名称的模块时都应正常工作(有关更多信息,请参阅先决条件)。变量可以在.travis.yml的env部分中设置。
可用变量
在configuration.sh中找到所有定义的变量
一些有趣的变量包括
- DRUPAL_TRAVIS_PROJECT_BASEDIR
项目所在目录。在travis上设置为TRAVIS_BUILD_DIR,否则默认为当前目录
- DRUPAL_TRAVIS_COMPOSER_NAME
当前项目的composer名称,如果未指定,则从composer.json中读取。
- DRUPAL_TRAVIS_PROJECT_NAME
项目名称,如果未提供,则使用composer名称的第二部分。例如,如果composer名称是vendor/myproject,则项目名称将为myproject。这将用作默认测试组
- DRUPAL_TRAVIS_TEST_GROUP
phpunit测试组,默认为${DRUPAL_TRAVIS_PROJECT_NAME}的值。要提供多个组,请使用逗号连接它们:DRUPAL_TRAVIS_TEST_GROUP="mygroup1,mygroup2"
- DRUPAL_TRAVIS_TEST_FILTER
只运行名称与给定正则表达式模式匹配的测试。例如:DRUPAL_TRAVIS_TEST_FILTER=TestCaseClass::testMethod
- DRUPAL_TRAVIS_TEST_CODING_STYLES
如果使用burdamagazinorg/thunder-dev-tools测试编码风格,则为布尔值。默认情况下会测试编码风格。
- DRUPAL_TRAVIS_TEST_JAVASCRIPT
- DRUPAL_TRAVIS_TEST_PHP
如果应该测试javascript和php编码风格,则为布尔值。默认情况下会测试所有编码风格。
- DRUPAL_TRAVIS_TEST_BASE_DIRECTORY
所有生成文件的基目录。在此目录中安装Drupal并将临时文件存储。测试成功后,此目录将被删除。
- DRUPAL_TRAVIS_DRUPAL_INSTALLATION_DIRECTORY
Drupal将被安装的目录,默认为${DRUPAL_TRAVIS_TEST_BASE_DIRECTORY}/install。测试成功后,此目录将被删除。
- DRUPAL_TRAVIS_HTTP_HOST
- DRUPAL_TRAVIS_HTTP_PORT
Web服务器的主机和端口。默认为127.0.0.1和8888
- DRUPAL_TRAVIS_SELENIUM_CHROME_VERSION
要使用的selenium chrome docker版本。默认为最新版本。
- DRUPAL_TRAVIS_SELENIUM_HOST
- DRUPAL_TRAVIS_SELENIUM_PORT
selenium的主机和端口。默认为Web服务器的主机和端口4444。
- DRUPAL_TRAVIS_DATABASE_HOST
- DRUPAL_TRAVIS_DATABASE_PORT
- DRUPAL_TRAVIS_DATABASE_USER
- DRUPAL_TRAVIS_DATABASE_PASSWORD
- DRUPAL_TRAVIS_DATABASE_NAME
数据库信息。默认为Web服务器主机,端口3306,用户名为travis,密码为空。这是travis php环境的默认配置。数据库名设置为drupaltesting。如果您在本地运行测试,可能需要将这些值更改为您本地的mysql安装。
- DRUPAL_TRAVIS_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/travis
script:
- test-drupal-project