0

我正在用 perl 编写一个测试自动化软件,但遇到了我定义的配置文件的问题。自动化软件接收以 perl 哈希编写的输入 CFG 文件,其中定义了要构建的图像。现在需要在不同的测试场景中构建相同的图像,例如每晚构建、每小时构建和周末回归。目前我们必须在 3 个不同的文件中定义相同的图像,并且任何时候我们想要更新它们(比如更新 git 分支)我们需要在 3 个文件中进行。我正在寻找一种解决方案,我可以创建一个定义构建的文件并让其他文件继承它。我正在寻找 perl/xml/json/etc 中的内置语言功能。不是我需要在测试软件中实现自己的东西。

例如

夜间cfg文件:

builds => {
        smp_be => {
                  name => image_smp
                  branch => 2011.12
                  compiler => little_endian
         }
        up_be => {
                  name => image_up
                  branch => 2011.12
                  compiler => big_endian
         }

}
some other ** night **  specific stuff...

周末cfg文件

builds => {
            smp_be => {
                      name => image_smp
                      branch => 2011.12
                      compiler => little_endian
             }
            up_be => {
                      name => image_up
                      branch => 2011.12
                      compiler => big_endian
             }

    }
    some other ** weekend ** specific stuff...

相反,我想要类似的东西

夜间 cfg 文件

builds {
     # im inventing this syntax up
     # common_builds.cfg contains the previous files
     include common_builds.cfg
 }
some other ** night **  specific stuff...

请指教

提前致谢

4

1 回答 1

0

如果顶级键不同,您可以简单地在 Perl 中合并哈希:

my $builds_hashref = loaded_from_build_file();
my $scenario_hashref = loaded_from_scenario_file();

my $config_hashref = { %$builds_hashref, %$scenario_hashref };

. . . 当然假设您已经实现了从任何文件加载通用配置的逻辑。

如果顶层的键相同,则此合并会变得更加复杂,但仍然是可能的,只要您准确知道构建文件和场景文件之间的配置键不同的地方。

于 2013-05-01T09:38:30.823 回答