From bee4f725b108341066aa08406eea6d1d11283cf0 Mon Sep 17 00:00:00 2001 From: Michael Hashizume Date: Mon, 25 Nov 2024 15:41:34 -0800 Subject: [PATCH 1/6] Maintain consistent JSON formatting The JSON gem has historically included newlines when pretty printing empty arrays or hashes. This changed with ruby/json@b2c4480 in JSON 2.8.0. In order to maintain consistent behavior for our users, this commit special cases empty array and hash facts and adds a new test for empty hashes. --- lib/puppet/face/facts.rb | 10 +++++++++- spec/unit/application/facts_spec.rb | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/puppet/face/facts.rb b/lib/puppet/face/facts.rb index 1075411208..3e9cdf32ec 100644 --- a/lib/puppet/face/facts.rb +++ b/lib/puppet/face/facts.rb @@ -167,7 +167,15 @@ case result when Array, Hash - Puppet::Util::Json.dump(result, :pretty => true) + # JSON < 2.8.0 would pretty print empty arrays and hashes with newlines + # Maintain that behavior for our users for now + if result.is_a?(Array) && result.empty? + "[\n\n]" + elsif result.is_a?(Hash) && result.empty? + "{\n}" + else + Puppet::Util::Json.dump(result, :pretty => true) + end else # one of VALID_TYPES above result end diff --git a/spec/unit/application/facts_spec.rb b/spec/unit/application/facts_spec.rb index a7e5106a11..c3aecd0425 100644 --- a/spec/unit/application/facts_spec.rb +++ b/spec/unit/application/facts_spec.rb @@ -91,7 +91,8 @@ { "type_hash" => [{'a' => 2}, "{\n \"a\": 2\n}"], - "type_array" => [[], "[]"], + "type_empty_hash" => [{}, "{\n}"], + "type_array" => [[], "[\n\n]"], "type_string" => ["str", "str"], "type_int" => [1, "1"], "type_float" => [1.0, "1.0"], From a4e1c38b8954e55f3e7ee1a0f53e8a145c5c2493 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Fri, 13 Jun 2025 23:56:39 +0200 Subject: [PATCH 2/6] CI: Test jruby-9.4.3 We have some weird JRuby issues on main. Previously we pinned to JRuby-9.4 on Ubuntu-24.04. That currently gives us https://github.com/ruby/ruby-builder/releases/download/toolcache/jruby-9.4.13.0-ubuntu-24.04.tar.gz The old Perforce CI was pinned to jruby-9.4.3.0 on Ubuntu 22.04, lets try that. --- .github/workflows/rspec_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rspec_tests.yaml b/.github/workflows/rspec_tests.yaml index c9e9fbbd80..a4baefa4e7 100644 --- a/.github/workflows/rspec_tests.yaml +++ b/.github/workflows/rspec_tests.yaml @@ -20,7 +20,7 @@ jobs: - {os: ubuntu-24.04, ruby: '3.2'} # openssl 3 - {os: ubuntu-24.04, ruby: '3.3'} # openssl 3 - {os: ubuntu-24.04, ruby: '3.4'} # openssl 3 - - {os: ubuntu-24.04, ruby: 'jruby-9.4'} + - {os: ubuntu-22.04, ruby: 'jruby-9.4.3'} - {os: windows-2019, ruby: '3.1'} - {os: windows-2019, ruby: '3.2'} # openssl 3 - {os: windows-2019, ruby: '3.3'} # openssl 3 / latest Ruby From b2e02d8399ca2d5f1ba82fc49f0500d0def774c3 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Sat, 14 Jun 2025 19:57:02 +0200 Subject: [PATCH 3/6] Test more jruby versions --- .github/workflows/rspec_tests.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/rspec_tests.yaml b/.github/workflows/rspec_tests.yaml index a4baefa4e7..03d55e4135 100644 --- a/.github/workflows/rspec_tests.yaml +++ b/.github/workflows/rspec_tests.yaml @@ -21,6 +21,9 @@ jobs: - {os: ubuntu-24.04, ruby: '3.3'} # openssl 3 - {os: ubuntu-24.04, ruby: '3.4'} # openssl 3 - {os: ubuntu-22.04, ruby: 'jruby-9.4.3'} + - {os: ubuntu-22.04, ruby: 'jruby-9.4.3'} # what Perforce used in their CI + - {os: ubuntu-22.04, ruby: 'jruby-9.4.8' } # what Openvox packages + - {os: ubuntu-22.04, ruby: 'jruby-9.4.13' } # latest - {os: windows-2019, ruby: '3.1'} - {os: windows-2019, ruby: '3.2'} # openssl 3 - {os: windows-2019, ruby: '3.3'} # openssl 3 / latest Ruby From ba138f3bf67f8dd7577efdf8e165c525887963ad Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Sat, 14 Jun 2025 20:29:13 +0200 Subject: [PATCH 4/6] Test on even more jruy versions --- .github/workflows/rspec_tests.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/rspec_tests.yaml b/.github/workflows/rspec_tests.yaml index 03d55e4135..fc5a19bdb4 100644 --- a/.github/workflows/rspec_tests.yaml +++ b/.github/workflows/rspec_tests.yaml @@ -22,6 +22,10 @@ jobs: - {os: ubuntu-24.04, ruby: '3.4'} # openssl 3 - {os: ubuntu-22.04, ruby: 'jruby-9.4.3'} - {os: ubuntu-22.04, ruby: 'jruby-9.4.3'} # what Perforce used in their CI + - {os: ubuntu-22.04, ruby: 'jruby-9.4.4'} + - {os: ubuntu-22.04, ruby: 'jruby-9.4.5'} + - {os: ubuntu-22.04, ruby: 'jruby-9.4.6'} + - {os: ubuntu-22.04, ruby: 'jruby-9.4.7'} - {os: ubuntu-22.04, ruby: 'jruby-9.4.8' } # what Openvox packages - {os: ubuntu-22.04, ruby: 'jruby-9.4.13' } # latest - {os: windows-2019, ruby: '3.1'} From c1461c542f7345b7fc693defd8dc686d996a106e Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Sat, 14 Jun 2025 20:58:19 +0200 Subject: [PATCH 5/6] CI: Limit rspec concurrency to 2 --- .github/workflows/rspec_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rspec_tests.yaml b/.github/workflows/rspec_tests.yaml index fc5a19bdb4..a34a627da5 100644 --- a/.github/workflows/rspec_tests.yaml +++ b/.github/workflows/rspec_tests.yaml @@ -91,4 +91,4 @@ jobs: sudo apt remove rpm fi - bundle exec rake parallel:spec + bundle exec rake parallel:spec[2] From deb33260a6c64da51bfb5793dc37786ed5ac4e74 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 19 Jun 2025 01:20:54 +0200 Subject: [PATCH 6/6] webmock: Pin to < 3.25 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 1d95b68e31..0259dab594 100644 --- a/Gemfile +++ b/Gemfile @@ -49,7 +49,7 @@ group(:test) do gem "rspec-its", "~> 1.1", require: false gem 'rspec-mocks', '< 3.13.3', require: false # breaking change afterwards: https://github.com/rspec/rspec-mocks/pull/1596 gem 'vcr', '~> 6.1', require: false - gem 'webmock', '~> 3.0', require: false + gem 'webmock', '~> 3.0', '< 3.25', require: false gem 'webrick', '~> 1.7', require: false gem 'yard', require: false