Subject: [bug#64083] [PATCH 2/2] gnu: ruby-nokogiri: Update to 1.15.2.

From: gemmaro <[email-masked]>
Date: Fri, 16 Jun 2023 02:08:28 +0900

* gnu/packages/ruby.scm (ruby-nokogiri): Update to 1.15.2.
  [source]<uri>: Use Git repository.
  <patches>: apply a patch to disable unneeded test setups.
  [arguments]: Enable check by running plain minitest.
  [home-page]: Update to current URL.
---
 gnu/packages/patches/ruby-nokogiri.patch | 29 +++++++++++++
 gnu/packages/ruby.scm                    | 54 ++++++++++++++----------
 2 files changed, 61 insertions(+), 22 deletions(-)
 create mode 100644 gnu/packages/patches/ruby-nokogiri.patch

diff --git a/gnu/packages/patches/ruby-nokogiri.patch b/gnu/packages/patches/ruby-nokogiri.patch
new file mode 100644
index 00000000000..b55b4302344
--- /dev/null
+++ b/gnu/packages/patches/ruby-nokogiri.patch
@@ -0,0 +1,29 @@
+Description: Removed some unnecessary test setup such as SimpleCov and
+  minitest-reporters.
+diff --git a/test/helper.rb b/test/helper.rb
+index ed3133c6..4f5d4f1b 100644
+--- a/test/helper.rb
++++ b/test/helper.rb
+@@ -13,22 +13,10 @@
+ # - NOKOGIRI_GC: read more in test/test_memory_leak.rb
+ #
+ 
+-require "simplecov"
+-SimpleCov.start do
+-  add_filter "/test/"
+-  enable_coverage :branch
+-end
+-
+ $VERBOSE = true
+ 
+ require "minitest/autorun"
+ require "minitest/benchmark"
+-require "minitest/reporters"
+-
+-nokogiri_minitest_reporters_options = { color: true, slow_count: 10, detailed_skip: false }
+-nokogiri_minitest_reporters_options[:fast_fail] = true if ENV["NOKOGIRI_TEST_FAIL_FAST"]
+-puts "Minitest::Reporters options: #{nokogiri_minitest_reporters_options}"
+-Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new(nokogiri_minitest_reporters_options))
+ 
+ require "fileutils"
+ require "tempfile"
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9587c29a0ab..ae345bd5bfc 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -6254,38 +6254,48 @@ (define-public ruby-mini-portile-2
 (define-public ruby-nokogiri
   (package
     (name "ruby-nokogiri")
-    (version "1.13.10")
+    (version "1.15.2")
     (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "nokogiri" version))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sparklemotion/nokogiri")
+                    (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720")))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0n79k78c5vdcyl0m3y3l5x9kxl6xf5lgriwi2vd665qmdkr01vnk"))))
+                "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj"))
+              (patches (search-patches "ruby-nokogiri.patch"))))
     (build-system ruby-build-system)
     (arguments
-     ;; Tests fail because Nokogiri can only test with an installed extension,
-     ;; and also because many test framework dependencies are missing.
-     (list
-      #:tests? #f
-      #:gem-flags #~(list "--" "--use-system-libraries"
-                          (string-append "--with-xml2-include="
-                                         #$(this-package-input "libxml2")
-                                         "/include/libxml2" ))
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'install 'delete-mkmf.log
-            (lambda _
-              ;; Rubygems installs build log files that embed volatile file
-              ;; names (see:
-              ;; https://github.com/rubygems/rubygems/issues/6259).
-              (for-each delete-file (find-files #$output "^mkmf\\.log$")))))))
-    (native-inputs (list ruby-hoe))
+     (list #:gem-flags #~(list "--" "--use-system-libraries"
+                               (string-append "--with-xml2-include="
+                                              #$(this-package-input "libxml2")
+                                              "/include/libxml2"))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'install 'delete-mkmf.log
+                          (lambda _
+                            ;; Rubygems installs build log files that embed volatile file
+                            ;; names (see:
+                            ;; https://github.com/rubygems/rubygems/issues/6259).
+                            (for-each delete-file
+                                      (find-files #$output "^mkmf\\.log$"))))
+                        (delete 'check)
+                        (add-after 'install 'check
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (setenv "GEM_PATH" (string-append
+                                                (getenv "GEM_PATH") ":"
+                                                #$output "/lib/ruby/vendor_ruby"))
+                            (when tests?
+                              (for-each (lambda (file)
+                                          (invoke "ruby" "-Itest" file))
+                                        (find-files "test" "^test_.*\\.rb"))))))))
+    (native-inputs (list ruby-hoe ruby-rubyzip))
     (inputs (list zlib libxml2 libxslt))
     (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config))
     (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
     (description "Nokogiri (鋸) parses and searches XML/HTML, and features
 both CSS3 selector and XPath 1.0 support.")
-    (home-page "https://www.nokogiri.org/")
+    (home-page "https://nokogiri.org/")
     (license license:expat)))
 
 (define-public ruby-method-source
-- 
2.40.1