diff --git a/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile b/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile new file mode 100644 index 0000000..dc280d6 --- /dev/null +++ b/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile @@ -0,0 +1,66 @@ +source 'https://rubygems.org' + +git_source(:github) do |repo_name| + repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") + "https://github.com/#{repo_name}.git" +end + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 6' +# Support postgresql as a database for Active Record +gem 'pg', '~> 1.2.0' +# Support sqlite3 as a database for Active Record +gem 'sqlite3' +# Support redis as a key-value store for Action Cable +gem 'redis' +# Use Puma as the app server +gem 'puma' +# Use SCSS for stylesheets +gem 'sass-rails' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 3.0' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +gem 'listen' + +gem 'ffi', '>= 1.15.1' + +# ActiveRecord makes use of these bundled gems, as of Ruby 3.1, these requirements +# have to be explicitly marked in a Gemfile. +gem 'matrix' +gem 'net-smtp' + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] + # Adds support for Capybara system testing and selenium driver + gem 'capybara' + gem 'selenium-webdriver' +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. + gem 'web-console' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] diff --git a/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile.lock b/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile.lock new file mode 100644 index 0000000..86304ef --- /dev/null +++ b/Regression/bundler-doesnt-hang-on-resolving-dependencies/Gemfile.lock @@ -0,0 +1,235 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) + mail (>= 2.7.1) + actionmailer (6.1.6.1) + actionpack (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activesupport (= 6.1.6.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.6.1) + actionview (= 6.1.6.1) + activesupport (= 6.1.6.1) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.6.1) + actionpack (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) + nokogiri (>= 1.8.5) + actionview (6.1.6.1) + activesupport (= 6.1.6.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.6.1) + activesupport (= 6.1.6.1) + globalid (>= 0.3.6) + activemodel (6.1.6.1) + activesupport (= 6.1.6.1) + activerecord (6.1.6.1) + activemodel (= 6.1.6.1) + activesupport (= 6.1.6.1) + activestorage (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activesupport (= 6.1.6.1) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.6.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + bindex (0.8.1) + builder (3.2.4) + byebug (11.1.3) + capybara (3.35.3) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + childprocess (3.0.0) + coffee-rails (5.0.0) + coffee-script (>= 2.2.0) + railties (>= 5.2.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + concurrent-ruby (1.1.10) + crass (1.0.6) + digest (3.1.0) + erubi (1.11.0) + execjs (2.8.1) + ffi (1.15.5) + globalid (1.0.0) + activesupport (>= 5.0) + i18n (1.12.0) + concurrent-ruby (~> 1.0) + io-wait (0.2.3) + jbuilder (2.11.5) + actionview (>= 5.0.0) + activesupport (>= 5.0.0) + listen (3.7.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + loofah (2.18.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (1.0.2) + matrix (0.4.2) + method_source (1.0.0) + mini_mime (1.1.2) + mini_portile2 (2.6.1) + minitest (5.15.0) + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.0) + digest + net-protocol + timeout + nio4r (2.5.8) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + pg (1.2.3) + public_suffix (4.0.7) + puma (5.6.4) + nio4r (~> 2.0) + racc (1.6.0) + rack (2.2.4) + rack-test (2.0.2) + rack (>= 1.3) + rails (6.1.6.1) + actioncable (= 6.1.6.1) + actionmailbox (= 6.1.6.1) + actionmailer (= 6.1.6.1) + actionpack (= 6.1.6.1) + actiontext (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activemodel (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) + bundler (>= 1.15.0) + railties (= 6.1.6.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.4.3) + loofah (~> 2.3) + railties (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) + method_source + rake (>= 12.2) + thor (~> 1.0) + rake (13.0.6) + rb-fsevent (0.11.1) + rb-inotify (0.10.1) + ffi (~> 1.0) + redis (4.7.1) + regexp_parser (2.5.0) + rubyzip (2.3.2) + sass-rails (6.0.0) + sassc-rails (~> 2.1, >= 2.1.1) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + selenium-webdriver (3.142.7) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) + spring (2.1.1) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) + sprockets (4.1.1) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + sqlite3 (1.4.4) + thor (1.2.1) + tilt (2.0.11) + timeout (0.3.0) + turbolinks (5.2.1) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) + tzinfo (2.0.5) + concurrent-ruby (~> 1.0) + uglifier (4.2.0) + execjs (>= 0.3.0, < 3) + web-console (4.2.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + websocket-driver (0.7.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.6.0) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + capybara + coffee-rails + ffi (>= 1.15.1) + jbuilder + listen + matrix + net-smtp + pg (~> 1.2.0) + puma + rails (~> 6) + redis + sass-rails + selenium-webdriver + spring + spring-watcher-listen + sqlite3 + turbolinks + tzinfo-data + uglifier + web-console diff --git a/Regression/bundler-doesnt-hang-on-resolving-dependencies/main.fmf b/Regression/bundler-doesnt-hang-on-resolving-dependencies/main.fmf new file mode 100644 index 0000000..97f594f --- /dev/null +++ b/Regression/bundler-doesnt-hang-on-resolving-dependencies/main.fmf @@ -0,0 +1,18 @@ +summary: bundler doesn't hang on resolving dependencies +test: ./test.sh +framework: beakerlib +description: | + Test ensures that bundler won't hang on resolving dependencies when a dependency does not support current platform +duration: 5m +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=2178171 +path: /Regression/bundler-doesnt-hang-on-resolving-dependencies +require: + - ruby + - ruby-devel + - rubygem-bundler + - libpq-devel + - sqlite-devel + - gcc-c++ +tier: '1' diff --git a/Regression/bundler-doesnt-hang-on-resolving-dependencies/system.fmf b/Regression/bundler-doesnt-hang-on-resolving-dependencies/system.fmf new file mode 100644 index 0000000..40701cb --- /dev/null +++ b/Regression/bundler-doesnt-hang-on-resolving-dependencies/system.fmf @@ -0,0 +1,8 @@ +component: + - ruby +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=2178171 +tag: + - CI-Tier-1 + - NoModularTier + - Tier1 diff --git a/Regression/bundler-doesnt-hang-on-resolving-dependencies/test.sh b/Regression/bundler-doesnt-hang-on-resolving-dependencies/test.sh new file mode 100755 index 0000000..b8d1489 --- /dev/null +++ b/Regression/bundler-doesnt-hang-on-resolving-dependencies/test.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +TIMELIMIT="600" +TEST_USER="rubyuser" + +rlJournalStart + rlPhaseStartSetup + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "cp Gemfile* $tmp" 0 + rlRun "pushd $tmp" + rlRun "set -o pipefail" + id $TEST_USER && rlRun "userdel -r $TEST_USER" + rlRun "useradd $TEST_USER" 0 "Adding user '$TEST_USER' to the system" + rlRun "chown -R $TEST_USER:$TEST_USER $tmp" 0 "$TEST_USER can (un)install gems in $tmp" + rlPhaseEnd + + rlPhaseStartTest + # bundle install must end either with success or error, but can't just hang while resolving dependencies + rlRun "rlWatchdog \"su -c 'bundle install --path ./bundle' $TEST_USER\" $TIMELIMIT" 0 "Running bundle install" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "su -c 'rm -rf ./bundle' $TEST_USER" 0 "Cleaning up" + # on RHEL temporary file cleanup unit tends to be started for $TEST_USER session and with that + # userdel fails because user process is running, so this is to workaround the problem + command -v loginctl >/dev/null && rlRun "loginctl terminate-user $TEST_USER" 0,1 + rlRun "userdel -r $TEST_USER" + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd