gemfile_interpreter 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a1ec92c7aed9ce960fce0752bd945a950a42643
4
- data.tar.gz: c25e44c72280d905376313aa437246ff6223dfb0
3
+ metadata.gz: 335bd10b8fd86e148878446ab59b416e04a439e4
4
+ data.tar.gz: e99a0736bcf7ab369b03a402923df8b3624509c4
5
5
  SHA512:
6
- metadata.gz: 1d666827fcf47541dd4996504c323b7faae91b88e8aca05fcae50ebed8c6197c0abdf685ec97b03f0faf42d6530693863eedb77af580b00a754a939778ba2458
7
- data.tar.gz: eb2c00b405afaa7b144558a2bf134058c4bd5660d0099da6f6414b9e687ab60d28de560c18988e5384fac8bfdb4a2f31d6a800bc2f06b9ec4b10e24d84b0a625
6
+ metadata.gz: a4efe62ace0b8e9e8972eb93af9a5a408a7b142b2868acce73e0fef788d08650f799188271b480d0e9362c09d07b33f3d262ddfe045df337d0550cc24ba5f136
7
+ data.tar.gz: 7f7d55b5e8c9060ebeeddf9add41cd02f8c321b564d394484c31a15d64bb6ccc949961b357e6fb38e55d4b3afefe1b755306e077c0641475a6b97b8c8c9d240d
@@ -1,23 +1,45 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'optparse'
3
4
  require 'gemfile_interpreter'
4
5
 
5
- def print_help
6
- puts "Usage: #{__FILE__} GEMFILE [--json|--yaml]"
7
- exit 1
6
+ options = {}
7
+ parser = OptionParser.new do |opts|
8
+ opts.banner = "Usage: #{__FILE__} PATH_TO_PROJECT [options]"
9
+ opts.on '--yaml', 'Change the output from json to yaml' do
10
+ options[:yaml] = true
11
+ end
12
+ opts.on '--gemfile=GEMFILE', 'The name of the Gemfile (default: Gemfile)' do |gemfile|
13
+ options[:gemfile] = gemfile
14
+ end
15
+ opts.on '--lockfile=GEMFILE', 'The name of the Gemfile.lock (default: %GEMFILE%.lock where %GEMFILE% is replaced with the Gemfile setting)' do |lockfile|
16
+ options[:lockfile] = lockfile
17
+ end
18
+ opts.on '-h', '--help', 'Prints this message' do
19
+ puts opts
20
+ exit
21
+ end
8
22
  end
23
+ parser.parse!
24
+ options[:gemfile] ||= 'Gemfile'
25
+ options[:lockfile] ||= '%GEMFILE%.lock'
26
+ options[:lockfile].gsub! '%GEMFILE%', options[:gemfile]
9
27
 
10
- gemfile = ARGV[0]
11
- if [nil, '--help', '-h'].include? gemfile
12
- print_help
28
+ dir = ARGV.pop
29
+
30
+ #def print_help
31
+ # puts "Usage: #{__FILE__} GEMFILE [--json|--yaml]"
32
+ # exit 1
33
+ #end
34
+
35
+ if dir.nil? || dir =~ /\A\s*\Z/
36
+ puts parser
37
+ #print_help
13
38
  else
14
- type = ARGV[1]
15
- interpreter = GemfileInterpreter.new gemfile
16
- if type == '--yaml'
39
+ interpreter = GemfileInterpreter.new dir, gemfile: options[:gemfile], lockfile: options[:lockfile]
40
+ if options[:yaml]
17
41
  puts interpreter.to_yaml
18
- elsif type.nil? || type == '--json'
19
- puts interpreter.to_json
20
42
  else
21
- print_help
43
+ puts interpreter.to_json
22
44
  end
23
45
  end
@@ -1,14 +1,15 @@
1
1
  require 'gemfile_interpreter/version'
2
2
  require 'gemfile_interpreter/parser'
