aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorJack Nagel2014-03-13 19:51:23 -0500
committerJack Nagel2014-03-13 21:35:41 -0500
commitbc6e4a189491f0e3f911b879efec3e570029dd8e (patch)
tree3a37c4f0a4575d6f1986f5b182e904f59f3255ff /Library/Homebrew/test
parentf36e676bc9e93c4c10d14b3e10e9e2f72bfb25db (diff)
downloadbrew-bc6e4a189491f0e3f911b879efec3e570029dd8e.tar.bz2
New patch implementation and DSL
This commit introduces a new patch implementation that supports checksums and caching. Patches are declared in blocks: patch do url ... sha1 ... end A strip level of -p1 is assumed. It can be overridden using a symbol argument: patch :p0 do url ... sha1 ... end Patches can be declared in stable, devel, and head blocks. This form is preferred over using conditionals. stable do # ... patch do url ... sha1 ... end end Embedded (__END__) patches are declared like so: patch :DATA patch :p0, :DATA Patches can also be embedded by passing a string. This makes it possible to provide multiple embedded patches while making only some of them conditional. patch :p0, "..."
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/test_patch.rb52
-rw-r--r--Library/Homebrew/test/test_software_spec.rb6
2 files changed, 58 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_patch.rb b/Library/Homebrew/test/test_patch.rb
new file mode 100644
index 000000000..1cc1ac7af
--- /dev/null
+++ b/Library/Homebrew/test/test_patch.rb
@@ -0,0 +1,52 @@
+require 'testing_env'
+require 'patch'
+
+class PatchTests < Test::Unit::TestCase
+ def test_create_simple
+ patch = Patch.create(:p2)
+ assert_kind_of ExternalPatch, patch
+ assert patch.external?
+ assert_equal :p2, patch.strip
+ end
+
+ def test_create_io
+ patch = Patch.create(:p0, StringIO.new("foo"))
+ assert_kind_of IOPatch, patch
+ assert !patch.external?
+ assert_equal :p0, patch.strip
+ end
+
+ def test_create_io_without_strip
+ patch = Patch.create(StringIO.new("foo"))
+ assert_kind_of IOPatch, patch
+ assert_equal :p1, patch.strip
+ end
+
+ def test_create_string
+ patch = Patch.create(:p0, "foo")
+ assert_kind_of IOPatch, patch
+ assert_equal :p0, patch.strip
+ end
+
+ def test_create_string_without_strip
+ patch = Patch.create("foo")
+ assert_kind_of IOPatch, patch
+ assert_equal :p1, patch.strip
+ end
+
+ def test_create_DATA
+ patch = Patch.create(:p0, :DATA)
+ assert_kind_of IOPatch, patch
+ assert_equal :p0, patch.strip
+ end
+
+ def test_create_DATA_without_strip
+ patch = Patch.create(:DATA)
+ assert_kind_of IOPatch, patch
+ assert_equal :p1, patch.strip
+ end
+
+ def test_raises_for_unknown_values
+ assert_raises(ArgumentError) { Patch.create(Object.new) }
+ end
+end
diff --git a/Library/Homebrew/test/test_software_spec.rb b/Library/Homebrew/test/test_software_spec.rb
index c35294320..7c9fb8720 100644
--- a/Library/Homebrew/test/test_software_spec.rb
+++ b/Library/Homebrew/test/test_software_spec.rb
@@ -80,6 +80,12 @@ class SoftwareSpecTests < Test::Unit::TestCase
@spec.depends_on('foo' => :optional)
assert_equal 'blah', @spec.build.first.description
end
+
+ def test_patch
+ @spec.patch :p1, :DATA
+ assert_equal 1, @spec.patches.length
+ assert_equal :p1, @spec.patches.first.strip
+ end
end
class HeadSoftwareSpecTests < Test::Unit::TestCase