diff --git a/lib/rubygems/yaml_serializer.rb b/lib/rubygems/yaml_serializer.rb index da6e72f5936e..e5df5f2f5ab1 100644 --- a/lib/rubygems/yaml_serializer.rb +++ b/lib/rubygems/yaml_serializer.rb @@ -573,7 +573,7 @@ def build_dependency(node) d = Gem::Dependency.allocate d.instance_variable_set(:@name, hash["name"]) - d.instance_variable_set(:@requirement, hash["requirement"]) + d.instance_variable_set(:@requirement, hash["requirement"] || hash["version_requirements"]) type = hash["type"] type = type ? type.to_s.sub(/^:/, "").to_sym : :runtime diff --git a/test/rubygems/test_gem_safe_yaml.rb b/test/rubygems/test_gem_safe_yaml.rb index 088e931e4788..06c46da3fdc1 100644 --- a/test/rubygems/test_gem_safe_yaml.rb +++ b/test/rubygems/test_gem_safe_yaml.rb @@ -921,6 +921,26 @@ def test_load_version_requirement_old_tag assert_equal [[">=", Gem::Version.new("1.0")]], req.requirements end + def test_load_dependency_version_version_requirement_old_tag + yaml = <<~YAML + - !ruby/object:Gem::Dependency + name: test-unit + type: :development + version_requirement: + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - ">=" + - !ruby/object:Gem::Version + version: 2.0.2 + version: + YAML + + deps = yaml_load(yaml, permitted_classes: Gem::SafeYAML::PERMITTED_CLASSES) + assert_not_nil(deps.first) + + assert_equal [[">=", Gem::Version.new("2.0.2")]], deps.first.requirement.requirements + end + def test_load_platform_from_value_field yaml = "!ruby/object:Gem::Platform\nvalue: x86-linux\n" plat = yaml_load(yaml, permitted_classes: Gem::SafeYAML::PERMITTED_CLASSES)