3
- require 'gemfile_interpreter/own_bundler'
3
+ require 'gemfile_interpreter/readonly_bundler'
4
4
  require 'json'
5
5
  require 'yaml'
6
6
 
7
7
  class GemfileInterpreter
8
- def initialize gemfile
9
- @gemfile = gemfile
8
+ def initialize dir, gemfile: 'Gemfile', lockfile: nil
9
+ gemfile_path = File.join dir, gemfile
10
+ lockfile_path = File.join dir, (lockfile || "#{gemfile}.lock")
10
11
  @parsed = nil
11
- @bundler_runtime = OwnBundler.load_gemfile @gemfile
12
+ @bundler_runtime = ReadonlyBundler.load_gemfile gemfile_path, lockfile_path
12
13
  true
13
14
  end
14
15
 
@@ -1,31 +1,29 @@
1
1
  require 'bundler'
2
2
 
3
3
  class GemfileInterpreter
4
- OwnBundler = Bundler.dup
4
+ ReadonlyBundler = Bundler.dup
5
5
 
6
6
  class GemfileMissingError < IOError; end
7
7
  class GemfileLockMissingError < IOError; end
8
8
 
9
- module OwnBundler
9
+ module ReadonlyBundler
10
10
  class << self
11
- def load_gemfile gemfile
11
+ def load_gemfile gemfile, lockfile
12
12
  raise ArgumentError, 'The parameter gemfile may not be empty' if gemfile.nil? || gemfile.empty?
13
13
  reset!
14
14
  @default_gemfile = Pathname.new gemfile
15
+ @default_lockfile = Pathname.new lockfile
15
16
  ensure_file_exists! default_gemfile, GemfileMissingError
16
17
  ensure_file_exists! default_lockfile, GemfileLockMissingError
17
18
  load
18
19
  end
19
20
 
20
21
  def default_gemfile
21
- @default_gemfile || raise("First call #setup")
22
+ @default_gemfile || raise("First call #load_gemfile")
22
23
  end
23
24
 
24
25
  def default_lockfile
25
- case default_gemfile.basename.to_s
26
- when "gems.rb" then Pathname.new(default_gemfile.sub(/.rb$/, ".locked"))
27
- else Pathname.new("#{default_gemfile}.lock")
28
- end.untaint
26
+ @default_lockfile || raise("First call #load_gemfile")
29
27
  end
30
28
 
31
29
  def default_bundle_dir
