Skip to content

Conversation

mhashizume
Copy link
Contributor

A new JSON gem release (2.8.0) changed how empty arrays and hashes are pretty printed. This PR updates Puppet to maintain past behavior and adds a test for empty hashes.

Ruby also released a new URI gem (1.0.0) this month that adds a space to their error messages. This PR updates our test to reflect that.

The URI gem recently updated its error messages to include a space where
there previously was not one: ruby/uri@9f2c7ed

This commit updates our test to reflect that change.
@mhashizume mhashizume added the maintenance Maintenance chores are excluded from changelogs label Nov 25, 2024
@mhashizume mhashizume requested a review from a team as a code owner November 25, 2024 23:47
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.
@mhashizume mhashizume force-pushed the maint/main/test-fixes branch from 2853f8f to 295d2f9 Compare November 25, 2024 23:50
@cthorn42 cthorn42 merged commit e967115 into puppetlabs:main Nov 26, 2024
7 of 11 checks passed
@mhashizume mhashizume deleted the maint/main/test-fixes branch November 26, 2024 17:09
bastelfreak pushed a commit to OpenVoxProject/openvox that referenced this pull request Aug 24, 2025
A bit of backstory. I did a lot of JRuby debugging in #122. Yesterday @sebastianrakel and I did a bit of deep diving. Some numbers:

* puppetserver 8.7.0, the last open source release from Perforce, ships JRuby 9.4.8.0
* openvox-server 8.9.0 ships JRuby 9.4.8.0
* puppet enterprise 2025.4.0 (latest version at 2025-07-27) ships pe-puppetserver JRuby 9.4.8.0
* latest JRuby 9.4 is 9.4.13.0
* JRuby 9.4 series is compatible with MRI Ruby 3.1
* puppetserver 7 uses JRuby 9.3 which is compatible with Ruby 2.6
* Perforce never tested JRuby 9.4.8.0 in CI, JRuby was pinned to 9.4.3.0

Since openvox runs tests, the Rspec JRuby pipeline fails. We cannot access the old perforce pipeline logs. Their last successful CI run I could fine was https://github.com/puppetlabs/puppet/actions/runs/11693993097. This was triggered by commit puppetlabs/puppet@4ea6ee2 on 2024-11-06.

In https://github.com/puppetlabs/puppet/actions/runs/12021455668 we see the first failed pipelline for puppetserver 8, triggered by  puppetlabs/puppet@e967115 on 2024-11-24. The used JRuby verison in both jobs was 9.4.3.0

Something changed between 2024-11-06 and 2024-11-24 and I doubt it was related to puppetlabs/puppet@e967115 (puppetlabs/puppet#9523).

Whatever changed in that timeframe modified the error reporting. Basic example:

```
class a {}
class a {}
```

raises:

```
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Class 'a' is already defined (file: /etc/puppetlabs/code/environments/server/manifests/site.pp, line: 1); cannot redefine (file: /etc/puppetlabs/code/environments/server/manifests/site.pp, line: 2) (file: /etc/puppetlabs/code/environments/server/manifests/site.pp, line: 2) on node puppettestinfra.voxpupu.li
```

After "cannot redefine", the file is listed twice. This issue is reproducible puppetserver 8.7.0, Puppet Enterprise 2025.4.0 & openvox-server 8.9.0.

After some testing in #122 I noticed that JRuby 9.4.3.0 indeed raises errors now, but others. I assume the JRuby issues are, at least in part, triggered by a webmock update. I don't know yet what causes the duplicate file lines in the output. The old rspec tests demand a single file line in the output.

In #164 I'm testing different Jruby Versions with a webmock pinned to 3.25.0. 3.25.0 was released on 2025-02-06. The version before that, 3.24.0, on 2024-09-30. That's what Perforce was using back then.

And after diffing CI output from JRuby 9.4.3, 9.4.4, 9.4.5 & 9.4.6 we can see that the duplicate line messages start with JRuby 9.4.6: https://gist.github.com/bastelfreak/025c23417f9dd7215b5c5af205fc8b76
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance Maintenance chores are excluded from changelogs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants