thunder/travis

travis 脚本用于测试 drupal 模块。

维护者

详细信息

github.com/thunder/travis

源代码

问题

安装次数: 8,995

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 3

开放性问题: 5

语言:Shell

1.0.21 2020-02-04 13:18 UTC

README

Build Status

版本

Latest Stable Version Latest Unstable Version

关于

使用此包简化您在 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