aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/test')
-rwxr-xr-xLibrary/Homebrew/test/mach/a.outbin0 -> 25072 bytes
-rw-r--r--Library/Homebrew/test/mach/fat.dylibbin0 -> 16452 bytes
-rw-r--r--Library/Homebrew/test/mach/i386.dylibbin0 -> 4164 bytes
-rw-r--r--Library/Homebrew/test/mach/x86_64.dylibbin0 -> 4176 bytes
-rw-r--r--Library/Homebrew/test/test_mach.rb140
5 files changed, 140 insertions, 0 deletions
diff --git a/Library/Homebrew/test/mach/a.out b/Library/Homebrew/test/mach/a.out
new file mode 100755
index 000000000..18e0e982f
--- /dev/null
+++ b/Library/Homebrew/test/mach/a.out
Binary files differ
diff --git a/Library/Homebrew/test/mach/fat.dylib b/Library/Homebrew/test/mach/fat.dylib
new file mode 100644
index 000000000..6886a6a8b
--- /dev/null
+++ b/Library/Homebrew/test/mach/fat.dylib
Binary files differ
diff --git a/Library/Homebrew/test/mach/i386.dylib b/Library/Homebrew/test/mach/i386.dylib
new file mode 100644
index 000000000..0304dca01
--- /dev/null
+++ b/Library/Homebrew/test/mach/i386.dylib
Binary files differ
diff --git a/Library/Homebrew/test/mach/x86_64.dylib b/Library/Homebrew/test/mach/x86_64.dylib
new file mode 100644
index 000000000..781b41cb4
--- /dev/null
+++ b/Library/Homebrew/test/mach/x86_64.dylib
Binary files differ
diff --git a/Library/Homebrew/test/test_mach.rb b/Library/Homebrew/test/test_mach.rb
new file mode 100644
index 000000000..2da4e429a
--- /dev/null
+++ b/Library/Homebrew/test/test_mach.rb
@@ -0,0 +1,140 @@
+require 'testing_env'
+
+require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser
+ARGV.extend(HomebrewArgvExtension)
+
+class MachOPathnameTests < Test::Unit::TestCase
+ def test_fat_dylib
+ pn = Pathname.new("#{TEST_FOLDER}/mach/fat.dylib")
+ assert pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert pn.dylib?
+ assert !pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert pn.arch == :universal
+ assert_match /Mach-O (64-bit )?dynamically linked shared library/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_i386_dylib
+ pn = Pathname.new("#{TEST_FOLDER}/mach/i386.dylib")
+ assert !pn.universal?
+ assert pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert pn.dylib?
+ assert !pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert_match /Mach-O (64-bit )?dynamically linked shared library/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_x86_64_dylib
+ pn = Pathname.new("#{TEST_FOLDER}/mach/x86_64.dylib")
+ assert !pn.universal?
+ assert !pn.i386?
+ assert pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert pn.dylib?
+ assert !pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert_match /Mach-O (64-bit )?dynamically linked shared library/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_mach_o_executable
+ pn = Pathname.new("#{TEST_FOLDER}/mach/a.out")
+ assert pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert !pn.dylib?
+ assert pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert_match /Mach-O (64-bit )?executable/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_non_mach_o
+ pn = Pathname.new("#{TEST_FOLDER}/tarballs/testball-0.1.tbz")
+ assert !pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert !pn.dylib?
+ assert !pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert pn.arch == :dunno
+ assert_no_match /Mach-O (64-bit )?dynamically linked shared library/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ assert_no_match /Mach-O [^ ]* ?executable/,
+ `/usr/bin/file -h '#{pn}'`.chomp
+ end
+end
+
+class TextExecutableTests < Test::Unit::TestCase
+ TMPDIR = HOMEBREW_PREFIX/'tmp'
+
+ def setup
+ FileUtils.mkdir_p TMPDIR
+ end
+
+ def test_simple_shebang
+ pn = Pathname.new('foo')
+ pn.write '#!/bin/sh'
+ assert !pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert !pn.dylib?
+ assert !pn.mach_o_executable?
+ assert pn.text_executable?
+ assert_equal [], pn.archs
+ assert pn.arch == :dunno
+ assert_match /text executable/, `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_shebang_with_options
+ pn = Pathname.new('bar')
+ pn.write '#! /usr/bin/perl -w'
+ assert !pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert !pn.dylib?
+ assert !pn.mach_o_executable?
+ assert pn.text_executable?
+ assert_equal [], pn.archs
+ assert pn.arch == :dunno
+ assert_match /text executable/, `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def test_malformed_shebang
+ pn = Pathname.new('baz')
+ pn.write '#! '
+ assert !pn.universal?
+ assert !pn.i386?
+ assert !pn.x86_64?
+ assert !pn.ppc7400?
+ assert !pn.ppc64?
+ assert !pn.dylib?
+ assert !pn.mach_o_executable?
+ assert !pn.text_executable?
+ assert_equal [], pn.archs
+ assert pn.arch == :dunno
+ assert_match /text executable/, `/usr/bin/file -h '#{pn}'`.chomp
+ end
+
+ def teardown
+ TMPDIR.rmtree
+ end
+end