@@ -1,3 +1,3 @@
1
1
  class GemfileInterpreter
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'omniauth-keltec', git: 'https://github.com/ThunderKey/omniauth-keltec.git'
4
+ gem 'devise'
@@ -0,0 +1,99 @@
1
+ GIT
2
+ remote: https://github.com/ThunderKey/omniauth-keltec.git
3
+ revision: d954a55459b48cb56be4dbbcaa1fd2afc113db5b
4
+ specs:
5
+ omniauth-keltec (0.0.1)
6
+ omniauth-oauth2 (~> 1.3.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionpack (5.0.1)
12
+ actionview (= 5.0.1)
13
+ activesupport (= 5.0.1)
14
+ rack (~> 2.0)
15
+ rack-test (~> 0.6.3)
16
+ rails-dom-testing (~> 2.0)
17
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
+ actionview (5.0.1)
19
+ activesupport (= 5.0.1)
20
+ builder (~> 3.1)
21
+ erubis (~> 2.7.0)
22
+ rails-dom-testing (~> 2.0)
23
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
24
+ activesupport (5.0.1)
25
+ concurrent-ruby (~> 1.0, >= 1.0.2)
26
+ i18n (~> 0.7)
27
+ minitest (~> 5.1)
28
+ tzinfo (~> 1.1)
29
+ bcrypt (3.1.11)
30
+ builder (3.2.3)
31
+ concurrent-ruby (1.0.4)
32
+ devise (4.2.0)
33
+ bcrypt (~> 3.0)
34
+ orm_adapter (~> 0.1)
35
+ railties (>= 4.1.0, < 5.1)
36
+ responders
37
+ warden (~> 1.2.3)
38
+ erubis (2.7.0)
39
+ faraday (0.10.1)
40
+ multipart-post (>= 1.2, < 3)
41
+ hashie (3.5.3)
42
+ i18n (0.8.0)
43
+ jwt (1.5.6)
44
+ loofah (2.0.3)
45
+ nokogiri (>= 1.5.9)
46
+ method_source (0.8.2)
47
+ mini_portile2 (2.1.0)
48
+ minitest (5.10.1)
49
+ multi_json (1.12.1)
50
+ multi_xml (0.6.0)
51
+ multipart-post (2.0.0)
52
+ nokogiri (1.7.0.1)
53
+ mini_portile2 (~> 2.1.0)
54
+ oauth2 (1.3.0)
55
+ faraday (>= 0.8, < 0.11)
56
+ jwt (~> 1.0)
57
+ multi_json (~> 1.3)
58
+ multi_xml (~> 0.5)
59
+ rack (>= 1.2, < 3)
60
+ omniauth (1.6.1)
61
+ hashie (>= 3.4.6, < 3.6.0)
62
+ rack (>= 1.6.2, < 3)
63
+ omniauth-oauth2 (1.3.1)
64
+ oauth2 (~> 1.0)
65
+ omniauth (~> 1.2)
66
+ orm_adapter (0.5.0)
67
+ rack (2.0.1)
68
+ rack-test (0.6.3)
69
+ rack (>= 1.0)
70
+ rails-dom-testing (2.0.2)
71
+ activesupport (>= 4.2.0, < 6.0)
72
+ nokogiri (~> 1.6)
73
+ rails-html-sanitizer (1.0.3)
74
+ loofah (~> 2.0)
75
+ railties (5.0.1)
76
+ actionpack (= 5.0.1)
77
+ activesupport (= 5.0.1)
78
+ method_source
79
+ rake (>= 0.8.7)
80
+ thor (>= 0.18.1, < 2.0)
81
+ rake (12.0.0)
82
+ responders (2.3.0)
83
+ railties (>= 4.2.0, < 5.1)
84
+ thor (0.19.4)
85
+ thread_safe (0.3.5)
86
+ tzinfo (1.2.2)
87
+ thread_safe (~> 0.1)
88
+ warden (1.2.7)
89
+ rack (>= 1.0)
90
+
91
+ PLATFORMS
92
+ ruby
93
+
94
+ DEPENDENCIES
95
+ devise
96
+ omniauth-keltec!
97
+
98
+ BUNDLED WITH
99
+ 1.14.3
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'omniauth-keltec', git: 'https://github.com/ThunderKey/omniauth-keltec.git'
4
+ gem 'devise'
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'omniauth-keltec', git: 'https://github.com/ThunderKey/omniauth-keltec.git'
4
+ gem 'devise'
@@ -0,0 +1,99 @@
1
+ GIT
2
+ remote: https://github.com/ThunderKey/omniauth-keltec.git
3
+ revision: d954a55459b48cb56be4dbbcaa1fd2afc113db5b
4
+ specs:
5
+ omniauth-keltec (0.0.1)
6
+ omniauth-oauth2 (~> 1.3.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionpack (5.0.1)
12
+ actionview (= 5.0.1)
13
+ activesupport (= 5.0.1)
14
+ rack (~> 2.0)
15
+ rack-test (~> 0.6.3)
16
+ rails-dom-testing (~> 2.0)
17
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
+ actionview (5.0.1)
19
+ activesupport (= 5.0.1)
20
+ builder (~> 3.1)
21
+ erubis (~> 2.7.0)
22
+ rails-dom-testing (~> 2.0)
23
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
24
+ activesupport (5.0.1)
25
+ concurrent-ruby (~> 1.0, >= 1.0.2)
26
+ i18n (~> 0.7)
27
+ minitest (~> 5.1)
28
+ tzinfo (~> 1.1)
29
+ bcrypt (3.1.11)
30
+ builder (3.2.3)
31
+ concurrent-ruby (1.0.4)
32
+ devise (4.2.0)
33
+ bcrypt (~> 3.0)
34
+ orm_adapter (~> 0.1)
35
+ railties (>= 4.1.0, < 5.1)
36
+ responders
37
+ warden (~> 1.2.3)
38
+ erubis (2.7.0)
39
+ faraday (0.10.1)
40
+ multipart-post (>= 1.2, < 3)
41
+ hashie (3.5.3)
42
+ i18n (0.8.0)
43
+ jwt (1.5.6)
44
+ loofah (2.0.3)
45
+ nokogiri (>= 1.5.9)
46
+ method_source (0.8.2)
47
+ mini_portile2 (2.1.0)
48
+ minitest (5.10.1)
49
+ multi_json (1.12.1)
50
+ multi_xml (0.6.0)
51
+ multipart-post (2.0.0)
52
+ nokogiri (1.7.0.1)
53
+ mini_portile2 (~> 2.1.0)
54
+ oauth2 (1.3.0)
55
+ faraday (>= 0.8, < 0.11)
56
+ jwt (~> 1.0)
57
+ multi_json (~> 1.3)
58
+ multi_xml (~> 0.5)
59
+ rack (>= 1.2, < 3)
60
+ omniauth (1.6.1)
61
+ hashie (>= 3.4.6, < 3.6.0)
62
+ rack (>= 1.6.2, < 3)
63
+ omniauth-oauth2 (1.3.1)
64
+ oauth2 (~> 1.0)
65
+ omniauth (~> 1.2)
66
+ orm_adapter (0.5.0)
67
+ rack (2.0.1)
68
+ rack-test (0.6.3)
69
+ rack (>= 1.0)
70
+ rails-dom-testing (2.0.2)
71
+ activesupport (>= 4.2.0, < 6.0)
72
+ nokogiri (~> 1.6)
73
+ rails-html-sanitizer (1.0.3)
74
+ loofah (~> 2.0)
75
+ railties (5.0.1)
76
+ actionpack (= 5.0.1)
77
+ activesupport (= 5.0.1)
78
+ method_source
79
+ rake (>= 0.8.7)
80
+ thor (>= 0.18.1, < 2.0)
81
+ rake (12.0.0)
82
+ responders (2.3.0)
83
+ railties (>= 4.2.0, < 5.1)
84
+ thor (0.19.4)
85
+ thread_safe (0.3.5)
86
+ tzinfo (1.2.2)
87
+ thread_safe (~> 0.1)
88
+ warden (1.2.7)
89
+ rack (>= 1.0)
90
+
91
+ PLATFORMS
92
+ ruby
93
+
94
+ DEPENDENCIES
95
+ devise
96
+ omniauth-keltec!
97
+
98
+ BUNDLED WITH
99
+ 1.14.3
@@ -0,0 +1,109 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ RSpec.configure do |config|
20
+ # rspec-expectations config goes here. You can use an alternate
21
+ # assertion/expectation library such as wrong or the stdlib/minitest
22
+ # assertions if you prefer.
23
+ config.expect_with :rspec do |expectations|
24
+ # This option will default to `true` in RSpec 4. It makes the `description`
25
+ # and `failure_message` of custom matchers include text for helper methods
26
+ # defined using `chain`, e.g.:
27
+ # be_bigger_than(2).and_smaller_than(4).description
28
+ # # => "be bigger than 2 and smaller than 4"
29
+ # ...rather than:
30
+ # # => "be bigger than 2"
31
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
32
+ end
33
+
34
+ # Tag all groups and examples in the spec/unit directory with
35
+ # :type => :unit
36
+ config.define_derived_metadata(:file_path => %r{/spec/unit/}) do |metadata|
37
+ metadata[:type] = :unit
38
+ end
39
+
40
+ # rspec-mocks config goes here. You can use an alternate test double
41
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
42
+ config.mock_with :rspec do |mocks|
43
+ # Prevents you from mocking or stubbing a method that does not exist on
44
+ # a real object. This is generally recommended, and will default to
45
+ # `true` in RSpec 4.
46
+ mocks.verify_partial_doubles = true
47
+ end
48
+
49
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
50
+ # have no way to turn it off -- the option exists only for backwards
51
+ # compatibility in RSpec 3). It causes shared context metadata to be
52
+ # inherited by the metadata hash of host groups and examples, rather than
53
+ # triggering implicit auto-inclusion in groups with matching metadata.
54
+ config.shared_context_metadata_behavior = :apply_to_host_groups
55
+
56
+ # The settings below are suggested to provide a good initial experience
57
+ # with RSpec, but feel free to customize to your heart's content.
58
+ =begin
59
+ # This allows you to limit a spec run to individual examples or groups
60
+ # you care about by tagging them with `:focus` metadata. When nothing
61
+ # is tagged with `:focus`, all examples get run. RSpec also provides
62
+ # aliases for `it`, `describe`, and `context` that include `:focus`
63
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
64
+ config.filter_run_when_matching :focus
65
+
66
+ # Allows RSpec to persist some state between runs in order to support
67
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
68
+ # you configure your source control system to ignore this file.
69
+ config.example_status_persistence_file_path = "spec/examples.txt"
70
+
71
+ # Limits the available syntax to the non-monkey patched syntax that is
72
+ # recommended. For more details, see:
73
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
74
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
75
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
76
+ config.disable_monkey_patching!
77
+
78
+ # This setting enables warnings. It's recommended, but in some cases may
79
+ # be too noisy due to issues in dependencies.
80
+ config.warnings = true
81
+
82
+ # Many RSpec users commonly either run the entire suite or an individual
83
+ # file, and it's useful to allow more verbose output when running an
84
+ # individual spec file.
85
+ if config.files_to_run.one?
86
+ # Use the documentation formatter for detailed output,
87
+ # unless a formatter has already been configured
88
+ # (e.g. via a command-line flag).
89
+ config.default_formatter = 'doc'
90
+ end
91
+
92
+ # Print the 10 slowest examples and example groups at the
93
+ # end of the spec run, to help surface which specs are running
94
+ # particularly slow.
95
+ config.profile_examples = 10
96
+
97
+ # Run specs in random order to surface order dependencies. If you find an
98
+ # order dependency and want to debug it, you can fix the order by providing
99
+ # the seed, which is printed after each run.
100
+ # --seed 1234
101
+ config.order = :random
102
+
103
+ # Seed global randomization in this process using the `--seed` CLI option.
104
+ # Setting this allows you to use `--seed` to deterministically reproduce
105
+ # test failures related to randomization by passing the same `--seed` value
106
+ # as the one that triggered the failure.
107
+ Kernel.srand config.seed
108
+ =end
109
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+ require 'gemfile_interpreter'
3
+
4
+ RSpec.describe GemfileInterpreter do
5
+ root_dir = File.dirname(File.dirname(File.dirname(__FILE__)))
6
+ assets_dir = File.join root_dir, 'spec', 'assets'
7
+
8
+ it 'generates a correct hash from a valid Gemfile' do
9
+ i = GemfileInterpreter.new assets_dir
10
+ expect(i.parsed.to_a).to eq [
11
+ rubygems_gem('rake', '12.0.0'),
12
+ rubygems_gem('concurrent-ruby', '1.0.4'),
13
+ rubygems_gem('i18n', '0.8.0'),
14
+ rubygems_gem('minitest', '5.10.1'),
15
+ rubygems_gem('thread_safe', '0.3.5'),
16
+ rubygems_gem('tzinfo', '1.2.2'),
17
+ rubygems_gem('activesupport', '5.0.1'),
18
+ rubygems_gem('builder', '3.2.3'),
19
+ rubygems_gem('erubis', '2.7.0'),
20
+ rubygems_gem('mini_portile2', '2.1.0'),
21
+ rubygems_gem('nokogiri', '1.7.0.1'),
22
+ rubygems_gem('rails-dom-testing', '2.0.2'),
23
+ rubygems_gem('loofah', '2.0.3'),
24
+ rubygems_gem('rails-html-sanitizer', '1.0.3'),
25
+ rubygems_gem('actionview', '5.0.1'),
26
+ rubygems_gem('rack', '2.0.1'),
27
+ rubygems_gem('rack-test', '0.6.3'),
28
+ rubygems_gem('actionpack', '5.0.1'),
29
+ rubygems_gem('bcrypt', '3.1.11'),
30
+ rubygems_gem('orm_adapter', '0.5.0'),
31
+ rubygems_gem('method_source', '0.8.2'),
32
+ rubygems_gem('thor', '0.19.4'),
33
+ rubygems_gem('railties', '5.0.1'),
34
+ rubygems_gem('responders', '2.3.0'),
35
+ rubygems_gem('warden', '1.2.7'),
36
+ rubygems_gem('devise', '4.2.0'),
37
+ rubygems_gem('multipart-post', '2.0.0'),
38
+ rubygems_gem('faraday', '0.10.1'),
39
+ rubygems_gem('hashie', '3.5.3'),
40
+ rubygems_gem('jwt', '1.5.6'),
41
+ rubygems_gem('multi_json', '1.12.1'),
42
+ rubygems_gem('multi_xml', '0.6.0'),
43
+ rubygems_gem('oauth2', '1.3.0'),
44
+ rubygems_gem('omniauth', '1.6.1'),
45
+ rubygems_gem('omniauth-oauth2', '1.3.1'),
46
+ git_gem('omniauth-keltec', '0.0.1', 'https://github.com/ThunderKey/omniauth-keltec.git', 'd954a55459b48cb56be4dbbcaa1fd2afc113db5b'),
47
+ rubygems_gem('bundler', '1.14.3'),
48
+ ]
49
+ end
50
+
51
+ it 'generates a correct hash from a valid Gemfile with own names' do
52
+ i = GemfileInterpreter.new assets_dir, gemfile: 'ValidGemfile', lockfile: 'ValidGemfile.own_lock'
53
+ expect(i.parsed.to_a).to eq [
54
+ rubygems_gem('rake', '12.0.0'),
55
+ rubygems_gem('concurrent-ruby', '1.0.4'),
56
+ rubygems_gem('i18n', '0.8.0'),
57
+ rubygems_gem('minitest', '5.10.1'),
58
+ rubygems_gem('thread_safe', '0.3.5'),
59
+ rubygems_gem('tzinfo', '1.2.2'),
60
+ rubygems_gem('activesupport', '5.0.1'),
61
+ rubygems_gem('builder', '3.2.3'),
62
+ rubygems_gem('erubis', '2.7.0'),
63
+ rubygems_gem('mini_portile2', '2.1.0'),
64
+ rubygems_gem('nokogiri', '1.7.0.1'),
65
+ rubygems_gem('rails-dom-testing', '2.0.2'),
66
+ rubygems_gem('loofah', '2.0.3'),
67
+ rubygems_gem('rails-html-sanitizer', '1.0.3'),
68
+ rubygems_gem('actionview', '5.0.1'),
69
+ rubygems_gem('rack', '2.0.1'),
70
+ rubygems_gem('rack-test', '0.6.3'),
71
+ rubygems_gem('actionpack', '5.0.1'),
72
+ rubygems_gem('bcrypt', '3.1.11'),
73
+ rubygems_gem('orm_adapter', '0.5.0'),
74
+ rubygems_gem('method_source', '0.8.2'),
75
+ rubygems_gem('thor', '0.19.4'),
76
+ rubygems_gem('railties', '5.0.1'),
77
+ rubygems_gem('responders', '2.3.0'),
78
+ rubygems_gem('warden', '1.2.7'),
79
+ rubygems_gem('devise', '4.2.0'),
80
+ rubygems_gem('multipart-post', '2.0.0'),
81
+ rubygems_gem('faraday', '0.10.1'),
82
+ rubygems_gem('hashie', '3.5.3'),
83
+ rubygems_gem('jwt', '1.5.6'),
84
+ rubygems_gem('multi_json', '1.12.1'),
85
+ rubygems_gem('multi_xml', '0.6.0'),
86
+ rubygems_gem('oauth2', '1.3.0'),
87
+ rubygems_gem('omniauth', '1.6.1'),
88
+ rubygems_gem('omniauth-oauth2', '1.3.1'),
89
+ git_gem('omniauth-keltec', '0.0.1', 'https://github.com/ThunderKey/omniauth-keltec.git', 'd954a55459b48cb56be4dbbcaa1fd2afc113db5b'),
90
+ rubygems_gem('bundler', '1.14.3'),
91
+ ]
92
+ end
93
+
94
+ it 'raises an error if the Gemfile has a reference to a local directory' do
95
+ i = GemfileInterpreter.new root_dir
96
+ expect { i.parsed }.to raise_error NotImplementedError
97
+ end
98
+
99
+ it 'raises an error if the lock file is missing' do
100
+ expect { GemfileInterpreter.new assets_dir, gemfile: 'GemfileWithoutLock' }.to raise_error GemfileInterpreter::GemfileLockMissingError
101
+ end
102
+
103
+ it 'raises an error if the Gemfile is missing' do
104
+ expect { GemfileInterpreter.new assets_dir, gemfile: 'MissingGemfile' }.to raise_error GemfileInterpreter::GemfileMissingError
105
+ end
106
+
107
+ private
108
+
109
+ def rubygems_gem name, version
110
+ gem name, version, {'type' => 'rubygems', 'remotes' => ['https://rubygems.org/']}
111
+ end
112
+
113
+ def git_gem name, version, uri, revision
114
+ gem name, version, {'type' => 'git', 'revision' => revision, 'uri' => uri}
115
+ end
116
+
117
+ def gem name, version, source
118
+ [name, {'version' => version, 'full_name' => "#{name}-#{version}", 'platform' => 'ruby', 'remote' => '', 'source' => source}]
119
+ end
120
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemfile_interpreter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Ganz
@@ -47,9 +47,16 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - bin/gemfile_interpreter
49
49
  - lib/gemfile_interpreter.rb
50
- - lib/gemfile_interpreter/own_bundler.rb
51
50
  - lib/gemfile_interpreter/parser.rb
51
+ - lib/gemfile_interpreter/readonly_bundler.rb
52
52
  - lib/gemfile_interpreter/version.rb
53
+ - spec/assets/Gemfile
54
+ - spec/assets/Gemfile.lock
55
+ - spec/assets/GemfileWithoutLock
56
+ - spec/assets/ValidGemfile
57
+ - spec/assets/ValidGemfile.own_lock
58
+ - spec/spec_helper.rb
59
+ - spec/unit/gemfile_interpreter_spec.rb
53
60
  homepage: https://github.com/ThunderKey/gemfile_interpreter
54
61
  licenses:
55
62
  - MIT
@@ -74,4 +81,11 @@ rubygems_version: 2.6.8
74
81
  signing_key:
75
82
  specification_version: 4
76
83
  summary: Gemfile Interpreter
77
- test_files: []
84
+ test_files:
85
+ - spec/assets/Gemfile
86
+ - spec/assets/Gemfile.lock
87
+ - spec/assets/GemfileWithoutLock
88
+ - spec/assets/ValidGemfile
89
+ - spec/assets/ValidGemfile.own_lock
90
+ - spec/spec_helper.rb
91
+ - spec/unit/gemfile_interpreter_spec.rb