uiii / tense
轻松针对 ProcessWire CMF 的多个版本进行测试
Requires
- php: >=5.6
- justinrainbow/json-schema: ^5.2
- symfony/console: ^3.2
- symfony/yaml: ^3.2
Requires (Dev)
- nette/tester: ^1.7
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-29 05:01:06 UTC
README
Tense (Test ENvironment Setup & Execution) 是一个命令行工具,可轻松运行针对 ProcessWire CMF 的多个版本的测试。
你正在构建一个模块或模板,并需要确保它在所有支持的 ProcessWire 版本中都能正常工作?那么 Tense
正好是你需要的。在任意测试框架中编写测试,告诉 Tense
你感兴趣的 ProcessWire 版本,它将为你完成剩下的工作。
目录
要求
- PHP 5.6 或更高版本
- Composer (https://getcomposer.org.cn)
- Git (https://git-scm.cn)
- MySQL 或 MariaDB 5.0.15 或更高版本
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
用法
进入你的 项目根目录。
-
创建 配置 文件
tense.yml
tense init
-
运行测试
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 的安装中。
这是一个具有 destination
和 source
属性的对象列表。
目标路径相对于 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
扩展。您可以例如通过以下方式解决此问题:
- 下载 https://curl.haxx.se/ca/cacert.pem 文件
- 将其放置在某个位置,例如 PHP 的安装目录
- 编辑
php.ini
文件并设置curl.cainfo = <aboslute-path-to-cacert-file>