gem-patch 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8184438e8bca43220120c8d713c90c563bfcfd4
4
- data.tar.gz: 7f0602aa71171948d2e6bfa09f037fd819406d9a
3
+ metadata.gz: 5669ae6006115b0c89acbbc4f98c9e761f041bd9
4
+ data.tar.gz: 19f8c702ec9ff3b55fc7c2da9a26b3ad53b9707e
5
5
  SHA512:
6
- metadata.gz: 5a4c0e65496e12db4179f0dccd295392f6ea96e16385fb6a8e9749e3f0513e34bcc8d3fafc4166078d6c0ca54dec0fcb3331d1fcb5d41a12ed288d9137c2e492
7
- data.tar.gz: 302768e47f9212575d9830f2fb11d14313dc0658be3fb184038f074c41b0611ddac5046f5a2eb2a08e32f74cc3f0cf8ec6bc102267415e6e2f7cc6061bcf134a
6
+ metadata.gz: bffd06b0d82ecf682c0ad35f9bd91d2dbbb419d8f9600ee1bfb1c63baa335173cc07cc3e4d636217948c481199b3a80f69aeb3b6b86f743401e84d31fd28c1d0
7
+ data.tar.gz: 240d800db645308f36b8eeb37d7c7947c0701276bb353087813aecf0953ef29bcb3b1be5fd0966038adf221c5cdca0da081c79ce9ec6d3748e8283966829433e
data/README.md CHANGED
@@ -30,6 +30,8 @@ On Fedora you can use YUM:
30
30
  | --dry-run | | Print the results from patching, but do not change any files. |
31
31
  | --verbose | | Print additional info and STDOUT from `patch` command. |
32
32
 
33
+ For versions higher than 0.1.4 `--dry-run` switch behaviour has been changed and it's not the same as in original `patch` command. Instead, `gem-patch` lets `patch` command modify files, but doesn't override the gem to be patched nor the output file at the end. This way we can easily use dry run also for patches involving more diffs changing each other.
34
+
33
35
  ## Requirements
34
36
 
35
37
  This version is build for both RubyGems 1.8 and RubyGems 2.0.
@@ -39,7 +39,7 @@ class Gem::Patcher
39
39
  build_patched_gem
40
40
 
41
41
  options[:outfile] ||= File.join(@output_dir, @package.spec.file_name)
42
- FileUtils.mv((File.join @target_dir, @package.spec.file_name), options[:outfile])
42
+ FileUtils.mv((File.join @target_dir, @package.spec.file_name), options[:outfile]) unless options[:dry_run]
43
43
 
44
44
  # Return the path to the patched gem
45
45
  options[:outfile]
@@ -48,14 +48,13 @@ class Gem::Patcher
48
48
  def apply_patch(patch, options)
49
49
  options[:strip] ||= 1
50
50
  options[:fuzz] ||= 2
51
- dry_run = '--dry-run' if options[:dry_run]
52
51
 
53
52
  patch_path = File.expand_path(patch)
54
53
  info 'Path to the patch to apply: ' + patch_path
55
54
 
56
55
  # Apply the patch by calling 'patch -pNUMBER < patch'
57
56
  Dir.chdir @target_dir do
58
- IO.popen("patch --verbose -p#{options[:strip]} --fuzz=#{options[:fuzz]} #{dry_run} < #{patch_path} 2>&1") do |out|
57
+ IO.popen("patch --verbose -p#{options[:strip]} --fuzz=#{options[:fuzz]} < #{patch_path} 2>&1") do |out|
59
58
  std = out.readlines
60
59
  out.close
61
60
  info std
@@ -81,6 +80,11 @@ class Gem::Patcher
81
80
  end
82
81
  end
83
82
 
83
+ # Return output lines
84
+ def output
85
+ @output
86
+ end
87
+
84
88
  private
85
89
 
86
90
  def extract_gem
@@ -4,7 +4,7 @@ require 'rdoc/task'
4
4
 
5
5
  gemspec = Gem::Specification.new do |s|
6
6
  s.name = "gem-patch"
7
- s.version = "0.1.4"
7
+ s.version = "0.1.5"
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.summary = "RubyGems plugin for patching gems."
10
10
  s.description = <<-EOF
@@ -20,7 +20,7 @@ class TestGemPatch < Gem::TestCase
20
20
 
21
21
  def test_dry_run
22
22
  @options[:dry_run] = true
23
-
23
+
24
24
  gemfile = bake_testing_gem
25
25
 
26
26
  patches = []
@@ -37,6 +37,25 @@ class TestGemPatch < Gem::TestCase
37
37
  # Still the same
38
38
  assert_equal original_file, file_contents('foo.rb')
39
39
  end
