-
Notifications
You must be signed in to change notification settings - Fork 228
QE: Update to Ruby 4.0 #11349
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
QE: Update to Ruby 4.0 #11349
Conversation
|
👋 Hello! Thanks for contributing to our project. You can see the progress at the end of this page and at https://github.com/uyuni-project/uyuni/pull/11349/checks If you are unsure the failing tests are related to your code, you can check the "reference jobs". These are jobs that run on a scheduled time with code from master. If they fail for the same reason as your build, it means the tests or the infrastructure are broken. If they do not fail, but yours do, it means it is related to your code. Reference tests: KNOWN ISSUES Sometimes the build can fail when pulling new jar files from download.opensuse.org . This is a known limitation. Given this happens rarely, when it does, all you need to do is rerun the test. Sorry for the inconvenience. For more tips on troubleshooting, see the troubleshooting guide. Happy hacking! |
Rubocopdominik-controller:~/spacewalk/testsuite # rubocop
Inspecting 52 files
....................................................
52 files inspected, no offenses detected |
Sanity checkdominik-controller:~/spacewalk/testsuite # rake cucumber:sanity_check
/usr/bin/ruby.ruby4.0 -S bundle exec cucumber --profile default -f html -o results/output_20260101164335-sanity_check.html -f json -o results/output_20260101164335-sanity_check.json -f junit -o results_junit -f pretty -r features features/core/allcli_sanity.feature
Minion IP address or domain name variable empty
Buildhost IP address or domain name variable empty
Red Hat-like minion IP address or domain name variable empty
Debian-like minion IP address or domain name variable empty
SSH minion IP address or domain name variable empty
PXE boot MAC address variable empty
Using Ruby version: 4.0.0
Initializing a remote node for 'server'.
Host 'server' is alive with determined hostname dominik-server and FQDN dominik-server.mgr.suse.de
Node: dominik-server, OS Version: 15-SP7, Family: sles
Node: dominik-server, OS Version: 15-SP7, Family: sles
Capybara APP Host: https://dominik-server.mgr.suse.de:8888
Activating XML-RPC API
Using the default profile...
# Copyright (c) 2019-2025 SUSE LLC
# Licensed under the terms of the MIT license.
Feature: Sanity checks
In order to use the product
I want to be sure to use a sane environment
Scenario: The server is healthy # features/core/allcli_sanity.feature:8
This scenario ran at: 2026-01-01 16:43:42 +0100
Then "server" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "server" # features/step_definitions/command_steps.rb:28
And the clock from "server" should be exact # features/step_definitions/command_steps.rb:46
And service "apache2" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "apache2" is active on "server" # features/step_definitions/command_steps.rb:746
And service "cobblerd" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "cobblerd" is active on "server" # features/step_definitions/command_steps.rb:746
And service "rhn-search" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "rhn-search" is active on "server" # features/step_definitions/command_steps.rb:746
And service "salt-api" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "salt-api" is active on "server" # features/step_definitions/command_steps.rb:746
And service "salt-master" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "salt-master" is active on "server" # features/step_definitions/command_steps.rb:746
And service "taskomatic" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "taskomatic" is active on "server" # features/step_definitions/command_steps.rb:746
And socket "tftp" is enabled on "server" # features/step_definitions/command_steps.rb:753
And socket "tftp" is active on "server" # features/step_definitions/command_steps.rb:760
And service "tomcat" is enabled on "server" # features/step_definitions/command_steps.rb:739
And service "tomcat" is active on "server" # features/step_definitions/command_steps.rb:746
This scenario took: 10 seconds
@proxy
Scenario: The proxy is healthy # features/core/allcli_sanity.feature:30
This scenario ran at: 2026-01-01 16:43:52 +0100
Initializing a remote node for 'proxy'.
Host 'proxy' is alive with determined hostname dominik-proxy and FQDN dominik-proxy.mgr.suse.de
Node: dominik-proxy, OS Version: 6.1, Family: sl-micro
Node: dominik-proxy, OS Version: 6.1, Family: sl-micro
Then "proxy" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "proxy" # features/step_definitions/command_steps.rb:28
And "proxy" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "proxy" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 11 seconds
@sle_minion
Scenario: The minion is healthy # features/core/allcli_sanity.feature:37
This scenario ran at: 2026-01-01 16:44:03 +0100
Then "sle_minion" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "sle_minion" # features/step_definitions/command_steps.rb:28
And "sle_minion" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "sle_minion" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 0 seconds
@build_host
Scenario: The build host is healthy # features/core/allcli_sanity.feature:44
This scenario ran at: 2026-01-01 16:44:03 +0100
Then "build_host" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "build_host" # features/step_definitions/command_steps.rb:28
And "build_host" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "build_host" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 0 seconds
@ssh_minion
Scenario: The SSH minion is healthy # features/core/allcli_sanity.feature:51
This scenario ran at: 2026-01-01 16:44:03 +0100
Then "ssh_minion" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "ssh_minion" # features/step_definitions/command_steps.rb:28
And "ssh_minion" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "ssh_minion" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 0 seconds
@rhlike_minion
Scenario: The Red Hat-like minion is healthy # features/core/allcli_sanity.feature:58
This scenario ran at: 2026-01-01 16:44:03 +0100
Then "rhlike_minion" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "rhlike_minion" # features/step_definitions/command_steps.rb:28
And "rhlike_minion" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "rhlike_minion" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 0 seconds
@deblike_minion
Scenario: The Debian-like minion is healthy # features/core/allcli_sanity.feature:65
This scenario ran at: 2026-01-01 16:44:03 +0100
Then "deblike_minion" should have a FQDN # features/step_definitions/command_steps.rb:15
And reverse resolution should work for "deblike_minion" # features/step_definitions/command_steps.rb:28
And "deblike_minion" should communicate with the server using public interface # features/step_definitions/retail_steps.rb:47
And the clock from "deblike_minion" should be exact # features/step_definitions/command_steps.rb:46
This scenario took: 0 seconds
@skip_if_cloud
Scenario: The external resources can be reached # features/core/allcli_sanity.feature:72
This scenario ran at: 2026-01-01 16:44:03 +0100
Then it should be possible to reach the test packages # features/step_definitions/command_steps.rb:54
And it should be possible to reach the build sources # features/step_definitions/command_steps.rb:72
And it should be possible to reach the Docker profiles # features/step_definitions/command_steps.rb:82
This scenario took: 2 seconds
@server_http_proxy
Scenario: The HTTP proxy is working # features/core/allcli_sanity.feature:78
This scenario ran at: 2026-01-01 16:44:05 +0100
Then it should be possible to use the HTTP proxy # features/step_definitions/command_steps.rb:59
This scenario took: 0 seconds
@auth_registry
Scenario: The registry with authentication is healthy # features/core/allcli_sanity.feature:82
This scenario ran at: 2026-01-01 16:44:05 +0100
Then it should be possible to reach the authenticated registry # features/step_definitions/command_steps.rb:90
This scenario took: 1 seconds
@no_auth_registry
Scenario: The registry without authentication is healthy # features/core/allcli_sanity.feature:86
This scenario ran at: 2026-01-01 16:44:06 +0100
Then it should be possible to reach the not authenticated registry # features/step_definitions/command_steps.rb:97
This scenario took: 0 seconds
@custom_download_endpoint
Scenario: The custom download endpoint is working # features/core/allcli_sanity.feature:90
This scenario ran at: 2026-01-01 16:44:06 +0100
Then it should be possible to use the custom download endpoint # features/step_definitions/command_steps.rb:67
This scenario took: 0 seconds
12 scenarios (7 skipped, 5 passed)
50 steps (22 skipped, 28 passed)
0m24.110s |
Coredominik-controller:~/spacewalk/testsuite # rake cucumber:core
/usr/bin/ruby.ruby4.0 -S bundle exec cucumber --profile default -f html -o results/output_20260101164633-core.html -f json -o results/output_20260101164633-core.json -f junit -o results_junit -f pretty -r features --fail-fast features/core/srv_first_settings.feature features/core/srv_disable_local_repos_off.feature features/core/srv_organization_credentials.feature features/core/srv_user_preferences.feature features/core/srv_osimage.feature features/core/srv_docker.feature
Minion IP address or domain name variable empty
Buildhost IP address or domain name variable empty
Red Hat-like minion IP address or domain name variable empty
Debian-like minion IP address or domain name variable empty
SSH minion IP address or domain name variable empty
PXE boot MAC address variable empty
Using Ruby version: 4.0.0
Initializing a remote node for 'server'.
Host 'server' is alive with determined hostname dominik-server and FQDN dominik-server.mgr.suse.de
Node: dominik-server, OS Version: 15-SP7, Family: sles
Node: dominik-server, OS Version: 15-SP7, Family: sles
Capybara APP Host: https://dominik-server.mgr.suse.de:8888
Activating XML-RPC API
Using the default profile...
# Copyright (c) 2017-2024 SUSE LLC
# Licensed under the terms of the MIT license.
#
# This feature can cause failures in:
# Almost every feature if the "admin" user fails to be created.
# If the "testing" user fails to be created:
# - features/core/srv_user_preferences.feature
# - features/secondary/min_action_chain.feature
# - features/secondary/min_rhlike_remote_command.feature
# - features/secondary/minssh_action_chain.feature
# - features/secondary/srv_cobbler_buildiso.feature
# - features/secondary/srv_cobbler_distro.feature
# - features/secondary/srv_cobbler_profile.feature
# - features/secondary/srv_mainpage.feature
# - features/secondary/srv_users.feature
Feature: Very first settings
In order to use the product
As the admin user
I want to create the organisation, the first users and set the HTTP proxy
Scenario: Cleanup Salt files # features/core/srv_first_settings.feature:22
This scenario ran at: 2026-01-01 16:46:40 +0100
When I run "rm -Rf /srv/salt/*" on "server" # features/step_definitions/command_steps.rb:776
This scenario took: 1 seconds
@skip_if_containerized_server
Scenario: Create admin user and first organization # features/core/srv_first_settings.feature:26
This scenario ran at: 2026-01-01 16:46:41 +0100
Given I access the host the first time # features/step_definitions/navigation_steps.rb:450
When I go to the home page # features/step_definitions/navigation_steps.rb:446
And I enter "SUSE Test" as "orgName" # features/step_definitions/navigation_steps.rb:251
And I enter "admin" as "login" # features/step_definitions/navigation_steps.rb:251
And I enter "admin" as "desiredpassword" # features/step_definitions/navigation_steps.rb:251
And I enter "admin" as "desiredpasswordConfirm" # features/step_definitions/navigation_steps.rb:251
And I select "Mr." from "prefix" # features/step_definitions/navigation_steps.rb:188
And I enter "Admin" as "firstNames" # features/step_definitions/navigation_steps.rb:251
And I enter "Admin" as "lastName" # features/step_definitions/navigation_steps.rb:251
And I enter "galaxy-noise@localhost" as "email" # features/step_definitions/navigation_steps.rb:251
And I click on "Create Organization" # features/step_definitions/navigation_steps.rb:291
Then I am logged in # features/step_definitions/navigation_steps.rb:630
This scenario took: 0 seconds
Scenario: Log in as admin user # features/core/srv_first_settings.feature:40
This scenario ran at: 2026-01-01 16:46:41 +0100
Given I am authorized for the "Admin" section # features/step_definitions/navigation_steps.rb:456
This scenario took: 16 seconds
Scenario: Wait for refresh of list of products to finish # features/core/srv_first_settings.feature:43
This scenario ran at: 2026-01-01 16:46:57 +0100
When I wait until mgr-sync refresh is finished # features/step_definitions/command_steps.rb:718
This scenario took: 5 seconds
Scenario: Create testing username # features/core/srv_first_settings.feature:46
This scenario ran at: 2026-01-01 16:47:02 +0100
When I follow the left menu "Users > User List > Active" # features/step_definitions/navigation_steps.rb:392
And I follow "Create User" # features/step_definitions/navigation_steps.rb:337
And I enter "testing" as "login" # features/step_definitions/navigation_steps.rb:251
And I enter "testing" as "desiredpassword" # features/step_definitions/navigation_steps.rb:251
And I enter "testing" as "desiredpasswordConfirm" # features/step_definitions/navigation_steps.rb:251
And I select "Mr." from "prefix" # features/step_definitions/navigation_steps.rb:188
And I enter "Test" as "firstNames" # features/step_definitions/navigation_steps.rb:251
And I enter "User" as "lastName" # features/step_definitions/navigation_steps.rb:251
And I enter "galaxy-noise@localhost" as "email" # features/step_definitions/navigation_steps.rb:251
And I click on "Create Login" # features/step_definitions/navigation_steps.rb:291
Then I should see a "Account testing created, login information sent to galaxy-noise@localhost" text # features/step_definitions/navigation_steps.rb:660
And I should see a "testing" link # features/step_definitions/navigation_steps.rb:727
This scenario took: 2 seconds
Scenario: Grant testing user administrative priviledges # features/core/srv_first_settings.feature:60
This scenario ran at: 2026-01-01 16:47:04 +0100
When I follow the left menu "Users > User List > Active" # features/step_definitions/navigation_steps.rb:392
And I follow "testing" # features/step_definitions/navigation_steps.rb:337
And I check "role_org_admin" # features/step_definitions/navigation_steps.rb:161
And I check "role_system_group_admin" # features/step_definitions/navigation_steps.rb:161
And I check "role_channel_admin" # features/step_definitions/navigation_steps.rb:161
And I check "role_activation_key_admin" # features/step_definitions/navigation_steps.rb:161
And I check "role_config_admin" # features/step_definitions/navigation_steps.rb:161
And I click on "Update" # features/step_definitions/navigation_steps.rb:291
Then I should see a "User information updated" text # features/step_definitions/navigation_steps.rb:660
And I should see a "testing" text # features/step_definitions/navigation_steps.rb:660
This scenario took: 2 seconds
@server_http_proxy
Scenario: Setup HTTP proxy # features/core/srv_first_settings.feature:73
This scenario ran at: 2026-01-01 16:47:06 +0100
When I follow the left menu "Admin > Setup Wizard > HTTP Proxy" # features/step_definitions/navigation_steps.rb:392
Then I should see a "HTTP Proxy Hostname" text # features/step_definitions/navigation_steps.rb:660
And I should see a "HTTP Proxy Username" text # features/step_definitions/navigation_steps.rb:660
And I should see a "HTTP Proxy Password" text # features/step_definitions/navigation_steps.rb:660
When I enter the address of the HTTP proxy as "HTTP Proxy Hostname" # features/step_definitions/setup_steps.rb:13
And I enter "suma3" as "HTTP Proxy Username" # features/step_definitions/navigation_steps.rb:251
And I enter "P4$$w/ord With%and&" as "HTTP Proxy Password" # features/step_definitions/navigation_steps.rb:251
And I click on "Save and Verify" # features/step_definitions/navigation_steps.rb:291
Then HTTP proxy verification should have succeeded # features/step_definitions/setup_steps.rb:9
This scenario took: 0 seconds
Scenario: Detect latest Salt changes on the server # features/core/srv_first_settings.feature:84
This scenario ran at: 2026-01-01 16:47:06 +0100
When I query latest Salt changes on "server" # features/step_definitions/command_steps.rb:240
* Thu Nov 13 2025 marek.czernek@suse.com
- Require Python dependencies only for used Python version
* Tue Nov 11 2025 marek.czernek@suse.com
- Fix TLS and x509 modules for OSes with older cryptography module
- Require python-legacy-cgi only for Python > 3.12
- Added:
* fix-tls-and-x509-modules-for-older-cryptography-modu.patch
* Mon Nov 10 2025 marek.czernek@suse.com
- Builds with py >=3.13 require python-legacy-cgi
* Fri Nov 07 2025 pablo.suarezhernandez@suse.com
- Fix Salt for Python > 3.11 (bsc#1252285) (bsc#1252244)
* Use external tornado on Python > 3.11
This scenario took: 1 seconds
Feature: Turn "disable_local_repos" feature on highstate off
In order to test the product using shortcuts
As root user
I want to add pillar data to disable that feature
Scenario: Create custom pillar to turn off "disable_local_repos" # features/core/srv_disable_local_repos_off.feature:9
This scenario ran at: 2026-01-01 16:47:07 +0100
Initializing a remote node for 'localhost'.
Host 'localhost' is alive with determined hostname dominik-controller and FQDN dominik-controller.mgr.suse.de
Node: dominik-controller, OS Version: 15.6, Family: opensuse-leap
Node: dominik-controller, OS Version: 15.6, Family: opensuse-leap
/usr/lib64/ruby/gems/4.0.0/gems/net-scp-4.1.0/lib/net/scp.rb:333: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
When I turn off disable_local_repos for all clients # features/step_definitions/command_steps.rb:41
This scenario took: 5 seconds
Feature: Organization credentials in the Setup Wizard
@scc_credentials @no_mirror
Scenario: Enter valid SCC credentials # features/core/srv_organization_credentials.feature:10
This scenario ran at: 2026-01-01 16:47:12 +0100
Given I am authorized for the "Admin" section # features/step_definitions/navigation_steps.rb:456
When I follow the left menu "Admin > Setup Wizard > Organization Credentials" # features/step_definitions/navigation_steps.rb:392
And I ask to add new credentials # features/step_definitions/setup_steps.rb:17
And I enter the SCC credentials # features/step_definitions/setup_steps.rb:21
And I click on "Save" # features/step_definitions/navigation_steps.rb:291
And I wait until the SCC credentials are valid # features/step_definitions/setup_steps.rb:29
This scenario took: 3 seconds
Feature: Change personal preferences
In order to set up my personal preferences
As admin
I want to navigate through "Home" submenus changing some settings
Scenario: Change page size to 100 per page in admin user # features/core/srv_user_preferences.feature:9
This scenario ran at: 2026-01-01 16:47:15 +0100
Given I am authorized as "admin" with password "admin" # features/step_definitions/navigation_steps.rb:578
When I follow the left menu "Home > My Preferences" # features/step_definitions/navigation_steps.rb:392
And I select "100" from "pagesize" # features/step_definitions/navigation_steps.rb:188
And I click on "Save Preferences" # features/step_definitions/navigation_steps.rb:291
Then I should see a "Preferences modified" text # features/step_definitions/navigation_steps.rb:660
This scenario took: 2 seconds
Scenario: Change page size to 100 per page in testing user # features/core/srv_user_preferences.feature:16
This scenario ran at: 2026-01-01 16:47:17 +0100
Given I am authorized as "testing" with password "testing" # features/step_definitions/navigation_steps.rb:578
When I follow the left menu "Home > My Preferences" # features/step_definitions/navigation_steps.rb:392
And I select "100" from "pagesize" # features/step_definitions/navigation_steps.rb:188
And I click on "Save Preferences" # features/step_definitions/navigation_steps.rb:291
Then I should see a "Preferences modified" text # features/step_definitions/navigation_steps.rb:660
This scenario took: 4 seconds
Feature: Prepare server for using Kiwi
Scenario: Create a Kiwi user with image administrators rights # features/core/srv_osimage.feature:11
This scenario ran at: 2026-01-01 16:47:21 +0100
Given I am authorized for the "Admin" section # features/step_definitions/navigation_steps.rb:456
When I create a user with name "kiwikiwi" and password "kiwikiwi" with roles "image_admin" # features/step_definitions/api_common.rb:172
New user kiwikiwi created with roles: image_admin
This scenario took: 4 seconds
Feature: Prepare server for using Docker
Scenario: Create a Docker user with image administrators rights # features/core/srv_docker.feature:9
This scenario ran at: 2026-01-01 16:47:25 +0100
Given I am authorized for the "Admin" section # features/step_definitions/navigation_steps.rb:456
When I create a user with name "docker" and password "docker" with roles "image_admin" # features/step_definitions/api_common.rb:172
New user docker created with roles: image_admin
This scenario took: 2 seconds
@no_auth_registry
Scenario: Create an image store without credentials # features/core/srv_docker.feature:14
This scenario ran at: 2026-01-01 16:47:27 +0100
When I follow the left menu "Images > Stores" # features/step_definitions/navigation_steps.rb:392
And I follow "Create" # features/step_definitions/navigation_steps.rb:337
And I enter "galaxy-registry" as "label" # features/step_definitions/navigation_steps.rb:251
And I enter the URI of the registry as "uri" # features/step_definitions/navigation_steps.rb:275
And I click on "create-btn" # features/step_definitions/navigation_steps.rb:291
Then I wait until table row contains a "galaxy-registry" text # features/step_definitions/navigation_steps.rb:567
And I should see a "Items 1 - 1 of 1" text # features/step_definitions/navigation_steps.rb:660
This scenario took: 4 seconds
15 scenarios (2 skipped, 13 passed)
75 steps (21 skipped, 54 passed)
0m50.499s |
818da44 to
131f2fe
Compare
See - https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/ - https://github.com/ruby/setup-ruby/releases/tag/v1.276.0 Signed-off-by: Dominik Gedon <dominik.gedon@suse.com>
What does this PR change?
This bumps Ruby from 3.3.x to 4.0.0. For this, we also need an updated version of the
ruby-setupGitHub Action, RuboCop andrubocop-ast.Links
Codespace
Check if you already have a running container clicking on
GUI diff
No difference.
Documentation
Test coverage
ℹ️ If a major new functionality is added, it is strongly recommended that tests for the new functionality are added to the Cucumber test suite
Links
Issue(s): #
Port(s): # add downstream PR(s), if any
Changelogs
Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository
If you don't need a changelog check, please mark this checkbox:
If you uncheck the checkbox after the PR is created, you will need to re-run
changelog_test(see below)Re-run a test
If you need to re-run a test, please mark the related checkbox, it will be unchecked automatically once it has re-run:
Before you merge
Check How to branch and merge properly!