Yaml 具有多个源文件扩展名的Ceedling

Yaml 具有多个源文件扩展名的Ceedling,yaml,ceedling,Yaml,Ceedling,我正在尝试为我现有的嵌入式项目设置单元测试。不幸的是,该项目对源文件“.c”和“.c”有混合的扩展名。由于版本控制历史,我不能将所有文件重命名为“.c” 我试图相应地编辑yaml文件,但它似乎只支持一个或另一个扩展名 正常的 ... :extension: :executable: .out :source: .c ... 不是工作方式,而是期望的 ... :extension: :executable: .out :source: .c ; .C ... LED.C未编译。

我正在尝试为我现有的嵌入式项目设置单元测试。不幸的是,该项目对源文件“.c”和“.c”有混合的扩展名。由于版本控制历史,我不能将所有文件重命名为“.c”

我试图相应地编辑yaml文件,但它似乎只支持一个或另一个扩展名

正常的

...
:extension:
  :executable: .out
  :source: .c
...
不是工作方式,而是期望的

...
:extension:
  :executable: .out
  :source: .c ; .C
...
LED.C未编译。所以链接器失败了

Test 'test_LED.c'
-----------------
Generating runner for test_LED.c...
Compiling test_LED_runner.c...
Compiling test_LED.c...
Linking test_LED.out...
build/test/out/c/test_LED.o: In function `test_LED_NeedToImplement':
C:\Users\de7d7b\Workspaces\C_\myProject/test/test_LED.c:14: undefined reference to `LED_turnOn'
collect2.exe: error: ld returned 1 exit status

由于源扩展仅用作单个配置字符串而不是数组,因此从0.29.1开始的Ceedling目前似乎不可能实现这一点。我强烈建议为它打开一个功能请求

同时,您至少可以通过为每个文件创建符号链接来解决部分问题。这很烦人,但允许您使用ceedling而不重命名所有文件。例如,如果要测试的文件位于src中:

ln -s LED.C src/LED.c

在我看来,正确的解决方案是找到在文件扩展名中使用大写的人,告诉他们修复他们的***并再次提交。源文件命名是在编码标准中非常早就应该提到的东西。C(大写)是C++的最初约定,是一个很长一段时间的绊脚石的早期。公平地说;使用忽略大小写的文件系统和依赖区分大小写的文件系统一样困难。您使用哪个工具来处理YAML?您是否尝试过其他分隔符,如冒号、逗号或空格?您使用的是什么VCS系统?如果它不支持版本控制下的文件重命名(即保留历史记录),那么它将非常糟糕。对于SVN,例如:。实际上,您可以在存储库中重命名它。Ortoise SVN甚至在上下文菜单中具有重命名功能,并提供自动重命名“类似命名的文件”(尽管这可能仅限于具有相同名称但不同扩展名的文件)。否则,需要一个简单的脚本来批量重命名所有此类文件。您是否尝试过用“.c.c”和“.c.c”代替“.c;.c”?