gpt4 book ai didi

ruby - 如何计算使用 :focus in a git hook? 过滤的 RSpec 示例

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:09 24 4
gpt4 key购买 nike

我正在尝试编写一个 Git 预提交 Hook ,如果有一个标记有 :focus 的示例,它不会让用户提交。

使用 RSpec 的 API(即使它是私有(private)的也可以),有没有办法通过 :focus 过滤器找出示例的数量?

我找到了 example_count-instance_method .它可能很有用,但我不确定如何从外部脚本调用它。

最佳答案

Here is一个Overcommit使用 RSpecs 私有(private) API 的 pre_commit 钩子(Hook)通过 :focus 过滤器查找规范:

require 'rspec'

module Overcommit
module Hook
module PreCommit
# NOTE: This makes use of many methods from RSpecs private API.
class EnsureFocusFreeSpecs < Base
def configure_rspec(applicable_files)
RSpec.configure do |config|
config.inclusion_filter = :focus
config.files_or_directories_to_run = applicable_files
config.inclusion_filter.rules
config.requires = %w(spec_helper rails_helper)
config.load_spec_files
end
end

def run
configure_rspec(applicable_files)

return :pass if RSpec.world.example_count.zero?

files = RSpec.world.filtered_examples.reject {|_k, v| v.empty?}.keys.map(&:file_path).uniq
[:fail, "Trying to commit focused spec(s) in:\n\t#{files.join("\n\t")}"]
end
end
end
end
end

关于ruby - 如何计算使用 :focus in a git hook? 过滤的 RSpec 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409804/

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