我们在origen_testers中使用了n个外部绑定规则引擎与使用本机绑定API的方法,并且需要按照正确的顺序传递测试名称的列表。当我们使用包含on_fail或on_pass流参数的procs时,就会出现问题。这些子测试可以包含几层类似的proc调用。子测试在父测试之前先被处理,因此二进制顺序被颠倒。是否有一种方法可以提取一组测试名称,以保留父级到子级的关系?我知道flow.atp.raw显示了层次结构。

如何按照正确的顺序选择TestSuite名称?
thx
编辑
下面是ATP的一个例子:
s(:test,
s(:object, <TestSuite: jtag_ccra_all_vmin>),
s(:name, "jtag_ccra_all_vmin"),
s(:number, 0),
s(:id, "jtag_ccra_all_vmin"),
s(:on_fail,
s(:if_flag, "$Alarm",
s(:render, "multi_bin;")),
s(:test,
s(:object, <TestSuite: jtag_ccra_top_vmin>),
s(:name, "jtag_ccra_top_vmin"),
s(:number, 0),
s(:id, "jtag_ccra_top_vmin"),
s(:on_fail,
s(:if_flag, "$Alarm",
s(:render, "multi_bin;")))),
s(:test,
s(:object, <TestSuite: jtag_ccra_gasket_vmin>),
s(:name, "jtag_ccra_gasket_vmin"),
s(:number, 0),
s(:id, "jtag_ccra_gasket_vmin"),
s(:on_fail,我想知道是否有办法按顺序提取姓名:
['jtag_ccra_all_vmin', 'jtag_ccra_top_vmin', 'jtag_ccra_gasket_vmin']flow.atp.raw.children按照数组的顺序返回它们,但是我只想查询name属性和name节点对象。
thx
发布于 2020-07-01 20:27:59
从AST中提取信息的方法是制作一个处理器,如下所示:https://github.com/Origen-SDK/origen_testers/blob/master/lib/origen_testers/atp/processors/extract_set_flags.rb
在您的处理器中,您将创建一个名为on_test的方法,然后从该方法中提取名称。这是未经测试的,但类似的情况如下:
class ExtractTestNames < OrigenTesters::ATP::Processor
def run(node)
@results = []
process(node)
@results
end
# All 'test' nodes in the AST will be handed to this method, all nodes which don't have
# a specific handler defined will pick up a default handler which simply processes
# (looks for a handler for) all of the node's children
def on_test(node)
@results << node.find(:name).value
# Keep processing the children of this node, so that any tests embedded
# in on_fail nodes, etc. are picked up
process_all(node.children)
end
end称之为:
ExtractTestNames.new.run(flow.atp.raw) # => ['jtag_ccra_all_vmin', 'jtag_ccra_top_vmin', ...]https://stackoverflow.com/questions/62608217
复制相似问题