diff options
Diffstat (limited to 'test/ruby/test_default_gems.rb')
| -rw-r--r-- | test/ruby/test_default_gems.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/ruby/test_default_gems.rb b/test/ruby/test_default_gems.rb new file mode 100644 index 0000000000..b82e304cbd --- /dev/null +++ b/test/ruby/test_default_gems.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: false +require 'rubygems' + +class TestDefaultGems < Test::Unit::TestCase + def self.load(file) + code = File.read(file, mode: "r:UTF-8:-", &:read) + + # These regex patterns are from load_gemspec method of rbinstall.rb. + # - `git ls-files` is useless under ruby's repository + # - `2>/dev/null` works only on Unix-like platforms + code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split\([^\)]*\)/m, '[]') + code.gsub!(/IO\.popen\(.*git.*?\)/, '[] || itself') + + eval(code, binding, file) + end + + def test_validate_gemspec + srcdir = File.expand_path('../../..', __FILE__) + specs = 0 + Dir.chdir(srcdir) do + all_assertions_foreach(nil, *Dir["{lib,ext}/**/*.gemspec"]) do |src| + specs += 1 + assert_kind_of(Gem::Specification, self.class.load(src), "invalid spec in #{src}") + end + end + assert_operator specs, :>, 0, "gemspecs not found" + end + +end |
