diff options
| author | Jack Nagel | 2013-05-06 16:08:50 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-05-06 16:08:50 -0500 |
| commit | 62389cc27456151b8f3be1d064e14412cb907066 (patch) | |
| tree | f8e9a87a8b51b4a76a08495dd953778ccff353bc /Library/Homebrew/test | |
| parent | 0d001785fdb2a6a422debd2f1756e9813ef8c04d (diff) | |
| download | homebrew-62389cc27456151b8f3be1d064e14412cb907066.tar.bz2 | |
Reduce allocations in dependency construction
By always passing around a single, unnested array rather than splatting
and then defensively flattening and compacting things, we can avoid
allocating a bunch of unnecessary arrays. This gives a performance boost
of roughly 4% when enumerating 2500 formulae, and has the side effect of
cleaning up the dependency API.
Diffstat (limited to 'Library/Homebrew/test')
| -rw-r--r-- | Library/Homebrew/test/test_comparableset.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_collector.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_requirement.rb | 8 |
4 files changed, 11 insertions, 15 deletions
diff --git a/Library/Homebrew/test/test_comparableset.rb b/Library/Homebrew/test/test_comparableset.rb index ee3f46f93..3e823597c 100644 --- a/Library/Homebrew/test/test_comparableset.rb +++ b/Library/Homebrew/test/test_comparableset.rb @@ -17,25 +17,25 @@ class ComparableSetTests < Test::Unit::TestCase def test_comparison_prefers_larger @set << X11Dependency.new - @set << X11Dependency.new('x11', '2.6') + @set << X11Dependency.new('x11', %w{2.6}) assert_equal 1, @set.count - assert_equal [X11Dependency.new('x11', '2.6')], @set.to_a + assert_equal [X11Dependency.new('x11', %w{2.6})], @set.to_a end def test_comparison_does_not_merge_smaller - @set << X11Dependency.new('x11', '2.6') + @set << X11Dependency.new('x11', %w{2.6}) @set << X11Dependency.new assert_equal 1, @set.count - assert_equal [X11Dependency.new('x11', '2.6')], @set.to_a + assert_equal [X11Dependency.new('x11', %w{2.6})], @set.to_a end def test_merging_sets @set << X11Dependency.new @set << Requirement.new - reqs = Set.new [X11Dependency.new('x11', '2.6'), Requirement.new] + reqs = Set.new [X11Dependency.new('x11', %w{2.6}), Requirement.new] assert_same @set, @set.merge(reqs) assert_equal 2, @set.count - assert_equal X11Dependency.new('x11', '2.6'), @set.find {|r| r.is_a? X11Dependency} + assert_equal X11Dependency.new('x11', %w{2.6}), @set.find {|r| r.is_a? X11Dependency} end end diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb index 2eac358e6..0f030afd6 100644 --- a/Library/Homebrew/test/test_dependency.rb +++ b/Library/Homebrew/test/test_dependency.rb @@ -20,7 +20,7 @@ end class DependencyTests < Test::Unit::TestCase def test_accepts_single_tag - dep = Dependency.new("foo", "bar") + dep = Dependency.new("foo", %w{bar}) assert_equal %w{bar}, dep.tags end @@ -30,7 +30,7 @@ class DependencyTests < Test::Unit::TestCase end def test_preserves_symbol_tags - dep = Dependency.new("foo", :build) + dep = Dependency.new("foo", [:build]) assert_equal [:build], dep.tags end diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index bf2612cfe..e780ed5a3 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -30,7 +30,7 @@ class DependencyCollectorTests < Test::Unit::TestCase end def test_dependency_tags - assert Dependency.new('foo', :build).build? + assert Dependency.new('foo', [:build]).build? assert Dependency.new('foo', [:build, :optional]).optional? assert Dependency.new('foo', [:universal]).options.include? '--universal' assert_empty Dependency.new('foo').tags diff --git a/Library/Homebrew/test/test_requirement.rb b/Library/Homebrew/test/test_requirement.rb index 682ee432e..ccf137e4d 100644 --- a/Library/Homebrew/test/test_requirement.rb +++ b/Library/Homebrew/test/test_requirement.rb @@ -3,27 +3,23 @@ require 'requirement' class RequirementTests < Test::Unit::TestCase def test_accepts_single_tag - dep = Requirement.new("bar") + dep = Requirement.new(%w{bar}) assert_equal %w{bar}, dep.tags end def test_accepts_multiple_tags dep = Requirement.new(%w{bar baz}) assert_equal %w{bar baz}.sort, dep.tags.sort - dep = Requirement.new(*%w{bar baz}) - assert_equal %w{bar baz}.sort, dep.tags.sort end def test_preserves_symbol_tags - dep = Requirement.new(:build) + dep = Requirement.new([:build]) assert_equal [:build], dep.tags end def test_accepts_symbol_and_string_tags dep = Requirement.new([:build, "bar"]) assert_equal [:build, "bar"], dep.tags - dep = Requirement.new(:build, "bar") - assert_equal [:build, "bar"], dep.tags end def test_dsl_fatal |
