diff options
| author | Markus Reiter | 2016-11-13 22:00:15 +0100 |
|---|---|---|
| committer | Markus Reiter | 2016-11-16 23:52:38 +0100 |
| commit | 7457af2b231528e1287281f6cfe651600d5f3f5d (patch) | |
| tree | 0da872ad2906fad53f176e05056181e0c6ccceaa /Library/Homebrew/test/language_python_test.rb | |
| parent | 9dc1f8f3cd405bc299eb688075687f951afd3e13 (diff) | |
| download | brew-7457af2b231528e1287281f6cfe651600d5f3f5d.tar.bz2 | |
Move test files back directly to `test/`.
Diffstat (limited to 'Library/Homebrew/test/language_python_test.rb')
| -rw-r--r-- | Library/Homebrew/test/language_python_test.rb | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/Library/Homebrew/test/language_python_test.rb b/Library/Homebrew/test/language_python_test.rb new file mode 100644 index 000000000..d1e3867f7 --- /dev/null +++ b/Library/Homebrew/test/language_python_test.rb @@ -0,0 +1,99 @@ +require "testing_env" +require "language/python" +require "resource" + +class LanguagePythonTests < Homebrew::TestCase + def setup + @dir = Pathname.new(mktmpdir) + resource = stub("resource", stage: true) + formula_bin = @dir/"formula_bin" + @formula = mock("formula") do + stubs(:resource).returns(resource) + stubs(:bin).returns(formula_bin) + 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_pip_install_and_link_links_scripts + bin = @dir/"bin" + bin.mkpath + dest = @formula.bin + + refute_predicate bin/"kilroy", :exist? + refute_predicate dest/"kilroy", :exist? + + FileUtils.touch bin/"irrelevant" + bin_before = Dir[bin/"*"] + FileUtils.touch bin/"kilroy" + bin_after = Dir[bin/"*"] + @venv.expects(:pip_install).with("foo") + Dir.expects(:[]).twice.returns(bin_before, bin_after) + + @venv.pip_install_and_link "foo" + + assert_predicate bin/"kilroy", :exist? + assert_predicate dest/"kilroy", :exist? + assert_predicate dest/"kilroy", :symlink? + assert_equal((bin/"kilroy").realpath, (dest/"kilroy").realpath) + refute_predicate dest/"irrelevant", :exist? + end +end |
