vendorificator 0.1.0 → 0.1.1

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.
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
19
  /.rbx
20
+ /log
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+ bundler_args: --without development_workstation
2
3
  rvm:
3
4
  - 1.8.7
4
5
  - 1.9.2
data/Gemfile CHANGED
@@ -4,7 +4,15 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :development do
7
- gem "rake"
7
+ gem "ZenTest", "4.8.3"
8
+ git "git://github.com/mpasternacki/wrong.git",
9
+ :ref => 'ad025241e5772373264d1bf62168e2bf3780ccf9' do
10
+ gem 'wrong'
11
+ end
12
+ gem 'minitest-ansi'
13
+ end
14
+
15
+ group :development_workstation do
8
16
  gem "pry"
9
17
  gem "awesome_print"
10
18
  gem "relish"
data/README.md CHANGED
@@ -40,6 +40,9 @@ subcommands.
40
40
  Run `vendor` to see list of subcommands. Run `vendor help _command_`
41
41
  to get detailed description of a command.
42
42
 
43
+ There is a lightning talk presentation/demo slide deck online at
44
+ https://speakerdeck.com/mpasternacki/vendorificator
45
+
43
46
  ### Commands
44
47
 
45
48
  Most important commands are listed here; use `vendor help` for more
data/Rakefile CHANGED
@@ -4,6 +4,7 @@ require "bundler"
4
4
  Bundler.setup
5
5
 
6
6
  require "bundler/gem_tasks"
7
+ require 'rake/testtask'
7
8
 
8
9
  namespace :relish do
9
10
  desc "Publish documentation to Relish"
@@ -16,9 +17,8 @@ begin
16
17
  require 'cucumber'
17
18
  require 'cucumber/rake/task'
18
19
 
19
- Cucumber::Rake::Task.new(:features) do |t|
20
- t.cucumber_opts = "--format pretty --verbose"
21
- end
20
+ desc 'Run Cucumber features'
21
+ Cucumber::Rake::Task.new(:features)
22
22
  rescue LoadError
23
23
  desc 'Cucumber rake task not available'
24
24
  task :features do
@@ -26,4 +26,10 @@ rescue LoadError
26
26
  end
27
27
  end
28
28
 
29
- task :default => :features
29
+ desc "Run Minitest specs"
30
+ Rake::TestTask.new :spec do |task|
31
+ task.libs << 'spec'
32
+ task.test_files = FileList['spec/**/*_spec.rb']
33
+ end
34
+
35
+ task :default => [:spec, :features]
data/cucumber.yml ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ default: --format progress
@@ -39,11 +39,14 @@ module Vendorificator
39
39
  end
40
40
 
41
41
  def command_succeeded(print_failed=true)
42
- command.error!
43
- true
44
- rescue Mixlib::ShellOut::ShellCommandFailed
45
- print_command_result if print_failed
46
- false
42
+ begin
43
+ command.error!
44
+ rescue Mixlib::ShellOut::ShellCommandFailed
45
+ print_command_result if print_failed
46
+ false
47
+ else
48
+ true
49
+ end
47
50
  end
48
51
 
49
52
  def command_stdout
@@ -33,8 +33,10 @@ module Vendorificator
33
33
  end
34
34
 
35
35
  desc :sync, "Download new or updated vendor files"
36
+ method_option :update, :type => :boolean, :default => false
36
37
  def sync
37
38
  ensure_clean_repo!
39
+ conf[:use_upstream_version] = options[:update]
38
40
  Vendorificator::Config.each_module(*modules) do |mod|
39
41
  say_status :module, mod.name
40
42
  begin
@@ -47,8 +49,10 @@ module Vendorificator
47
49
  end
48
50
 
49
51
  desc "status", "List known vendor modules and their status"
52
+ method_option :update, :type => :boolean, :default => false
50
53
  def status
51
54
  say_status 'WARNING', 'Git repository is not clean', :red unless repo.clean?
55
+ conf[:use_upstream_version] = options[:update]
52
56
  Vendorificator::Config.each_module(*modules) do |mod|
53
57
  status_line = mod.to_s
54
58
 
@@ -136,7 +140,7 @@ EOF
136
140
  binding.pry
137
141
  end
138
142
 
139
- def self.start
143
+ def self.start(*args)
140
144
  # Make --git-options always quoted
141
145
  if i = ARGV.index('--git-options')
142
146
  ARGV[i+1,0] = '--'
@@ -145,15 +149,15 @@ EOF
145
149
  if ENV['FIXTURES_DIR']
146
150
  require 'vcr'
147
151
  VCR.configure do |c|
148
- c.cassette_library_dir = File.join(ENV['FIXTURES_DIR'], 'vcr_cassettes')
152
+ c.cassette_library_dir = File.join(ENV['FIXTURES_DIR'], 'vcr')
149
153
  c.default_cassette_options = { :record => :new_episodes }
