uiii/tense

轻松针对 ProcessWire CMF 的多个版本进行测试

维护者

详细信息

github.com/uiii/tense

源代码

问题

安装: 172

依赖关系: 1

建议者: 0

安全: 0

星标: 8

关注者: 4

分支: 1

开放问题: 2

类型:项目

1.0.0 2017-04-18 18:47 UTC

This package is auto-updated.

Last update: 2024-09-29 05:01:06 UTC


README

Packagist travis-linux travis-osx AppVeyor

Tense (Test ENvironment Setup & Execution) 是一个命令行工具,可轻松运行针对 ProcessWire CMF 的多个版本的测试。

你正在构建一个模块或模板,并需要确保它在所有支持的 ProcessWire 版本中都能正常工作?那么 Tense 正好是你需要的。在任意测试框架中编写测试,告诉 Tense 你感兴趣的 ProcessWire 版本,它将为你完成剩下的工作。

查看 示例查看实际项目中的 使用

video

目录

  1. 要求
  2. 安装
  3. 用法
  4. 配置
  5. 故障排除

要求

php.ini

php.ini 必须启用了以下扩展,用于 php 命令行命令

  • curl
  • gd2
  • mbstring
  • mysqli
  • openssl
  • pdo_mysql

安装

首先不要忘记设置所有 要求

全局安装

composer global require uiii/tense

或作为项目依赖项安装

cd <your-project>
composer require --dev uiii/tense

用法

进入你的 项目根目录

  1. 创建 配置 文件 tense.yml

    tense init
    
  2. 运行测试

    tense run
    

如果你已将 Tense 作为项目依赖项本地安装,请使用 vendor/bin/tense 而不是 tense

配置

Tense 使用 YAML 配置文件。有两种类型的配置文件

  • 项目 (tense.yml):它应包含与项目测试直接相关的选项。此配置旨在共享(VCS、...)。
  • 本地 (tense.local.yml):它应包含与机器环境设置相关的选项(数据库连接、...),覆盖项目配置中的选项。此配置文件 需要共享。

可以通过运行命令手动或交互式地创建 项目 的配置

tense init

本地 配置在缺失时会在每次 tense run 时自动初始化。

tmpDir

可选,配置:项目,本地

存储测试所需文件(例如 ProcessWire 安装)的目录的路径。

路径相对于配置文件的父目录。

默认为 .tense

db

必需,配置:本地

数据库连接参数。

它们用于创建 ProcessWire 安装的数据库,因此用户必须具有创建数据库的权限。

db.name 是数据库名称。

示例

db:
    host: localhost
    port: 3306
    user: root
    pass: ""
    name: tense

testTags

必需,配置:项目

用于测试的 ProcessWire 标签/版本的列表。

不必是确切的版本号。对于每个标签/版本都会找到最新的匹配现有标签(例如,3.0 -> 3.0.42)。

版本按指定顺序进行测试。

最低支持版本为 2.5

版本 2.8 目前不支持。

示例

testTags:
    - "2.5"
    - "2.6"
    - "2.7.1"
    - "3.0"

copySources

可选,配置:项目

在测试之前将源文件复制到 ProcessWire 的安装中。

这是一个具有 destinationsource 属性的对象列表。

目标路径相对于 ProcessWire 的安装根目录。

源路径相对于配置文件的父目录。

源可以是单个字符串或字符串数组。如果源是字符串,则使用文件到文件的复制。如果源是字符串数组,则目标被认为是目录,所有源都复制到该目录中。

如果源项是目录,它将被递归复制。

示例

copySources:
    - destination: "site/templates/HomeTemplate.php"
    source: "src/templates/home.php"

    - destination: "site/modules/Module"
    source:
        - "Libs"
        - "Module.module"

假设 tense.yml 在项目根目录中,<project-root>/Libs 是一个目录。在这个例子中,这些文件将被复制

  • <project-root>/templates/home.php<pw-path>/site/templates/HomeTemplate.php
  • <project-root>/Libs/*<pw-path>/site/modules/Module/Libs
  • <project-root>/Module.module<pw-path>/site/modules/Module/Module.module

beforeCmd

可选,配置:项目,本地

在测试套件执行之前,但在安装 PW 实例和 复制之后执行的命令。

这只是一个单独的命令,如果您需要运行多个命令,请将它们放入外部脚本中。

请记住,该命令应该是平台无关的,因此不推荐使用 .sh.bat 文件。最佳选项是使用 PHP,正如您在 示例 中看到的那样,但您可以使用任何其他平台无关的脚本语言。

ProcessWire 安装路径将在 PW_PATH 环境变量中。

示例

beforeCmd: "composer install"

testCmd

必需,配置:项目

执行测试套件的命令。

ProcessWire 安装路径将在 PW_PATH 环境变量中。

示例

testCmd: "vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Test.php"

pause

可选,配置:local

在每个针对 ProcessWire 实例的测试套件之后但在清理测试运行器之前,可以暂停并询问用户要做什么。

这在例如检查已安装的 ProcessWire 实例时很有用。

可能的值是

  • never - 从不暂停(默认值)
  • onFailure - 在失败的测试套件后暂停
  • always - 在测试套件后始终暂停

故障排除

cURL 错误:SSL 证书问题:无法获取本地颁发者证书

如果您收到此错误,则未正确配置 PHP 的 curl 扩展。您可以例如通过以下方式解决此问题:

  1. 下载 https://curl.haxx.se/ca/cacert.pem 文件
  2. 将其放置在某个位置,例如 PHP 的安装目录
  3. 编辑 php.ini 文件并设置 curl.cainfo = <aboslute-path-to-cacert-file>