Rake 测试任务的顺序
Order of Rake Test Task
我有一个包含三个任务的 rake 文件,我需要按顺序执行。
require 'rake/testtask'
file 'some_binary_file.elf' do
puts 'fetching file from server ...'
# this task connects to a server and downloads some binaries
# it takes a few seconds to run
end
task flash_application: 'some_binary_file.elf' do
puts 'flashing the file to the hardware ...'
# this task copies a binary file to the flash memory
# of some external hardware, also takes a few seconds
end
Rake::TestTask(:hardware) do |t|
puts 'running tests ...'
f.test_files = FileList['test/**/*_test.rb']
end
rake default: [:flash_application, :hardware]
当我在终端中 运行 $ rake
时,它会产生以下输出。
running tests ... < ---- (not actually running)
fetching file from server ...
flashing the file to the hardware ...
我希望 rake 运行 按照我指定的顺序执行任务,但它似乎总是先执行测试任务。值得注意的是,测试没有 运行 - 但无论如何都会生成任务创建的输出。
当您想要运行 任务按特定顺序执行时,您必须将它们相互依赖。在你的情况下, :flash_application 应该依赖于 :hardware
发现错误 - 这个问题不是 ruby / rake 特有的。 flash_application 任务更改工作目录。因此,当前工作目录中没有带有任务 'hardware' 的 Rakefile。但是研究这个错误产生了一些有趣的见解。
Ruby 数组是有序的,如果要按顺序执行任务,只需在数组中按执行顺序定义它们即可,即
task some_task: [:first, :second, :third]
Rake::TestTask.new
在调用时定义了一个普通的旧 rake 任务。这意味着,当调用 rake 时,ruby 创建一个 Rake::TestTask 的实例。在此阶段执行/生成传递给构造函数的所有代码。这会产生原始问题中描述的行为。
我有一个包含三个任务的 rake 文件,我需要按顺序执行。
require 'rake/testtask'
file 'some_binary_file.elf' do
puts 'fetching file from server ...'
# this task connects to a server and downloads some binaries
# it takes a few seconds to run
end
task flash_application: 'some_binary_file.elf' do
puts 'flashing the file to the hardware ...'
# this task copies a binary file to the flash memory
# of some external hardware, also takes a few seconds
end
Rake::TestTask(:hardware) do |t|
puts 'running tests ...'
f.test_files = FileList['test/**/*_test.rb']
end
rake default: [:flash_application, :hardware]
当我在终端中 运行 $ rake
时,它会产生以下输出。
running tests ... < ---- (not actually running)
fetching file from server ...
flashing the file to the hardware ...
我希望 rake 运行 按照我指定的顺序执行任务,但它似乎总是先执行测试任务。值得注意的是,测试没有 运行 - 但无论如何都会生成任务创建的输出。
当您想要运行 任务按特定顺序执行时,您必须将它们相互依赖。在你的情况下, :flash_application 应该依赖于 :hardware
发现错误 - 这个问题不是 ruby / rake 特有的。 flash_application 任务更改工作目录。因此,当前工作目录中没有带有任务 'hardware' 的 Rakefile。但是研究这个错误产生了一些有趣的见解。
Ruby 数组是有序的,如果要按顺序执行任务,只需在数组中按执行顺序定义它们即可,即
task some_task: [:first, :second, :third]
Rake::TestTask.new
在调用时定义了一个普通的旧 rake 任务。这意味着,当调用 rake 时,ruby 创建一个 Rake::TestTask 的实例。在此阶段执行/生成传递给构造函数的所有代码。这会产生原始问题中描述的行为。