150
- c.hook_into :fakeweb
154
+ c.hook_into :webmock
151
155
  end
152
156
  VCR.use_cassette(ENV['VCR_CASSETTE'] || 'vendorificator') do
153
- super
157
+ super(*args)
154
158
  end
155
159
  else
156
- super
160
+ super(*args)
157
161
  end
158
162
  end
159
163
 
@@ -40,7 +40,7 @@ module Vendorificator
40
40
  end
41
41
 
42
42
  def initialize(name, args={}, &block)
43
- @category = args.delete(:category)
43
+ @category = args.delete(:category) if args.key?(:category)
44
44
 
45
45
  @name = name
46
46
  @args = args
@@ -53,7 +53,11 @@ module Vendorificator
53
53
  end
54
54
 
55
55
  def category
56
- @category || self.class.category
56
+ if instance_variable_defined?(:@category)
57
+ @category
58
+ else
59
+ self.class.category
60
+ end
57
61
  end
58
62
 
59
63
  def branch_name
@@ -115,7 +119,7 @@ module Vendorificator
115
119
  end
116
120
 
117
121
  def version
118
- @args[:version] || merged_version || upstream_version
122
+ @args[:version] || (!conf[:use_upstream_version] && merged_version) || upstream_version
119
123
  end
120
124
 
121
125
  def upstream_version
@@ -1,3 +1,3 @@
1
1
  module Vendorificator
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ module Vendorificator
4
+ describe VERSION do
5
+ it 'is equal to itself' do
6
+ assert { VERSION == Vendorificator::VERSION }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.setup
4
+
5
+ require 'minitest/spec'
6
+ require 'minitest/autorun'
7
+ require 'vcr'
8
+ require 'wrong'
9
+ require 'wrong/adapters/minitest'
10
+
11
+ begin
12
+ require 'minitest/ansi'
13
+ rescue LoadError # that's fine, we'll live without it
14
+ else
15
+ MiniTest::ANSI.use! if STDOUT.tty?
16
+ end
17
+
18
+ require 'vendorificator'
19
+
20
+ VCR.configure do |config|
21
+ config.cassette_library_dir = 'features/fixtures/vcr'
22
+ config.default_cassette_options = { :record => :new_episodes }
23
+ config.hook_into :webmock
24
+ end
25
+
26
+ Vendorificator::Config[:root_dir] = Pathname.new(__FILE__).dirname
27
+
28
+ class MiniTest::Spec
29
+ def conf
30
+ Vendorificator::Config
31
+ end
32
+
33
+ before :each do
34
+ @saved_configuration = Marshal.load(Marshal.dump(conf.configuration))
35
+ @saved_methods = conf.methods
36
+ end
37
+
38
+ after :each do
39
+ # Remove all new methods defined on Configuration over the run
40
+ conf[:methods_to_remove!] = conf.methods - @saved_methods
41
+
42
+ class << conf
43
+ Vendorificator::Config[:methods_to_remove!].each do |method_to_remove|
44
+ remove_method method_to_remove
45
+ end
46
+ end
47
+ assert { conf.methods.sort == @saved_methods.sort }
48
+
49
+ # Restore saved configuration
50
+ conf.configuration = @saved_configuration
51
+ end
52
+
53
+ def vendorfile(&block)
54
+ Vendorificator::Config.instance_eval &block
55
+ end
56
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ module Vendorificator
4
+ class Vendor::Categorized < Vendor
5
+ @category = :test
6
+ end
7
+
8
+ class Vendor::Custom < Vendor
9
+ @method_name = :whatever
10
+ end
11
+
12
+ describe Vendor do
13
+ describe '.category' do
14
+ it 'defaults to nil' do
15
+ assert { Vendor.category == nil }
16
+ end
17
+
18
+ it 'can be overridden in a subclass' do
19
+ assert { Vendor::Categorized.category == :test }
20
+ end
21
+ end
22
+
23
+ describe '.install!' do
24
+ it "creates a method inside Vendorificator::Config" do
25
+ deny { conf.respond_to?(:categorized) }
26
+
27
+ Vendor::Categorized.install!
28
+ assert { conf.respond_to?(:categorized) }
29
+ end
30
+
31
+ it "uses @method_name for method's name if set" do
32
+ deny { conf.respond_to?(:custom) }
33
+ deny { conf.respond_to?(:whatever) }
34
+
35
+ Vendor::Custom.install!
36
+ deny { conf.respond_to?(:custom) }
37
+ assert { conf.respond_to?(:whatever) }
38
+ end
39
+ end
40
+
41
+ describe '#category' do
42
+ it 'defaults to class attribute' do
43
+ assert { Vendor.new('test').category == nil }
44
+ assert { Vendor::Categorized.new('test').category == :test }
45
+ end
46
+
47
+ it 'can be overriden by option' do
48
+ assert { Vendor.new('test', :category => :foo).category == :foo }
49
+ assert { Vendor::Categorized.new('test', :category => :foo).category == :foo }
50
+ end
51
+
52
+ it 'can be reset to nil by option' do
53
+ assert { Vendor::Categorized.new('test', :category => nil).category == nil }
54
+ end
55
+
56
+ it 'is inserted into paths and other names' do
57
+ uncategorized = Vendor.new('test')
58
+ categorized = Vendor.new('test', :category => :cat)
59
+
60
+ deny { uncategorized.branch_name.include? 'cat' }
61
+ assert { categorized.branch_name.include? 'cat' }
62
+
63
+ deny { uncategorized.path.include? 'cat' }
64
+ assert { categorized.path.include? 'cat' }
65
+
66
+ deny { uncategorized.tag_name.include? 'cat' }
67
+ assert { categorized.tag_name.include? 'cat' }
68
+ end
69
+ end
70
+ end
71
+ end
@@ -25,6 +25,7 @@ Gem::Specification.new do |gem|
25
25
  gem.add_development_dependency 'mixlib-shellout'