40
+
41
+ ##
42
+ # Test dry run should allow modification of the same file
43
+ # unlike original --dry-run switch in system patch command
44
+
45
+ def test_dry_run
46
+ @options[:dry_run] = true
47
+
48
+ gemfile = bake_testing_gem
49
+
50
+ patches = []
51
+ patches << bake_change_same_file_patch
52
+
53
+ # Creates new patched gem in @gems_dir
54
+ patcher = Gem::Patcher.new(gemfile, @gems_dir)
55
+ patched_gem = patcher.patch_with(patches, @options)
56
+
57
+ assert_equal 0, /\ASuccesfully patched with.*/ =~ patcher.output.join(' ')
58
+ end
40
59
 
41
60
  ##
42
61
  # Test using outfile for output
@@ -103,7 +122,7 @@ class TestGemPatch < Gem::TestCase
103
122
  package = Gem::Package.new patched_gem
104
123
  package.extract_files @gems_dir
105
124
 
106
- assert_equal patched_file, file_contents('foo.rb')
125
+ assert_equal patched_file_with_fuzz, file_contents('foo.rb')
107
126
  end
108
127
 
109
128
  ##
@@ -204,12 +223,22 @@ class TestGemPatch < Gem::TestCase
204
223
 
205
224
  patch_path
206
225
  end
226
+
227
+ def bake_change_same_file_patch
228
+ patch_path = File.join(@gems_dir, 'change_same_file.patch')
229
+
230
+ File.open(patch_path, 'w') do |f|
231
+ f.write change_same_file_patch
232
+ end
233
+
234
+ patch_path
235
+ end
207
236
 
208
237
  def bake_change_file_with_fuzz_patch
209
238
  patch_path = File.join(@gems_dir, 'change_file_with_fuzz.patch')
210
239
 
211
240
  File.open(patch_path, 'w') do |f|
212
- f.write change_file_patch
241
+ f.write change_file_with_fuzz_patch
213
242
  end
214
243
 
215
244
  patch_path
@@ -334,6 +363,16 @@ class TestGemPatch < Gem::TestCase
334
363
  EOF
335
364
  end
336
365
 
366
+ def patched_file_with_fuzz
367
+ <<-EOF
368
+ module Foo
369
+ def bar
370
+ 'Patched'
371
+ end
372
+ end
373
+ EOF
374
+ end
375
+
337
376
  def change_file_patch
338
377
  <<-EOF
339
378
  diff -u a/lib/foo.rb b/lib/foo.rb
@@ -351,14 +390,14 @@ class TestGemPatch < Gem::TestCase
351
390
  end
352
391
  EOF
353
392
  end
354
-
355
- def change_file_with_fuzz_patch
393
+
394
+ def change_same_file_patch
356
395
  <<-EOF
357
396
  diff -u a/lib/foo.rb b/lib/foo.rb
358
- --- a/lib/foo.rb
397
+ --- a/lib/foo.rb
359
398
  +++ b/lib/foo.rb
360
399
  @@ -1,6 +1,8 @@
361
- module FooBar
400
+ module Foo
362
401
  - def bar
363
402
  - 'Original'
364
403
  + class Bar
@@ -367,6 +406,37 @@ class TestGemPatch < Gem::TestCase
367
406
  + end
368
407
  end
369
408
  end
409
+
410
+ diff -u a/lib/foo.rb b/lib/foo.rb
411
+ --- a/lib/foo.rb
412
+ +++ b/lib/foo.rb
413
+ @@ -1,8 +1,8 @@
414
+ module Foo
415
+ - class Bar
416
+ - def foo_bar
417
+ - 'Patched'
418
+ - end
419
+ + class NewBar
420
+ + def new_foo_bar
421
+ + 'Patched'
422
+ + end
423
+ end
424
+ end
425
+ EOF
426
+ end
427
+
428
+ def change_file_with_fuzz_patch
429
+ <<-EOF
430
+ diff -u a/lib/foo.rb b/lib/foo.rb
431
+ --- a/lib/foo.rb
432
+ +++ b/lib/foo.rb
433
+ @@ -100,5 +100,5 @@
434
+ module Foo
435
+ def bar_bar
436
+ - 'Original'
437
+ + 'Patched'
438
+ end
439
+ end
370
440
  EOF
371
441
  end
372
442
 
@@ -410,4 +480,4 @@ class TestGemPatch < Gem::TestCase
410
480
  - end
411
481
  EOF
412
482
  end
413
- end
483
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-patch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Stribny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-22 00:00:00.000000000 Z
11
+ date: 2013-11-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  `gem-patch` is a RubyGems plugin that helps to patch gems without manually opening and rebuilding them.
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  version: 1.8.0
49
49
  requirements: []
50
50
  rubyforge_project:
51
- rubygems_version: 2.0.3
51
+ rubygems_version: 2.1.9
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: RubyGems plugin for patching gems.