| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  | require 'testing_env' | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  | require 'formula' | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class PatchingTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2014-06-12 17:58:12 -05:00
										 |  |  |   PATCH_URL_A = "file://#{TEST_DIRECTORY}/patches/noop-a.diff" | 
					
						
							|  |  |  |   PATCH_URL_B = "file://#{TEST_DIRECTORY}/patches/noop-b.diff" | 
					
						
							| 
									
										
										
										
											2014-07-29 16:06:06 -05:00
										 |  |  |   PATCH_A_CONTENTS = File.read "#{TEST_DIRECTORY}/patches/noop-a.diff" | 
					
						
							|  |  |  |   PATCH_B_CONTENTS = File.read "#{TEST_DIRECTORY}/patches/noop-b.diff" | 
					
						
							| 
									
										
										
										
											2014-06-10 20:24:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-29 16:06:06 -05:00
										 |  |  |   def formula(*args, &block) | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |     super do | 
					
						
							| 
									
										
										
										
											2014-06-12 17:58:12 -05:00
										 |  |  |       url "file://#{TEST_DIRECTORY}/tarballs/testball-0.1.tbz" | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |       sha1 "482e737739d946b7c8cbaf127d9ee9c148b999f5" | 
					
						
							|  |  |  |       class_eval(&block) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-23 21:39:10 -05:00
										 |  |  |   def teardown | 
					
						
							|  |  |  |     @_f.clear_cache | 
					
						
							|  |  |  |     @_f.patchlist.select(&:external?).each(&:clear_cache) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |   def assert_patched(formula) | 
					
						
							|  |  |  |     shutup do | 
					
						
							|  |  |  |       formula.brew do | 
					
						
							|  |  |  |         formula.patch | 
					
						
							|  |  |  |         s = File.read("libexec/NOOP") | 
					
						
							|  |  |  |         refute_includes s, "NOOP", "libexec/NOOP was not patched as expected" | 
					
						
							|  |  |  |         assert_includes s, "ABCD", "libexec/NOOP was not patched as expected" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-06-20 00:51:01 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |   def test_single_patch | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { | 
					
						
							|  |  |  |       def patches | 
					
						
							|  |  |  |         PATCH_URL_A | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_single_patch_dsl | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { | 
					
						
							|  |  |  |       patch do | 
					
						
							|  |  |  |         url PATCH_URL_A | 
					
						
							|  |  |  |         sha1 "fa8af2e803892e523fdedc6b758117c45e5749a2" | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_single_patch_dsl_with_strip | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { | 
					
						
							|  |  |  |       patch :p1 do | 
					
						
							|  |  |  |         url PATCH_URL_A | 
					
						
							|  |  |  |         sha1 "fa8af2e803892e523fdedc6b758117c45e5749a2" | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_single_patch_dsl_with_incorrect_strip | 
					
						
							|  |  |  |     assert_raises(ErrorDuringExecution) do | 
					
						
							|  |  |  |       shutup do | 
					
						
							|  |  |  |         formula do | 
					
						
							|  |  |  |           patch :p0 do | 
					
						
							| 
									
										
										
										
											2014-06-10 20:24:07 -05:00
										 |  |  |             url PATCH_URL_A | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |             sha1 "fa8af2e803892e523fdedc6b758117c45e5749a2" | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |         end.brew(&:patch) | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   def test_patch_p0_dsl | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { | 
					
						
							|  |  |  |       patch :p0 do | 
					
						
							|  |  |  |         url PATCH_URL_B | 
					
						
							|  |  |  |         sha1 "3b54bd576f998ef6d6623705ee023b55062b9504" | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_patch_p0 | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { def patches; { :p0 => PATCH_URL_B }; end } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-07 19:41:14 -05:00
										 |  |  |   def test_patch_array | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { def patches; [PATCH_URL_A]; end } | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   def test_patch_hash | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { def patches; { :p1 => PATCH_URL_A }; end } | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   def test_patch_hash_array | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { def patches; { :p1 => [PATCH_URL_A] } end } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_patch_string | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { patch PATCH_A_CONTENTS } | 
					
						
							| 
									
										
										
										
											2014-03-13 19:51:23 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_patch_string_with_strip | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula { patch :p0, PATCH_B_CONTENTS } | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-07-29 16:06:06 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_patch_DATA_constant | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     assert_patched formula("test", Pathname.new(__FILE__).expand_path) { | 
					
						
							|  |  |  |       def patches | 
					
						
							|  |  |  |         Formula::DATA | 
					
						
							| 
									
										
										
										
											2014-12-26 20:20:10 -05:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2014-12-26 20:51:43 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-07-29 16:06:06 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-02-10 22:21:24 -08:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2014-07-29 16:06:06 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | __END__
 | 
					
						
							|  |  |  | diff --git a/libexec/NOOP b/libexec/NOOP | 
					
						
							|  |  |  | index bfdda4c..e08d8f4 100755
 | 
					
						
							|  |  |  | --- a/libexec/NOOP | 
					
						
							|  |  |  | +++ b/libexec/NOOP | 
					
						
							|  |  |  | @@ -1,2 +1,2 @@ | 
					
						
							|  |  |  |  #!/bin/bash | 
					
						
							|  |  |  | -echo NOOP | 
					
						
							|  |  |  | \ No newline at end of file | 
					
						
							|  |  |  | +echo ABCD | 
					
						
							|  |  |  | \ No newline at end of file |