diff --git a/lib/manager/bundler/extract.js b/lib/manager/bundler/extract.js index f6221dc8b2dac567a7bc2e86a6746f29d263a3ae..6d6adaca638eceaf0bcc85260247fe1ef1a21a85 100644 --- a/lib/manager/bundler/extract.js +++ b/lib/manager/bundler/extract.js @@ -4,7 +4,7 @@ module.exports = { extractPackageFile, }; -function extractPackageFile(content) { +async function extractPackageFile(content, fileName) { const res = { registryUrls: [], deps: [], @@ -58,7 +58,7 @@ function extractPackageFile(content) { groupContent += groupLine.replace(/^ {2}/, '') + '\n'; } } - const groupRes = extractPackageFile(groupContent); + const groupRes = await extractPackageFile(groupContent); if (groupRes) { res.deps = res.deps.concat( groupRes.deps.map(dep => ({ @@ -82,7 +82,7 @@ function extractPackageFile(content) { sourceContent += sourceLine.replace(/^ {2}/, '') + '\n'; } } - const sourceRes = extractPackageFile(sourceContent); + const sourceRes = await extractPackageFile(sourceContent); if (sourceRes) { res.deps = res.deps.concat( sourceRes.deps.map(dep => ({ @@ -105,7 +105,7 @@ function extractPackageFile(content) { platformsContent += platformsLine.replace(/^ {2}/, '') + '\n'; } } - const platformsRes = extractPackageFile(platformsContent); + const platformsRes = await extractPackageFile(platformsContent); if (platformsRes) { res.deps = res.deps.concat( // eslint-disable-next-line no-loop-func @@ -128,7 +128,7 @@ function extractPackageFile(content) { ifContent += ifLine.replace(/^ {2}/, '') + '\n'; } } - const ifRes = extractPackageFile(ifContent); + const ifRes = await extractPackageFile(ifContent); if (ifRes) { res.deps = res.deps.concat( // eslint-disable-next-line no-loop-func @@ -143,5 +143,17 @@ function extractPackageFile(content) { if (!res.deps.length && !res.registryUrls.length) { return null; } + if (fileName) { + const gemfileLock = fileName + '.lock'; + const lockContent = await platform.getFile(gemfileLock); + if (lockContent) { + logger.debug({ packageFile: fileName }, 'Found Gemfile.lock file'); + const bundledWith = lockContent.match(/\nBUNDLED WITH\n\s+(.*?)(\n|$)/); + if (bundledWith) { + res.compatibility = res.compatibility || {}; + res.compatibility.bundler = bundledWith[1]; + } + } + } return res; } diff --git a/test/_fixtures/bundler/Gemfile.rails.lock b/test/_fixtures/bundler/Gemfile.rails.lock new file mode 100644 index 0000000000000000000000000000000000000000..23942b11fb2a7d85774290724764ec6a47a06d16 --- /dev/null +++ b/test/_fixtures/bundler/Gemfile.rails.lock @@ -0,0 +1,597 @@ +GIT + remote: https://github.com/matthewd/websocket-client-simple.git + revision: e161305f1a466b9398d86df3b1731b03362da91b + branch: close-race + specs: + websocket-client-simple (0.3.0) + event_emitter + websocket + +GIT + remote: https://github.com/rafaelfranca/queue_classic.git + revision: dee64b361355d56700ad7aa3b151bf653a617526 + branch: update-pg + specs: + queue_classic (3.2.0.RC1) + pg (>= 0.17, < 2.0) + +GIT + remote: https://github.com/rails/webpacker.git + revision: bb132d591da35095e3246082cba3d693f847e0b5 + specs: + webpacker (4.0.0.pre.3) + activesupport (>= 4.2) + rack-proxy (>= 0.6.1) + railties (>= 4.2) + +PATH + remote: . + specs: + actioncable (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + activejob (= 6.0.0.alpha) + activerecord (= 6.0.0.alpha) + activestorage (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + mail (>= 2.7.1) + actionmailer (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + actionview (= 6.0.0.alpha) + activejob (= 6.0.0.alpha) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.0.0.alpha) + actionview (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actiontext (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + activerecord (= 6.0.0.alpha) + activestorage (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + nokogiri (>= 1.8.5) + actionview (6.0.0.alpha) + activesupport (= 6.0.0.alpha) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (6.0.0.alpha) + activesupport (= 6.0.0.alpha) + globalid (>= 0.3.6) + activemodel (6.0.0.alpha) + activesupport (= 6.0.0.alpha) + activerecord (6.0.0.alpha) + activemodel (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + activestorage (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + activerecord (= 6.0.0.alpha) + marcel (~> 0.3.1) + activesupport (6.0.0.alpha) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + rails (6.0.0.alpha) + actioncable (= 6.0.0.alpha) + actionmailbox (= 6.0.0.alpha) + actionmailer (= 6.0.0.alpha) + actionpack (= 6.0.0.alpha) + actiontext (= 6.0.0.alpha) + actionview (= 6.0.0.alpha) + activejob (= 6.0.0.alpha) + activemodel (= 6.0.0.alpha) + activerecord (= 6.0.0.alpha) + activestorage (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + bundler (>= 1.3.0) + railties (= 6.0.0.alpha) + sprockets-rails (>= 2.0.0) + railties (6.0.0.alpha) + actionpack (= 6.0.0.alpha) + activesupport (= 6.0.0.alpha) + method_source + rake (>= 0.8.7) + thor (>= 0.20.3, < 2.0) + +GEM + remote: https://rubygems.org/ + specs: + activerecord-jdbc-adapter (52.1-java) + activerecord (~> 5.2.0) + activerecord-jdbcmysql-adapter (52.1-java) + activerecord-jdbc-adapter (= 52.1) + jdbc-mysql (~> 5.1.36) + activerecord-jdbcpostgresql-adapter (52.1-java) + activerecord-jdbc-adapter (= 52.1) + jdbc-postgres (>= 9.4, < 43) + activerecord-jdbcsqlite3-adapter (52.1-java) + activerecord-jdbc-adapter (= 52.1) + jdbc-sqlite3 (~> 3.8, < 3.30) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + amq-protocol (2.3.0) + archive-zip (0.11.0) + io-like (~> 0.3.0) + ast (2.4.0) + aws-eventstream (1.0.1) + aws-partitions (1.111.0) + aws-sdk-core (3.37.0) + aws-eventstream (~> 1.0) + aws-partitions (~> 1.0) + aws-sigv4 (~> 1.0) + jmespath (~> 1.0) + aws-sdk-kms (1.11.0) + aws-sdk-core (~> 3, >= 3.26.0) + aws-sigv4 (~> 1.0) + aws-sdk-s3 (1.23.1) + aws-sdk-core (~> 3, >= 3.26.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.0) + aws-sdk-sns (1.8.1) + aws-sdk-core (~> 3, >= 3.37.0) + aws-sigv4 (~> 1.0) + aws-sigv4 (1.0.3) + azure-core (0.1.14) + faraday (~> 0.9) + faraday_middleware (~> 0.10) + nokogiri (~> 1.6) + azure-storage (0.15.0.preview) + azure-core (~> 0.1) + faraday (~> 0.9) + faraday_middleware (~> 0.10) + nokogiri (~> 1.6, >= 1.6.8) + backburner (1.5.0) + beaneater (~> 1.0) + concurrent-ruby (~> 1.0, >= 1.0.1) + dante (> 0.1.5) + bcrypt (3.1.12) + bcrypt (3.1.12-java) + bcrypt (3.1.12-x64-mingw32) + bcrypt (3.1.12-x86-mingw32) + beaneater (1.0.0) + benchmark-ips (2.7.2) + blade (0.7.1) + activesupport (>= 3.0.0) + blade-qunit_adapter (~> 2.0.1) + coffee-script + coffee-script-source + curses (~> 1.0.0) + eventmachine + faye + sprockets (>= 3.0) + thin (>= 1.6.0) + thor (>= 0.19.1) + useragent (~> 0.16.7) + blade-qunit_adapter (2.0.1) + blade-sauce_labs_plugin (0.7.3) + childprocess + faraday + selenium-webdriver + bootsnap (1.3.2) + msgpack (~> 1.0) + bootsnap (1.3.2-java) + msgpack (~> 1.0) + builder (3.2.3) + bunny (2.9.2) + amq-protocol (~> 2.3.0) + byebug (10.0.2) + capybara (3.10.1) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (~> 1.2) + xpath (~> 3.2) + childprocess (0.9.0) + ffi (~> 1.0, >= 1.0.11) + chromedriver-helper (2.1.0) + archive-zip (~> 0.10) + nokogiri (~> 1.8) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + concurrent-ruby (1.1.3) + connection_pool (2.2.2) + cookiejar (0.3.3) + crack (0.4.3) + safe_yaml (~> 1.0.0) + crass (1.0.4) + curses (1.0.2) + daemons (1.2.6) + dalli (2.7.9) + dante (0.2.0) + declarative (0.0.10) + declarative-option (0.1.0) + delayed_job (4.1.5) + activesupport (>= 3.0, < 5.3) + delayed_job_active_record (4.1.3) + activerecord (>= 3.0, < 5.3) + delayed_job (>= 3.0, < 5) + digest-crc (0.4.1) + em-http-request (1.1.5) + addressable (>= 2.3.4) + cookiejar (!= 0.3.1) + em-socksify (>= 0.3) + eventmachine (>= 1.0.3) + http_parser.rb (>= 0.6.0) + em-socksify (0.3.2) + eventmachine (>= 1.0.0.beta.4) + erubi (1.7.1) + et-orbi (1.1.6) + tzinfo + event_emitter (0.2.6) + eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.15.3) + multipart-post (>= 1.2, < 3) + faraday_middleware (0.12.2) + faraday (>= 0.7.4, < 1.0) + faye (1.2.4) + cookiejar (>= 0.3.0) + em-http-request (>= 0.3.0) + eventmachine (>= 0.12.0) + faye-websocket (>= 0.9.1) + multi_json (>= 1.0.0) + rack (>= 1.0.0) + websocket-driver (>= 0.5.1) + faye-websocket (0.10.7) + eventmachine (>= 0.12.0) + websocket-driver (>= 0.5.1) + ffi (1.9.25) + ffi (1.9.25-java) + ffi (1.9.25-x64-mingw32) + ffi (1.9.25-x86-mingw32) + fugit (1.1.6) + et-orbi (~> 1.1, >= 1.1.6) + raabro (~> 1.1) + globalid (0.4.1) + activesupport (>= 4.2.0) + google-api-client (0.25.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.5, < 0.7.0) + httpclient (>= 2.8.1, < 3.0) + mime-types (~> 3.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.10) + google-cloud-core (1.2.7) + google-cloud-env (~> 1.0) + google-cloud-env (1.0.5) + faraday (~> 0.11) + google-cloud-storage (1.15.0) + digest-crc (~> 0.4) + google-api-client (~> 0.23) + google-cloud-core (~> 1.2) + googleauth (~> 0.6.2) + googleauth (0.6.7) + faraday (~> 0.12) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.7) + hashdiff (0.3.7) + hiredis (0.6.3) + hiredis (0.6.3-java) + http_parser.rb (0.6.0) + httpclient (2.8.3) + i18n (1.1.1) + concurrent-ruby (~> 1.0) + image_processing (1.7.1) + mini_magick (~> 4.0) + ruby-vips (>= 2.0.13, < 3) + io-like (0.3.0) + jaro_winkler (1.5.1) + jaro_winkler (1.5.1-java) + jdbc-mysql (5.1.46) + jdbc-postgres (42.1.4) + jdbc-sqlite3 (3.20.1) + jmespath (1.4.0) + json (2.1.0) + json (2.1.0-java) + jwt (2.1.0) + kindlerb (1.2.0) + mustache + nokogiri + libxml-ruby (3.1.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + loofah (2.2.3) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (0.3.3) + mimemagic (~> 0.3.2) + memoist (0.16.0) + method_source (0.9.2) + mime-types (3.2.2) + mime-types-data (~> 3.2015) + mime-types-data (3.2018.0812) + mimemagic (0.3.3) + mini_magick (4.9.2) + mini_mime (1.0.1) + mini_portile2 (2.4.0) + minitest (5.11.3) + minitest-bisect (1.4.0) + minitest-server (~> 1.0) + path_expander (~> 1.0) + minitest-retry (0.1.9) + minitest (>= 5.0) + minitest-server (1.0.5) + minitest (~> 5.0) + mono_logger (1.1.0) + msgpack (1.2.4) + msgpack (1.2.4-java) + msgpack (1.2.4-x64-mingw32) + msgpack (1.2.4-x86-mingw32) + multi_json (1.13.1) + multipart-post (2.0.0) + mustache (1.1.0) + mustermann (1.0.3) + mysql2 (0.5.2) + mysql2 (0.5.2-x64-mingw32) + mysql2 (0.5.2-x86-mingw32) + nio4r (2.3.1) + nio4r (2.3.1-java) + nokogiri (1.9.1) + mini_portile2 (~> 2.4.0) + nokogiri (1.9.1-java) + nokogiri (1.9.1-x64-mingw32) + mini_portile2 (~> 2.4.0) + nokogiri (1.9.1-x86-mingw32) + mini_portile2 (~> 2.4.0) + os (1.0.0) + parallel (1.12.1) + parser (2.5.3.0) + ast (~> 2.4.0) + path_expander (1.0.3) + pg (1.1.3) + pg (1.1.3-x64-mingw32) + pg (1.1.3-x86-mingw32) + powerpack (0.1.2) + psych (3.0.3) + public_suffix (3.0.3) + puma (3.12.0) + puma (3.12.0-java) + que (0.14.3) + qunit-selenium (0.0.4) + selenium-webdriver + thor + raabro (1.1.6) + racc (1.4.14) + rack (2.0.6) + rack-cache (1.8.0) + rack (>= 0.4) + rack-protection (2.0.4) + rack + rack-proxy (0.6.5) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.0.4) + loofah (~> 2.2, >= 2.2.2) + rainbow (3.0.0) + rake (12.3.1) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rdoc (6.0.4) + redcarpet (3.2.3) + redis (4.0.3) + redis-namespace (1.6.0) + redis (>= 3.0.4) + regexp_parser (1.3.0) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + resque (1.27.4) + mono_logger (~> 1.0) + multi_json (~> 1.0) + redis-namespace (~> 1.3) + sinatra (>= 0.9.2) + vegas (~> 0.1.2) + resque-scheduler (4.3.1) + mono_logger (~> 1.0) + redis (>= 3.3, < 5) + resque (~> 1.26) + rufus-scheduler (~> 3.2) + retriable (3.1.2) + rubocop (0.61.1) + jaro_winkler (~> 1.5.1) + parallel (~> 1.10) + parser (>= 2.5, != 2.5.1.1) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 4.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.4.0) + ruby-progressbar (1.10.0) + ruby-vips (2.0.13) + ffi (~> 1.9) + ruby_dep (1.5.0) + rubyzip (1.2.2) + rufus-scheduler (3.5.2) + fugit (~> 1.1, >= 1.1.5) + safe_yaml (1.0.4) + sass (3.7.2) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.7) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sdoc (1.0.0) + rdoc (>= 5.0) + selenium-webdriver (3.141.0) + childprocess (~> 0.5) + rubyzip (~> 1.2, >= 1.2.2) + sequel (5.14.0) + serverengine (2.0.7) + sigdump (~> 0.2.2) + sidekiq (5.2.3) + connection_pool (~> 2.2, >= 2.2.2) + rack-protection (>= 1.5.0) + redis (>= 3.3.5, < 5) + sigdump (0.2.4) + signet (0.11.0) + addressable (~> 2.3) + faraday (~> 0.9) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + sinatra (2.0.4) + mustermann (~> 1.0) + rack (~> 2.0) + rack-protection (= 2.0.4) + tilt (~> 2.0) + sneakers (2.7.0) + bunny (~> 2.9.2) + concurrent-ruby (~> 1.0) + serverengine (~> 2.0.5) + thor + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-export (1.0.0) + sprockets-rails (3.2.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.13) + sqlite3 (1.3.13-x64-mingw32) + sqlite3 (1.3.13-x86-mingw32) + stackprof (0.2.12) + sucker_punch (2.1.1) + concurrent-ruby (~> 1.0) + thin (1.7.2) + daemons (~> 1.0, >= 1.0.9) + eventmachine (~> 1.0, >= 1.0.4) + rack (>= 1, < 3) + thor (0.20.3) + thread_safe (0.3.6) + thread_safe (0.3.6-java) + tilt (2.0.8) + turbolinks (5.2.0) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + tzinfo-data (1.2018.7) + tzinfo (>= 1.0.0) + uber (0.1.0) + uglifier (4.1.19) + execjs (>= 0.3.0, < 3) + unicode-display_width (1.4.0) + useragent (0.16.10) + vegas (0.1.11) + rack (>= 1.0.0) + w3c_validators (1.3.4) + json (>= 1.8) + nokogiri (~> 1.6) + wdm (0.1.1) + webmock (3.4.2) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff + websocket (1.2.8) + websocket-driver (0.7.0) + websocket-extensions (>= 0.1.0) + websocket-driver (0.7.0-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.3) + xpath (3.2.0) + nokogiri (~> 1.8) + +PLATFORMS + java + ruby + x64-mingw32 + x86-mingw32 + +DEPENDENCIES + activerecord-jdbcmysql-adapter (>= 1.3.0) + activerecord-jdbcpostgresql-adapter (>= 1.3.0) + activerecord-jdbcsqlite3-adapter (>= 1.3.0) + aws-sdk-s3 + aws-sdk-sns + azure-storage + backburner + bcrypt (~> 3.1.11) + benchmark-ips + blade + blade-sauce_labs_plugin + bootsnap (>= 1.1.0) + byebug + capybara (>= 2.15) + chromedriver-helper + connection_pool + dalli + delayed_job + delayed_job_active_record + google-cloud-storage (~> 1.11) + hiredis + image_processing (~> 1.2) + json (>= 2.0.0) + kindlerb (~> 1.2.0) + libxml-ruby + listen (>= 3.0.5, < 3.2) + minitest-bisect + minitest-retry + mysql2 (>= 0.4.10) + nokogiri (>= 1.8.1) + pg (>= 0.18.0) + psych (~> 3.0) + puma + que + queue_classic! + qunit-selenium + racc (>= 1.4.6) + rack-cache (~> 1.2) + rails! + rake (>= 11.1) + redcarpet (~> 3.2.3) + redis (~> 4.0) + redis-namespace + resque + resque-scheduler + rubocop (>= 0.47) + sass-rails + sdoc (~> 1.0) + sequel + sidekiq + sneakers + sprockets-export + sqlite3 (~> 1.3.6) + stackprof + sucker_punch + turbolinks (~> 5) + tzinfo-data + uglifier (>= 1.3.0) + w3c_validators + wdm (>= 0.1.0) + webmock + webpacker! + websocket-client-simple! + +BUNDLED WITH + 1.17.2 diff --git a/test/manager/bundler/__snapshots__/extract.spec.js.snap b/test/manager/bundler/__snapshots__/extract.spec.js.snap index 2a766abce3c6decf91e32be6c527e38918051d3b..e12c84b5f2f3fe73b84fb5cca7f66f8bc79ea748 100644 --- a/test/manager/bundler/__snapshots__/extract.spec.js.snap +++ b/test/manager/bundler/__snapshots__/extract.spec.js.snap @@ -2,6 +2,9 @@ exports[`lib/manager/bundler/extract extractPackageFile() parses rails Gemfile 1`] = ` Object { + "compatibility": Object { + "bundler": "1.17.2", + }, "deps": Array [ Object { "currentValue": ">= 11.1", diff --git a/test/manager/bundler/extract.spec.js b/test/manager/bundler/extract.spec.js index d74d91355fbbf95b4c556cf421decd146689ec31..e7c4cf7fcddef1e333a8dfa6f39f284b32fdc634 100644 --- a/test/manager/bundler/extract.spec.js +++ b/test/manager/bundler/extract.spec.js @@ -5,6 +5,10 @@ const railsGemfile = fs.readFileSync( 'test/_fixtures/bundler/Gemfile.rails', 'utf8' ); +const railsGemfileLock = fs.readFileSync( + 'test/_fixtures/bundler/Gemfile.rails.lock', + 'utf8' +); const sourceGroupGemfile = fs.readFileSync( 'test/_fixtures/bundler/Gemfile.sourceGroup', @@ -19,16 +23,17 @@ function validateGems(raw, parsed) { describe('lib/manager/bundler/extract', () => { describe('extractPackageFile()', () => { - it('returns null for empty', () => { - expect(extractPackageFile('nothing here')).toBeNull(); + it('returns null for empty', async () => { + expect(await extractPackageFile('nothing here', 'Gemfile')).toBeNull(); }); - it('parses rails Gemfile', () => { - const res = extractPackageFile(railsGemfile); + it('parses rails Gemfile', async () => { + platform.getFile.mockReturnValueOnce(railsGemfileLock); + const res = await extractPackageFile(railsGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); validateGems(railsGemfile, res); }); - it('parses sourceGroups', () => { - const res = extractPackageFile(sourceGroupGemfile); + it('parses sourceGroups', async () => { + const res = await extractPackageFile(sourceGroupGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); validateGems(sourceGroupGemfile, res); });