de-swebhosting/typo3-extension-buildtools

包含测试和发布TYPO3扩展的脚本

v10.3.0 2022-03-22 23:48 UTC

This package is auto-updated.

Last update: 2024-09-10 10:53:59 UTC


README

使用TYPO3核心提供的工具测试您的TYPO3扩展

  • 使用typo3/testing-framework
  • dockerdocker-compose
  • typo3gmbh/php* docker镜像

提示1:目前,每个工具版本仅支持一个TYPO3核心版本。

提示2:目前,Composer依赖必须安装在.Build目录中。有关所需配置,请参阅doc/composer-sample.json

安装

编辑composer.json

根据doc/composer-sample.json中的说明调整您的composer.json文件中的设置。

然后运行composer update

动态要求

如果您想测试多个核心版本,您可以在构建过程中动态地要求不同的buildtools版本。

对于TYPO3 10

composer require --dev de-swebhosting/typo3-extension-buildtools:dev-master

对于TYPO3 9

composer require --dev de-swebhosting/typo3-extension-buildtools:dev-TYPO3_9

本地运行

在您可以在本地执行脚本之前,您需要将您的扩展密钥设置为一个环境变量

export TYPO3_EXTENSION_KEY="<my_extension_key>"

然后您可以运行不同的命令。

  • t3_run_tests.sh - 用于运行单元、功能和验收测试
  • t3_check_codestyle.sh - 用于通过PHP_CodeSniffer检查/修复PHP代码风格
  • t3_prepare_release.sh - 准备文档和ext_emconf.php以进行发布
  • t3_deploy_to_ter.sh - 将扩展上传到TER

在travis中运行

请参阅doc/travis-sample.yml文件。您需要

  1. <your_extension_key>替换为您的扩展的扩展密钥
  2. 删除[your_custom_codestyle]或替换它为您要用于代码风格检查的规则集名称(请参阅代码风格检查)。

示例Travis CI配置将

  • 验证composer.json文件
  • 检查您的PHP代码的代码风格
  • 为PHP 7.3和7.4运行单元测试
  • 为PHP 7.3和7.4运行功能测试
  • 为PHP 7.3和7.4运行PHP linting
  • 为PHP 7.3和7.4运行验收测试

它还将尝试在推送标签时部署您的扩展到TER。您需要将您的TYPO3登录数据设置在Travis环境变量中才能使其正常工作(请参阅部署到TER)。

  • TYPO3_ORG_USERNAME
  • TYPO3_ORG_PASSWORD

编写测试

单元测试

要编写单元测试,请在您的扩展中创建Tests/Unit文件夹,并通过扩展TYPO3\TestingFramework\Core\Unit\UnitTestCase添加第一个测试用例。

namespace Vendor\MyExt\Tests\Unit;

use TYPO3\TestingFramework\Core\Unit\UnitTestCase;

class MyFirstUnitTest extends UnitTestCase {
...
}

功能测试

要编写功能测试,请在您的扩展中创建Tests/Functional文件夹,并通过扩展TYPO3\TestingFramework\Core\Functional\FunctionalTestCase添加第一个功能测试用例。

namespace Vendor\MyExt\Tests\Functional;

use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;

class MyFirstFunctionalTest extends FunctionalTestCase {
...
}

执行测试

要执行单元测试,请运行此命令

.Build/bin/t3_run_tests.sh -s unit -p "<PHP version>"

要执行功能测试,请运行此命令

.Build/bin/t3_run_tests.sh -s functional -d "<database type>" -p "<PHP version>"

<数据库类型>可以是

  • mariadb
  • mssql
  • postgres
  • sqlite

验收测试

前端

您可以在 doc/acceptance 文件夹中找到一些验收测试的样板代码。

codeception.yml 文件复制到您的扩展的 Tests 文件夹中,并

调整配置的命名空间。

前端子文件夹 frontend 包含创建前端测试套件的骨架。

将此目录中的所有文件和文件夹复制到您的扩展的 Tests/Acceptance 文件夹中,并调整

所有文件中的命名空间。

之后,您应该能够运行第一个验收测试(位于 Frontend 子目录)。

.Build/bin/t3_run_tests.sh -s acceptance -a Frontend

后端

后端验收测试的设置与前端相当相似。

backend 文件夹的内容复制到您的扩展的 Tests/Acceptance 文件夹中,然后就可以开始了。

默认情况下,验收测试命令会执行后端测试套件。

.Build/bin/t3_run_tests.sh -s acceptance

调试

将这些内容添加到 docker-compose.yml 文件中 web 服务的配置中,以暂时启用开发环境以获得更好的调试输出,并从您的本地机器访问 web 服务器

重要!为了使此功能正常工作,您需要将 --service-ports 参数添加到 t3_run_tests.sh 中的 docker-compose 命令

。最终的命令看起来像这样

docker-compose run --service-ports acceptance_backend_mariadb10

此配置需要添加到 docker-compose.yml 文件

  web:
    ...
    ports:
      - "8000:8000"
    ...
    environment:
      TYPO3_CONTEXT: Development

代码风格检查

要执行代码风格检查,可以使用此命令

.Build/bin/t3_check_codestyle.sh

它检查 TYPO3 扩展中所有已知的 PHP 文件位置,基于 TYPO3 核心编码指南的默认配置。

您可以通过将 Tests/CodeSniffer/MyCodingStandard/ruleset.xml 添加到您的扩展中来调整规则集。

以下是一个使用默认规则并禁用 TCA 配置文件行长度检查的示例

<?xml version="1.0"?>
<ruleset name="MyCodingStandard">
	<description>Based on PSRDefault. Adjust only if REALLY neccessary!</description>
	<rule ref="PSRDefault"/>
	<rule ref="Generic.Files.LineLength">
		<exclude-pattern>Configuration/TCA/*</exclude-pattern>
	</rule>
</ruleset>

在创建了规则集之后,您必须向代码风格检查器提供其名称

.Build/bin/t3_check_codestyle.sh MyCodingStandard

要自动修复代码风格错误,可以将 fix 关键字作为第一个参数传递

.Build/bin/t3_check_codestyle.sh fix [MyCodingStandard]

部署到 TER

使用 t3_prepare_release.sh 脚本来准备一个发布版本

bash .Build/bin/t3_prepare_release.sh "<semantic_version>"

这将在 ext_emconf.phpDocumentation/Settings.cfg 中设置提供的版本号,并使用 git flow release 命令创建一个新的发布版本。

之后,您可以推送所有分支和标签。推送的标签将被发布到 TER。

git push && git push --tags && git checkout develop && git push

鸣谢

这项工作基于 TYPO3 测试框架和 https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/Testing/ExtensionTesting.html 上的出色文档。