gpt4 book ai didi

ruby - 使用 Guard 忽略目录

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:03 24 4
gpt4 key购买 nike

我正在使用 guard-minitest 自动运行我的测试。

test/fixtures 目录中还有一个骨架 gem。

问题是,现在 Guard 也在骨架 gem 中运行测试。

我如何告诉 Guard 只为我的实际项目运行我的测试,而不是 test/fixtures 目录中的任何项目?

我尝试了以下方法,但它不起作用:

guard :minitest, :exclude => "test/fixtures/*" do
# with Minitest::Unit
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
watch(%r{^test/test_helper\.rb$}) { 'test' }
end

编辑:

docs让它看起来我可以添加一个忽略路径,这也没有用:

ignore %r{^test/fixtures/}

guard :minitest do
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
watch(%r{^test/test_helper\.rb$}) { 'test' }
end

编辑:

按照下面的建议,我尝试删除星号,但也不起作用:

ignore %r{^test/fixtures/}

guard :minitest do
watch(%r{^test/test_(.*)\.rb$})
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
watch(%r{^test/test_helper\.rb$}) { 'test' }
end

最佳答案

发生这种情况是因为 watch(%r{^test/(.*)\/?test_(.*)\.rb$}) 使用了匹配测试的正则表达式 gem 骨架。所以如果你有这些文件:

test/my_real_tests/test_one.rb
test/my_real_tests/my_gem/test_two.rb

/my_real_tests/my_gem/ 与第一个 (.*) 匹配。

添加更具体的正则表达式,使它们不匹配。类似于 watch(%r{^test/my_real_tests\/?test_(.*)\.rb$})。或者只是删除 (.*)

这是 documentation关于 watch 的工作原理。

另外:为什么在 test/fixtures 中有一个 gem 骨架?看起来很奇怪 :)

关于ruby - 使用 Guard 忽略目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com