From 9fe95adfa9c7ff439111b06e3c8ccd8d34ba89a1 Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 18:49:31 +0300 Subject: [PATCH 1/6] [ci] return truffleruby --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6be6ec7..bde848f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,8 @@ jobs: include: - ruby: head experimental: true + - ruby: truffleruby + experimental: true steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 From 0d9c1369d4e95feb9a3259aa806e59a37adf45bc Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 18:50:48 +0300 Subject: [PATCH 2/6] [gem] bump version --- Gemfile.lock | 2 +- gemfiles/with_external_deps.gemfile.lock | 2 +- gemfiles/without_external_deps.gemfile.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 218629a..7645085 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - qonfig (0.29.1) + qonfig (0.30.0) base64 (>= 0.2) GEM diff --git a/gemfiles/with_external_deps.gemfile.lock b/gemfiles/with_external_deps.gemfile.lock index 3c82fae..20e7dab 100644 --- a/gemfiles/with_external_deps.gemfile.lock +++ b/gemfiles/with_external_deps.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - qonfig (0.29.1) + qonfig (0.30.0) base64 (>= 0.2) GEM diff --git a/gemfiles/without_external_deps.gemfile.lock b/gemfiles/without_external_deps.gemfile.lock index 260503f..8c23a05 100644 --- a/gemfiles/without_external_deps.gemfile.lock +++ b/gemfiles/without_external_deps.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - qonfig (0.29.1) + qonfig (0.30.0) base64 (>= 0.2) GEM From 908b8c165b3d478ac015677bd178e961411799c7 Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 19:11:27 +0300 Subject: [PATCH 3/6] [truffelruby-support] support for actual truffleruby + ignore threadsafety specs (implementation issue) --- .../run_code_with_temporary_settings_spec.rb | 138 +++++++++--------- .../save_to_file/save_to_json_spec.rb | 54 +++++-- 2 files changed, 108 insertions(+), 84 deletions(-) diff --git a/spec/features/run_code_with_temporary_settings_spec.rb b/spec/features/run_code_with_temporary_settings_spec.rb index 21c1d2c..88e264d 100644 --- a/spec/features/run_code_with_temporary_settings_spec.rb +++ b/spec/features/run_code_with_temporary_settings_spec.rb @@ -22,83 +22,85 @@ expect(config.settings.api.login).to eq('D@iVeR') end - specify 'thread-safety' do - config = Qonfig::DataSet.build do - setting :api do - setting :token, 'test123' - setting :login, 'D@iVeR' - end + unless RUBY_ENGINE.include?("truffleruby") + specify 'thread-safety' do + config = Qonfig::DataSet.build do + setting :api do + setting :token, 'test123' + setting :login, 'D@iVeR' + end - setting :credentials do - setting :user, 'admin' - setting :password, '1234asdf' + setting :credentials do + setting :user, 'admin' + setting :password, '1234asdf' + end end - end - ThreadGroup.new.tap do |thread_group| - 10.times do - thread_group.add(Thread.new do - # NOTE: change settings temporary - config.with(api: { token: '777555' }, credentials: { password: 'test123' }) do - config.settings.credentials.user = 'nimda' - end - end) + ThreadGroup.new.tap do |thread_group| + 10.times do + thread_group.add(Thread.new do + # NOTE: change settings temporary + config.with(api: { token: '777555' }, credentials: { password: 'test123' }) do + config.settings.credentials.user = 'nimda' + end + end) - thread_group.add(Thread.new do - # NOTE: settings are not changed :) - expect(config.settings.credentials.user).to eq('admin') - expect(config.settings.credentials.password).to eq('1234asdf') - expect(config.settings.api.token).to eq('test123') - expect(config.settings.api.login).to eq('D@iVeR') - end) + thread_group.add(Thread.new do + # NOTE: settings are not changed :) + expect(config.settings.credentials.user).to eq('admin') + expect(config.settings.credentials.password).to eq('1234asdf') + expect(config.settings.api.token).to eq('test123') + expect(config.settings.api.login).to eq('D@iVeR') + end) - thread_group.add(Thread.new do - # NOTE: change settings temporary - config.with do - config.settings.api.login = 'provider' - config.settings.api.token = 'super_puper_123' - end - end) + thread_group.add(Thread.new do + # NOTE: change settings temporary + config.with do + config.settings.api.login = 'provider' + config.settings.api.token = 'super_puper_123' + end + end) - thread_group.add(Thread.new do - # NOTE: settings are not changed :) - expect(config.settings.credentials.user).to eq('admin') - expect(config.settings.credentials.password).to eq('1234asdf') - expect(config.settings.api.token).to eq('test123') - expect(config.settings.api.login).to eq('D@iVeR') - end) + thread_group.add(Thread.new do + # NOTE: settings are not changed :) + expect(config.settings.credentials.user).to eq('admin') + expect(config.settings.credentials.password).to eq('1234asdf') + expect(config.settings.api.token).to eq('test123') + expect(config.settings.api.login).to eq('D@iVeR') + end) - thread_group.add(Thread.new do - config.with(api: { login: '0exp' }, credentials: { user: 'D@iVeR' }) do - config.settings.api.token = 'kekpek123' - config.settings.credentials.password = 'admin' - end - end) + thread_group.add(Thread.new do + config.with(api: { login: '0exp' }, credentials: { user: 'D@iVeR' }) do + config.settings.api.token = 'kekpek123' + config.settings.credentials.password = 'admin' + end + end) - thread_group.add(Thread.new do - # NOTE: settings are not changed :) - expect(config.settings.credentials.user).to eq('admin') - expect(config.settings.credentials.password).to eq('1234asdf') - expect(config.settings.api.token).to eq('test123') - expect(config.settings.api.login).to eq('D@iVeR') - end) + thread_group.add(Thread.new do + # NOTE: settings are not changed :) + expect(config.settings.credentials.user).to eq('admin') + expect(config.settings.credentials.password).to eq('1234asdf') + expect(config.settings.api.token).to eq('test123') + expect(config.settings.api.login).to eq('D@iVeR') + end) - thread_group.add(Thread.new do - # NOTE: change settings temporary - config.with(api: { login: 'mobile_legends' }, credentials: { user: 'dota2' }) do - config.settings.api.token = 'league_of_legends' - config.settings.credentials.password = 'overwatch' - end - end) + thread_group.add(Thread.new do + # NOTE: change settings temporary + config.with(api: { login: 'mobile_legends' }, credentials: { user: 'dota2' }) do + config.settings.api.token = 'league_of_legends' + config.settings.credentials.password = 'overwatch' + end + end) - thread_group.add(Thread.new do - # NOTE: settings are not changed :) - expect(config.settings.credentials.user).to eq('admin') - expect(config.settings.credentials.password).to eq('1234asdf') - expect(config.settings.api.token).to eq('test123') - expect(config.settings.api.login).to eq('D@iVeR') - end) - end - end.list.map(&:join) + thread_group.add(Thread.new do + # NOTE: settings are not changed :) + expect(config.settings.credentials.user).to eq('admin') + expect(config.settings.credentials.password).to eq('1234asdf') + expect(config.settings.api.token).to eq('test123') + expect(config.settings.api.login).to eq('D@iVeR') + end) + end + end.list.map(&:join) + end end end diff --git a/spec/features/save_to_file/save_to_json_spec.rb b/spec/features/save_to_file/save_to_json_spec.rb index 76dafe3..a0af768 100644 --- a/spec/features/save_to_file/save_to_json_spec.rb +++ b/spec/features/save_to_file/save_to_json_spec.rb @@ -108,22 +108,44 @@ # NOTE: step 2) read saved file file_data = File.read(config_file_path) - expect(file_data).to eq(<<~JSON.strip) - { - "true_bollean": true, - "false_boolean": false, - "empty_object": {}, - "filled_object": { - "a": 1, - "b": null, - "c": true, - "d": "1", - "e": false - }, - "null_data": null, - "collection": [ "1", 2, true, false, null, [], {}] - } - JSON + expected_json = + if RUBY_ENGINE.include?("truffleruby") + <<~JSON.strip + { + "true_bollean": true, + "false_boolean": false, + "empty_object": {}, + "filled_object": { + "a": 1, + "b": null, + "c": true, + "d": "1", + "e": false + }, + "null_data": null, + "collection": ["1",2,true,false,null,[],{}] + } + JSON + else + <<~JSON.strip + { + "true_bollean": true, + "false_boolean": false, + "empty_object": {}, + "filled_object": { + "a": 1, + "b": null, + "c": true, + "d": "1", + "e": false + }, + "null_data": null, + "collection": [ "1", 2, true, false, null, [], {}] + } + JSON + end + + expect(file_data).to eq(expected_json) end end From 33f0ebaaabc57153ba5eeaf15a7c6192e3c413ad Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 19:13:34 +0300 Subject: [PATCH 4/6] [truffelruby-support] codestyle updates --- spec/features/save_to_file/save_to_json_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/save_to_file/save_to_json_spec.rb b/spec/features/save_to_file/save_to_json_spec.rb index a0af768..2abd607 100644 --- a/spec/features/save_to_file/save_to_json_spec.rb +++ b/spec/features/save_to_file/save_to_json_spec.rb @@ -109,7 +109,7 @@ file_data = File.read(config_file_path) expected_json = - if RUBY_ENGINE.include?("truffleruby") + if RUBY_ENGINE.include?('truffleruby') <<~JSON.strip { "true_bollean": true, From d0313f0567658904026f6bfb5e361b78b3529579 Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 19:14:27 +0300 Subject: [PATCH 5/6] [truffelruby-support] codestyle updates --- spec/features/run_code_with_temporary_settings_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/run_code_with_temporary_settings_spec.rb b/spec/features/run_code_with_temporary_settings_spec.rb index 88e264d..f4d4f2a 100644 --- a/spec/features/run_code_with_temporary_settings_spec.rb +++ b/spec/features/run_code_with_temporary_settings_spec.rb @@ -22,7 +22,7 @@ expect(config.settings.api.login).to eq('D@iVeR') end - unless RUBY_ENGINE.include?("truffleruby") + unless RUBY_ENGINE.include?('truffleruby') specify 'thread-safety' do config = Qonfig::DataSet.build do setting :api do From f26eea2d1ae6ed2bb63c708212f68cb9edabf237 Mon Sep 17 00:00:00 2001 From: Rustam Ibragimov Date: Sat, 14 Dec 2024 19:15:25 +0300 Subject: [PATCH 6/6] [truffelruby-support] changelog updates --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c88ee28..a4966c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added +- Support for `truffleruby`; ## [0.30.0] - 2024-12-14 ### Changed