| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "testing_env" | 
					
						
							|  |  |  | require "dependency_collector" | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class DependencyCollectorTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   def find_dependency(name) | 
					
						
							| 
									
										
										
										
											2014-06-10 19:55:10 -05:00
										 |  |  |     @d.deps.find { |dep| dep.name == name } | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-02-13 10:26:15 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   def find_requirement(klass) | 
					
						
							| 
									
										
										
										
											2016-09-11 17:43:09 +01:00
										 |  |  |     @d.requirements.find { |req| req.is_a? klass } | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup | 
					
						
							| 
									
										
										
										
											2014-06-10 19:55:10 -05:00
										 |  |  |     @d = DependencyCollector.new | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-09 12:38:19 -05:00
										 |  |  |   def teardown | 
					
						
							| 
									
										
										
										
											2014-07-02 15:10:07 -05:00
										 |  |  |     DependencyCollector.clear_cache | 
					
						
							| 
									
										
										
										
											2014-03-09 12:38:19 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   def test_dependency_creation | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     @d.add "foo" => :build | 
					
						
							|  |  |  |     @d.add "bar" => ["--universal", :optional] | 
					
						
							| 
									
										
										
										
											2014-06-10 19:55:10 -05:00
										 |  |  |     assert_instance_of Dependency, find_dependency("foo") | 
					
						
							|  |  |  |     assert_equal 2, find_dependency("bar").tags.length | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-27 16:53:42 -06:00
										 |  |  |   def test_add_returns_created_dep | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     ret = @d.add "foo" | 
					
						
							|  |  |  |     assert_equal Dependency.new("foo"), ret | 
					
						
							| 
									
										
										
										
											2013-01-27 16:53:42 -06:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   def test_dependency_tags | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     assert_predicate Dependency.new("foo", [:build]), :build? | 
					
						
							|  |  |  |     assert_predicate Dependency.new("foo", [:build, :optional]), :optional? | 
					
						
							|  |  |  |     assert_includes Dependency.new("foo", ["universal"]).options, "--universal" | 
					
						
							|  |  |  |     assert_empty Dependency.new("foo").tags | 
					
						
							| 
									
										
										
										
											2013-01-13 20:05:09 -06:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   def test_requirement_creation | 
					
						
							|  |  |  |     @d.add :x11 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_instance_of X11Requirement, find_requirement(X11Requirement) | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_no_duplicate_requirements | 
					
						
							|  |  |  |     2.times { @d.add :x11 } | 
					
						
							| 
									
										
										
										
											2014-07-03 14:50:57 -05:00
										 |  |  |     assert_equal 1, @d.requirements.count | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_requirement_tags | 
					
						
							| 
									
										
										
										
											2016-09-17 15:32:44 +01:00
										 |  |  |     @d.add x11: "2.5.1" | 
					
						
							|  |  |  |     @d.add xcode: :build | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_empty find_requirement(X11Requirement).tags | 
					
						
							|  |  |  |     assert_predicate find_requirement(XcodeRequirement), :build? | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x11_no_tag | 
					
						
							|  |  |  |     @d.add :x11 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_empty find_requirement(X11Requirement).tags | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x11_min_version | 
					
						
							| 
									
										
										
										
											2016-09-17 15:32:44 +01:00
										 |  |  |     @d.add x11: "2.5.1" | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x11_tag | 
					
						
							| 
									
										
										
										
											2016-09-17 15:32:44 +01:00
										 |  |  |     @d.add x11: :optional | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_predicate find_requirement(X11Requirement), :optional? | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x11_min_version_and_tag | 
					
						
							| 
									
										
										
										
											2016-09-17 15:32:44 +01:00
										 |  |  |     @d.add x11: ["2.5.1", :optional] | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     dep = find_requirement(X11Requirement) | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     assert_equal "2.5.1", dep.min_version.to_s | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate dep, :optional? | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-02-10 19:25:22 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-22 17:36:57 -04:00
										 |  |  |   def test_ant_dep | 
					
						
							| 
									
										
										
										
											2016-09-22 22:10:32 -04:00
										 |  |  |     @d.add ant: :build | 
					
						
							| 
									
										
										
										
											2016-09-22 17:36:57 -04:00
										 |  |  |     assert_equal find_dependency("ant"), Dependency.new("ant", [:build]) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-06 16:08:49 -05:00
										 |  |  |   def test_raises_typeerror_for_unknown_classes | 
					
						
							|  |  |  |     assert_raises(TypeError) { @d.add(Class.new) } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_raises_typeerror_for_unknown_types | 
					
						
							|  |  |  |     assert_raises(TypeError) { @d.add(Object.new) } | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-09-13 09:51:23 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_does_not_mutate_dependency_spec | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     spec = { "foo" => :optional } | 
					
						
							| 
									
										
										
										
											2013-09-13 09:51:23 -05:00
										 |  |  |     copy = spec.dup | 
					
						
							|  |  |  |     @d.add(spec) | 
					
						
							|  |  |  |     assert_equal copy, spec | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_resource_dep_git_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							| 
									
										
										
										
											2014-06-12 17:58:12 -05:00
										 |  |  |     resource.url("git://example.com/foo/bar.git") | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  |     assert_instance_of GitRequirement, @d.add(resource) | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-31 19:50:11 -04:00
										 |  |  |   def test_resource_dep_7z_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							|  |  |  |     resource.url("http://example.com/foo.7z") | 
					
						
							|  |  |  |     assert_equal Dependency.new("p7zip", [:build]), @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |   def test_resource_dep_gzip_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							| 
									
										
										
										
											2014-06-12 17:58:12 -05:00
										 |  |  |     resource.url("http://example.com/foo.tar.gz") | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |     assert_nil @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-31 19:50:11 -04:00
										 |  |  |   def test_resource_dep_lz_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							|  |  |  |     resource.url("http://example.com/foo.lz") | 
					
						
							|  |  |  |     assert_equal Dependency.new("lzip", [:build]), @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_resource_dep_lha_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							|  |  |  |     resource.url("http://example.com/foo.lha") | 
					
						
							|  |  |  |     assert_equal Dependency.new("lha", [:build]), @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_resource_dep_lzh_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							|  |  |  |     resource.url("http://example.com/foo.lzh") | 
					
						
							|  |  |  |     assert_equal Dependency.new("lha", [:build]), @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_resource_dep_rar_url | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							|  |  |  |     resource.url("http://example.com/foo.rar") | 
					
						
							|  |  |  |     assert_equal Dependency.new("unrar", [:build]), @d.add(resource) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |   def test_resource_dep_raises_for_unknown_classes | 
					
						
							|  |  |  |     resource = Resource.new | 
					
						
							| 
									
										
										
										
											2014-07-15 13:42:03 -05:00
										 |  |  |     resource.download_strategy = Class.new | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |     assert_raises(TypeError) { @d.add(resource) } | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-10-24 18:17:43 -05:00
										 |  |  | end |