是否应该在打包的 gem 中包含测试?
Should one include tests in a packaged gem?
我一直在查看文档和著名的示例 gem 来寻找一个简单问题的答案:
一个人是否应该在自己的 PACKAGED gem 中包含测试,如果是,为什么?
换句话说,你是否将测试文件添加到 files
gemspec 属性,你是否通过 add_development_dependencies
包含测试依赖项?如果是这样,为什么?
测试 gem 并将测试包含在 gem 的源存储库中对我来说非常有意义。将测试与打包在 gem 中的已部署源代码一起包括在内对我来说意义不大。是否有一种标准方法可以让人们使用来自 rubygem 的 gem 的测试?
话虽这么说,好像很多大项目都包含测试,所以我一定漏掉了什么,对吧?
无需在 gem 文件中包含测试。但是,如果测试文件很小(它们可能很小),那没什么大不了的。
长期以来,在使用命令bundle gem mygemname
新建gem时,生成的gemspec
中包含了以下几行:
Gem::Specification.new do |s|
# ...
s.files = `git ls-files -z`.split("\x0")
s.test_files = s.files.grep(/^(test|spec|features)\//)
# ...
end
由于您的测试已经包含在 test_files
中,因此它们也包含在 files
中实际上并不重要。
但是,如果您今天 运行 使用相同的命令 bundle gem mygemname
,那么您将在生成的 gemspec
文件中看到这一行:
Gem::Specification.new do |s|
# ...
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
# No mention of s.test_files !
# ...
end
有什么变化?
好吧,s.test_files
现在 几乎 已弃用。有一个 open issue in RubyGems to not install test_files, which has been deferred to a post-2.x RubyGems release due to 'backward compatibility'. It also used to be possible to run tests for a Gem whilst installing it, with gem install -t gemname
; this feature has now been removed(参见错误 #25707)。
我相信,这就是为什么您仍然看到许多 gem 源代码中包含测试文件的原因。但是包括他们在内已经没有任何意义了。
我一直在查看文档和著名的示例 gem 来寻找一个简单问题的答案:
一个人是否应该在自己的 PACKAGED gem 中包含测试,如果是,为什么?
换句话说,你是否将测试文件添加到 files
gemspec 属性,你是否通过 add_development_dependencies
包含测试依赖项?如果是这样,为什么?
测试 gem 并将测试包含在 gem 的源存储库中对我来说非常有意义。将测试与打包在 gem 中的已部署源代码一起包括在内对我来说意义不大。是否有一种标准方法可以让人们使用来自 rubygem 的 gem 的测试?
话虽这么说,好像很多大项目都包含测试,所以我一定漏掉了什么,对吧?
无需在 gem 文件中包含测试。但是,如果测试文件很小(它们可能很小),那没什么大不了的。
长期以来,在使用命令bundle gem mygemname
新建gem时,生成的gemspec
中包含了以下几行:
Gem::Specification.new do |s|
# ...
s.files = `git ls-files -z`.split("\x0")
s.test_files = s.files.grep(/^(test|spec|features)\//)
# ...
end
由于您的测试已经包含在 test_files
中,因此它们也包含在 files
中实际上并不重要。
但是,如果您今天 运行 使用相同的命令 bundle gem mygemname
,那么您将在生成的 gemspec
文件中看到这一行:
Gem::Specification.new do |s|
# ...
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
# No mention of s.test_files !
# ...
end
有什么变化?
好吧,s.test_files
现在 几乎 已弃用。有一个 open issue in RubyGems to not install test_files, which has been deferred to a post-2.x RubyGems release due to 'backward compatibility'. It also used to be possible to run tests for a Gem whilst installing it, with gem install -t gemname
; this feature has now been removed(参见错误 #25707)。
我相信,这就是为什么您仍然看到许多 gem 源代码中包含测试文件的原因。但是包括他们在内已经没有任何意义了。