Fix FTBFS due to Ruby 3.1 / Psych 4.0 test incompatibility.
Resolves: rhbz#2113704
This commit is contained in:
parent
4f55e72333
commit
343ba3adf5
174
rubygem-ronn-ng-0.9.1-Permit-Time-class-loading-from-YAML.patch
Normal file
174
rubygem-ronn-ng-0.9.1-Permit-Time-class-loading-from-YAML.patch
Normal file
@ -0,0 +1,174 @@
|
||||
From 25158fabc2c83862de90f319b7dffc9e60904dac Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 30 Aug 2022 09:07:15 +0200
|
||||
Subject: [PATCH 1/4] Permit `Time` class loading from YAML.
|
||||
|
||||
Since Psych 4.0, the `safe_load` is used as default loading mechanism.
|
||||
There are just a few permitted classes and `Time` is not one of them
|
||||
[[1]]. This results it test failure:
|
||||
|
||||
~~~
|
||||
Error: test_converting_to_yaml(DocumentTest::TestSimpleConventionallyNamedDocument): Psych::DisallowedClass: Tried to load unspecified class: Time
|
||||
~~~
|
||||
|
||||
Please also note that in YAML specs 1.2, the `timestamp` is not
|
||||
listed as supported tag anymore [[2]].
|
||||
|
||||
Given that:
|
||||
|
||||
1) ronn-ng does not provide any supported way of loading the serialized
|
||||
YAML.
|
||||
2) The `to_yaml` does not appear to be used internally/externally
|
||||
anywhere.
|
||||
3) If there were users of this functionality, it would have been already
|
||||
know, reported and fixed at this moment.
|
||||
|
||||
The best course of action is fixing the test case by listing the `Time`
|
||||
as valid class for parsing.
|
||||
|
||||
Fixes #80
|
||||
|
||||
[1]: https://docs.ruby-lang.org/en/master/Psych.html#method-c-safe_load
|
||||
[2]: https://github.com/yaml/yaml-spec/issues/268
|
||||
---
|
||||
test/test_ronn_document.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/test_ronn_document.rb b/test/test_ronn_document.rb
|
||||
index 75788dc..a86793f 100644
|
||||
--- a/test/test_ronn_document.rb
|
||||
+++ b/test/test_ronn_document.rb
|
||||
@@ -146,7 +146,7 @@ def canonicalize(text)
|
||||
'toc' => [['NAME', 'NAME']],
|
||||
'organization' => nil,
|
||||
'manual' => nil
|
||||
- }, YAML.load(@doc.to_yaml))
|
||||
+ }, YAML.load(@doc.to_yaml, permitted_classes: [Time]))
|
||||
end
|
||||
|
||||
test 'converting to json' do
|
||||
|
||||
From c8aaa0235ed0dd41ea7ea83e5133ae494cbf072a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 30 Aug 2022 09:59:07 +0200
|
||||
Subject: [PATCH 2/4] Check if `YAML.load` supports `permitted_classes` kwarg.
|
||||
|
||||
This is due to Ruby 3.1 + Psych 4.0 changed changed `YAML.load` to use
|
||||
`safe_load` by default.
|
||||
---
|
||||
test/test_ronn_document.rb | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/test_ronn_document.rb b/test/test_ronn_document.rb
|
||||
index a86793f..c9c08c7 100644
|
||||
--- a/test/test_ronn_document.rb
|
||||
+++ b/test/test_ronn_document.rb
|
||||
@@ -137,6 +137,15 @@ def canonicalize(text)
|
||||
|
||||
test 'converting to yaml' do
|
||||
require 'yaml'
|
||||
+ # Check if `permitted_classes` keyword argument is available. That means
|
||||
+ # `safe_load` is the default loading mechanism, i.e. Ruby 3.1 + Psych 4.0
|
||||
+ # are used.
|
||||
+ kwargs = !(YAML.method(:load).parameters & [[:key, :permitted_classes]]).empty?
|
||||
+ loaded_yaml = if kwargs
|
||||
+ YAML.load(@doc.to_yaml, permitted_classes: [Time])
|
||||
+ else
|
||||
+ YAML.load(@doc.to_yaml)
|
||||
+ end
|
||||
assert_equal({
|
||||
'section' => '1',
|
||||
'name' => 'hello',
|
||||
@@ -146,7 +155,7 @@ def canonicalize(text)
|
||||
'toc' => [['NAME', 'NAME']],
|
||||
'organization' => nil,
|
||||
'manual' => nil
|
||||
- }, YAML.load(@doc.to_yaml, permitted_classes: [Time]))
|
||||
+ }, loaded_yaml)
|
||||
end
|
||||
|
||||
test 'converting to json' do
|
||||
|
||||
From d7bbcd7ef4461bd28eb3e9fc1880f7a5d5d46d88 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 30 Aug 2022 10:09:19 +0200
|
||||
Subject: [PATCH 3/4] Extract the YAML loading logic into function
|
||||
|
||||
This is to make the test case less poluted. Can be dropped once only
|
||||
Ruby 3.1+ is supported.
|
||||
---
|
||||
test/test_ronn_document.rb | 23 +++++++++++++----------
|
||||
1 file changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/test/test_ronn_document.rb b/test/test_ronn_document.rb
|
||||
index c9c08c7..ae6f72a 100644
|
||||
--- a/test/test_ronn_document.rb
|
||||
+++ b/test/test_ronn_document.rb
|
||||
@@ -12,6 +12,18 @@ def canonicalize(text)
|
||||
.tr('"', "'")
|
||||
end
|
||||
|
||||
+ def yaml_load(yaml)
|
||||
+ # Check if `permitted_classes` keyword argument is available. That means
|
||||
+ # `safe_load` is the default loading mechanism, i.e. Ruby 3.1 + Psych 4.0
|
||||
+ # are used.
|
||||
+ kwargs = !(YAML.method(:load).parameters & [[:key, :permitted_classes]]).empty?
|
||||
+ if kwargs
|
||||
+ YAML.load(yaml, permitted_classes: [Time])
|
||||
+ else
|
||||
+ YAML.load(yaml)
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
test 'new with path' do
|
||||
doc = Ronn::Document.new(SIMPLE_FILE)
|
||||
assert_equal File.read(SIMPLE_FILE), doc.data
|
||||
@@ -137,15 +149,6 @@ def canonicalize(text)
|
||||
|
||||
test 'converting to yaml' do
|
||||
require 'yaml'
|
||||
- # Check if `permitted_classes` keyword argument is available. That means
|
||||
- # `safe_load` is the default loading mechanism, i.e. Ruby 3.1 + Psych 4.0
|
||||
- # are used.
|
||||
- kwargs = !(YAML.method(:load).parameters & [[:key, :permitted_classes]]).empty?
|
||||
- loaded_yaml = if kwargs
|
||||
- YAML.load(@doc.to_yaml, permitted_classes: [Time])
|
||||
- else
|
||||
- YAML.load(@doc.to_yaml)
|
||||
- end
|
||||
assert_equal({
|
||||
'section' => '1',
|
||||
'name' => 'hello',
|
||||
@@ -155,7 +158,7 @@ def canonicalize(text)
|
||||
'toc' => [['NAME', 'NAME']],
|
||||
'organization' => nil,
|
||||
'manual' => nil
|
||||
- }, loaded_yaml)
|
||||
+ }, yaml_load(@doc.to_yaml))
|
||||
end
|
||||
|
||||
test 'converting to json' do
|
||||
|
||||
From 7c49ae1926728987ca97e014931bb9148aa868b1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 30 Aug 2022 10:25:46 +0200
|
||||
Subject: [PATCH 4/4] Use symbol array literal.
|
||||
|
||||
This should make Rubocop happy.
|
||||
---
|
||||
test/test_ronn_document.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/test_ronn_document.rb b/test/test_ronn_document.rb
|
||||
index ae6f72a..aa97a88 100644
|
||||
--- a/test/test_ronn_document.rb
|
||||
+++ b/test/test_ronn_document.rb
|
||||
@@ -16,7 +16,7 @@ def yaml_load(yaml)
|
||||
# Check if `permitted_classes` keyword argument is available. That means
|
||||
# `safe_load` is the default loading mechanism, i.e. Ruby 3.1 + Psych 4.0
|
||||
# are used.
|
||||
- kwargs = !(YAML.method(:load).parameters & [[:key, :permitted_classes]]).empty?
|
||||
+ kwargs = !(YAML.method(:load).parameters & [%i[key permitted_classes]]).empty?
|
||||
if kwargs
|
||||
YAML.load(yaml, permitted_classes: [Time])
|
||||
else
|
@ -3,11 +3,15 @@
|
||||
|
||||
Name: rubygem-%{gem_name}
|
||||
Version: 0.9.1
|
||||
Release: 5%{?dist}
|
||||
Release: 6%{?dist}
|
||||
Summary: Builds man pages from Markdown
|
||||
License: MIT
|
||||
URL: https://github.com/apjanke/ronn-ng
|
||||
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||
# Fix Ruby 3.1 / Psych 4.0 test compatibility.
|
||||
# https://github.com/apjanke/ronn-ng/issues/80
|
||||
# https://github.com/apjanke/ronn-ng/pull/81
|
||||
Patch0: rubygem-ronn-ng-0.9.1-Permit-Time-class-loading-from-YAML.patch
|
||||
BuildRequires: ruby(release)
|
||||
BuildRequires: rubygems-devel
|
||||
BuildRequires: ruby
|
||||
@ -40,6 +44,8 @@ Documentation for %{name}.
|
||||
%prep
|
||||
%setup -q -n %{gem_name}-%{version}
|
||||
|
||||
%patch0 -p1
|
||||
|
||||
# Upstream specifies mustache==0.7, but we have 1.1 and it seems to work fine...
|
||||
%gemspec_remove_dep -g mustache "~> 0.7"
|
||||
|
||||
@ -108,6 +114,10 @@ popd
|
||||
%{gem_instdir}/test
|
||||
|
||||
%changelog
|
||||
* Thu Sep 08 2022 Vít Ondruch <vondruch@redhat.com> - 0.9.1-6
|
||||
- Fix FTBFS due to Ruby 3.1 / Psych 4.0 test incompatibility.
|
||||
Resolves: rhbz#2113704
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user