26
26
  gem.add_development_dependency 'chef', '>= 10.16.0'
27
27
  gem.add_development_dependency 'vcr'
28
- gem.add_development_dependency 'fakeweb'
29
- gem.add_development_dependency 'wrong'
28
+ gem.add_development_dependency 'webmock'
29
+ gem.add_development_dependency 'wrong', '>= 0.7.0'
30
+ gem.add_development_dependency 'rake'
30
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vendorificator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-03 00:00:00.000000000 Z
12
+ date: 2013-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: escape
@@ -156,7 +156,7 @@ dependencies:
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  - !ruby/object:Gem::Dependency
159
- name: fakeweb
159
+ name: webmock
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
@@ -173,6 +173,22 @@ dependencies:
173
173
  version: '0'
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: wrong
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: 0.7.0
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: 0.7.0
190
+ - !ruby/object:Gem::Dependency
191
+ name: rake
176
192
  requirement: !ruby/object:Gem::Requirement
177
193
  none: false
178
194
  requirements:
@@ -204,6 +220,7 @@ files:
204
220
  - Rakefile
205
221
  - bin/vendor
206
222
  - bin/vendorify
223
+ - cucumber.yml
207
224
  - examples/Vendorfile
208
225
  - features/chef_cookbook.feature
209
226
  - features/deprecated.feature
@@ -226,7 +243,7 @@ files:
226
243
  - features/fixtures/git/testrepo/packed-refs
227
244
  - features/fixtures/git/testrepo/refs/heads/.sentinel
228
245
  - features/fixtures/git/testrepo/refs/tags/.sentinel
229
- - features/fixtures/vcr_cassettes/vendorificator.yml
246
+ - features/fixtures/vcr/vendorificator.yml
230
247
  - features/git.feature
231
248
  - features/needed.feature
232
249
  - features/smoke.feature
@@ -251,6 +268,9 @@ files:
251
268
  - lib/vendorificator/vendor/chef_cookbook.rb
252
269
  - lib/vendorificator/vendor/git.rb
253
270
  - lib/vendorificator/version.rb
271
+ - spec/smoke_spec.rb
272
+ - spec/spec_helper.rb
273
+ - spec/vendorificator/vendor_spec.rb
254
274
  - vendorificator.gemspec
255
275
  homepage: https://github.com/3ofcoins/vendorificator/
256
276
  licenses: []
@@ -266,7 +286,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
286
  version: '0'
267
287
  segments:
268
288
  - 0
269
- hash: 4082258902042132214
289
+ hash: 1910323854215610577
270
290
  required_rubygems_version: !ruby/object:Gem::Requirement
271
291
  none: false
272
292
  requirements:
@@ -275,10 +295,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
295
  version: '0'
276
296
  segments:
277
297
  - 0
278
- hash: 4082258902042132214
298
+ hash: 1910323854215610577
279
299
  requirements: []
280
300
  rubyforge_project:
281
- rubygems_version: 1.8.24
301
+ rubygems_version: 1.8.25
282
302
  signing_key:
283
303
  specification_version: 3
284
304
  summary: Integrate third-party vendor modules into your git repository
@@ -304,7 +324,7 @@ test_files:
304
324
  - features/fixtures/git/testrepo/packed-refs
305
325
  - features/fixtures/git/testrepo/refs/heads/.sentinel
306
326
  - features/fixtures/git/testrepo/refs/tags/.sentinel
307
- - features/fixtures/vcr_cassettes/vendorificator.yml
327
+ - features/fixtures/vcr/vendorificator.yml
308
328
  - features/git.feature
309
329
  - features/needed.feature
310
330
  - features/smoke.feature
@@ -319,3 +339,6 @@ test_files:
319
339
  - features/tarball.feature
320
340
  - features/tarball_edit.feature
321
341
  - features/vendor.feature
342
+ - spec/smoke_spec.rb
343
+ - spec/spec_helper.rb
344
+ - spec/vendorificator/vendor_spec.rb