From 134d0bb4862f39a5d3415cc14c11990624f61f5a Mon Sep 17 00:00:00 2001 From: "Tim D. Smith" Date: Fri, 22 Jul 2016 23:03:13 -0700 Subject: [PATCH] Test Language::Python::Virtualenv --- Library/Homebrew/test/test_language_python.rb | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Library/Homebrew/test/test_language_python.rb diff --git a/Library/Homebrew/test/test_language_python.rb b/Library/Homebrew/test/test_language_python.rb new file mode 100644 index 0000000000..5e91c73b02 --- /dev/null +++ b/Library/Homebrew/test/test_language_python.rb @@ -0,0 +1,88 @@ +require "testing_env" +require "language/python" +require "resource" + +class LanguagePythonTests < Homebrew::TestCase + def setup + @dir = Pathname.new(mktmpdir) + resource = stub("resource", :stage => true) + @formula = mock("formula") do + stubs(:resource).returns(resource) + end + @venv = Language::Python::Virtualenv::Virtualenv.new(@formula, @dir, "python") + end + + def teardown + FileUtils.rm_rf @dir + end + + def test_virtualenv_creation + @formula.expects(:resource).with("homebrew-virtualenv").returns( + mock("resource", :stage => true) + ) + @venv.create + end + + # or at least doesn't crash the second time + def test_virtualenv_creation_is_idempotent + @formula.expects(:resource).with("homebrew-virtualenv").returns( + mock("resource", :stage => true) + ) + @venv.create + FileUtils.mkdir_p @dir/"bin" + FileUtils.touch @dir/"bin/python" + @venv.create + FileUtils.rm @dir/"bin/python" + end + + def test_pip_install_accepts_string + @formula.expects(:system).returns(true).with do |*params| + params.first == @dir/"bin/pip" && params.last == "foo" + end + @venv.pip_install "foo" + end + + def test_pip_install_accepts_multiline_string + @formula.expects(:system).returns(true).with do |*params| + params.first == @dir/"bin/pip" && params[-2..-1] == ["foo", "bar"] + end + @venv.pip_install <<-EOS.undent + foo + bar + EOS + end + + def test_pip_install_accepts_array + @formula.expects(:system).returns(true).with do |*params| + params.first == @dir/"bin/pip" && params.last == "foo" + end + @formula.expects(:system).returns(true).with do |*params| + params.first == @dir/"bin/pip" && params.last == "bar" + end + @venv.pip_install ["foo", "bar"] + end + + def test_pip_install_accepts_resource + res = Resource.new "test" + res.expects(:stage).yields(nil) + @formula.expects(:system).returns(true).with do |*params| + params.first == @dir/"bin/pip" && params.last == Pathname.pwd + end + @venv.pip_install res + end + + def test_link_scripts_links_scripts + bin = (@dir/"bin") + dest = (@dir/"dest") + bin.mkpath + refute((bin/"kilroy").exist?) + refute((dest/"kilroy").exist?) + FileUtils.touch bin/"irrelevant" + @venv.link_scripts(dest) { FileUtils.touch bin/"kilroy" } + assert((bin/"kilroy").exist?) + assert((dest/"kilroy").exist?) + assert((dest/"kilroy").symlink?) + assert_equal((bin/"kilroy").realpath, (dest/"kilroy").realpath) + refute((dest/"irrelevant").exist?) + end +end