仅对一项 GitHub 操作作业运行测试

问题描述

某些针对 package 的测试需要在单个测试服务器上重复删除和写入数据。我无法同时运行这些测试,因为它们会相互干扰。

三个目标:

  1. 我想在三种不同的操作系统(Ubuntu、macOS 和 Windows)上运行 GitHub Action 作业。
  2. 我只想在 GitHub 上的 Ubuntu 作业上运行删除+写入测试——我想仅在 GitHub 操作上运行时为 mac 和 Windows 跳过它们。
  3. 但我不希望它们在某人的本地 mac 或 Windows 机器(和 Win-Builder)上运行时被跳过。理论上,两个开发者可以互相踩到对方的脚趾,但这种情况发生的频率太低而无需在意。

一些注意事项:

  • 理想情况下,目标服务器的一个版本会临时启动并托管在 GitHub 操作中。但是,我不确定 REDCap 许可证是否允许这样做。
  • 应该跳过大约 200 个测试中的大约 20%。其余的要么不调用服务器,要么是只读操作。因此,两个作业/操作系统是否同时运行它们并不重要。
  • 在所有作业中,应运行 R-CMD 检查的所有非测试部分(例如,检查包依赖项和小插曲)。

有没有办法将 testthat skipsGitHub Action environmental variables 结合起来?有没有更好的解决方案?

解决方法

jobs.<job_id>.steps[*].if 是否有助于实现您的愿望?例如,如果您为 macOS、Ubuntu 和 Windows 设置了一个矩阵操作系统构建,并且有一个用于测试设置、执行和拆卸的步骤,您可以向该步骤添加一个 if 指令以仅在以下情况下运行操作系统以“ubuntu”开头:if: startsWith(${{matrix.os}},'ubuntu')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...