From 7cd5d143c38ec6916794b3747442598727882b40 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Tue, 13 Jun 2017 02:23:17 +0530 Subject: [PATCH 01/10] Added tests for language/node.rb --- Library/Homebrew/test/language/node_spec.rb | 57 +++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Library/Homebrew/test/language/node_spec.rb diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb new file mode 100644 index 0000000000..197d7fd7bd --- /dev/null +++ b/Library/Homebrew/test/language/node_spec.rb @@ -0,0 +1,57 @@ +require "language/node" + +describe Language::Node do + specify "#npm_cache_config" do + shutup do + ret_val = described_class.npm_cache_config + expect(ret_val).to eq("cache=#{HOMEBREW_CACHE}/npm_cache\n") + end + end + + describe "#pack_for_installation" do + it "raises error with non zero exitstatus" do + shutup do + expect{described_class.pack_for_installation}.to raise_error + end + end + + it "does not raise error with a zero exitstatus" do + shutup do + allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) + expect{described_class.pack_for_installation}.not_to raise_error + end + end + end + + describe "#setup_npm_environment" do + it "npmrc exists" do + shutup do + expect(described_class.setup_npm_environment).to be_nil + end + end + + it "npmrc does not exist" do + shutup do + allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) + described_class.setup_npm_environment + end + end + end + + specify "#std_npm_install_args" do + shutup do + npm_install_arg = "libexec" + allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) + resp = described_class.std_npm_install_args npm_install_arg + expect(resp).to eq(["--verbose", "--global", "--prefix=#{npm_install_arg}", "#{Dir.pwd}/"]) + end + end + + specify "#local_npm_install_args" do + shutup do + resp = described_class.local_npm_install_args + expect(resp).to eq(["--verbose"]) + end + end + +end \ No newline at end of file From cf5db0e0df38aee9e26099f6e4e8331d1f9352d5 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Tue, 13 Jun 2017 02:29:16 +0530 Subject: [PATCH 02/10] Fixed style errors --- Library/Homebrew/test/language/node_spec.rb | 33 ++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 197d7fd7bd..d8d476aebd 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -2,25 +2,25 @@ require "language/node" describe Language::Node do specify "#npm_cache_config" do - shutup do - ret_val = described_class.npm_cache_config - expect(ret_val).to eq("cache=#{HOMEBREW_CACHE}/npm_cache\n") - end + shutup do + ret_val = described_class.npm_cache_config + expect(ret_val).to eq("cache=#{HOMEBREW_CACHE}/npm_cache\n") + end end describe "#pack_for_installation" do - it "raises error with non zero exitstatus" do + it "raises error with non zero exitstatus" do shutup do - expect{described_class.pack_for_installation}.to raise_error - end - end + expect { described_class.pack_for_installation }.to raise_error + end + end - it "does not raise error with a zero exitstatus" do - shutup do - allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) - expect{described_class.pack_for_installation}.not_to raise_error - end - end + it "does not raise error with a zero exitstatus" do + shutup do + allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) + expect { described_class.pack_for_installation }.not_to raise_error + end + end end describe "#setup_npm_environment" do @@ -33,7 +33,7 @@ describe Language::Node do it "npmrc does not exist" do shutup do allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) - described_class.setup_npm_environment + described_class.setup_npm_environment end end end @@ -53,5 +53,4 @@ describe Language::Node do expect(resp).to eq(["--verbose"]) end end - -end \ No newline at end of file +end From 2cb678a6d52c53ed7dd017419ef9c2ab0114c3ce Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Thu, 15 Jun 2017 02:40:57 +0530 Subject: [PATCH 03/10] Improved test quality --- Library/Homebrew/test/language/node_spec.rb | 58 +++++++-------------- 1 file changed, 19 insertions(+), 39 deletions(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index d8d476aebd..df29a1db9e 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -1,56 +1,36 @@ require "language/node" describe Language::Node do - specify "#npm_cache_config" do - shutup do - ret_val = described_class.npm_cache_config - expect(ret_val).to eq("cache=#{HOMEBREW_CACHE}/npm_cache\n") + describe "#setup_npm_environment" do + it "does nothing when npmrc exists" do + expect(subject.setup_npm_environment).to be_nil + end + + it "calls prepend_path when npmrc does not exist" do + allow(Formula).to receive(:[]).with("node").and_return(formula { url "foo-1.0" }) + allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) + allow(ENV).to receive(:prepend_path).with("PATH", Formula["node"].opt_libexec/"bin").and_return("prepend_path called") + expect(subject.setup_npm_environment).to eq("prepend_path called") end end - describe "#pack_for_installation" do + describe "#std_npm_install_args" do + npm_install_arg = "libexec" + it "raises error with non zero exitstatus" do - shutup do - expect { described_class.pack_for_installation }.to raise_error - end + expect { subject.std_npm_install_args(npm_install_arg) }.to raise_error("npm failed to pack #{Dir.pwd}") end it "does not raise error with a zero exitstatus" do - shutup do - allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) - expect { described_class.pack_for_installation }.not_to raise_error - end - end - end - - describe "#setup_npm_environment" do - it "npmrc exists" do - shutup do - expect(described_class.setup_npm_environment).to be_nil - end - end - - it "npmrc does not exist" do - shutup do - allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) - described_class.setup_npm_environment - end - end - end - - specify "#std_npm_install_args" do - shutup do - npm_install_arg = "libexec" + allow(Utils).to receive(:popen_read).with("npm pack").and_return("pack") allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) - resp = described_class.std_npm_install_args npm_install_arg - expect(resp).to eq(["--verbose", "--global", "--prefix=#{npm_install_arg}", "#{Dir.pwd}/"]) + resp = subject.std_npm_install_args(npm_install_arg) + expect(resp).to include("--prefix=#{npm_install_arg}", "#{Dir.pwd}/pack") end end specify "#local_npm_install_args" do - shutup do - resp = described_class.local_npm_install_args - expect(resp).to eq(["--verbose"]) - end + resp = subject.local_npm_install_args + expect(resp).to include("--verbose") end end From 837ffa209c37966c95b2a8aa98c43df20e160075 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Mon, 19 Jun 2017 01:18:38 +0530 Subject: [PATCH 04/10] stubbed the node formula --- Library/Homebrew/test/language/node_spec.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index df29a1db9e..4f2a0df09c 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -7,10 +7,14 @@ describe Language::Node do end it "calls prepend_path when npmrc does not exist" do - allow(Formula).to receive(:[]).with("node").and_return(formula { url "foo-1.0" }) + node = formula "node" do + url "node-test" + end + stub_formula_loader(node) allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) - allow(ENV).to receive(:prepend_path).with("PATH", Formula["node"].opt_libexec/"bin").and_return("prepend_path called") - expect(subject.setup_npm_environment).to eq("prepend_path called") + + subject.setup_npm_environment + expect(ENV["PATH"]).to include(Formula["node"].opt_libexec/"bin") end end From f8f239686d507daa348261ce75e6e73263dfebb1 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Mon, 19 Jun 2017 01:26:52 +0530 Subject: [PATCH 05/10] Added rescue FormulaUnavailableError to setup_npm_environment --- Library/Homebrew/language/node.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/language/node.rb b/Library/Homebrew/language/node.rb index 47431e8e5f..01d41041be 100644 --- a/Library/Homebrew/language/node.rb +++ b/Library/Homebrew/language/node.rb @@ -25,7 +25,11 @@ module Language npmrc.write npm_cache_config # explicitly use our npm and node-gyp executables instead of the user # managed ones in HOMEBREW_PREFIX/lib/node_modules which might be broken - ENV.prepend_path "PATH", Formula["node"].opt_libexec/"bin" + begin + ENV.prepend_path "PATH", Formula["node"].opt_libexec/"bin" + rescue FormulaUnavailableError + nil + end end def self.std_npm_install_args(libexec) From f225eaf4d9aad88fd0104192e2f0f6f5b9bbd8d3 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Mon, 19 Jun 2017 01:28:43 +0530 Subject: [PATCH 06/10] Added test for non existent node formula and existent npmrc --- Library/Homebrew/test/language/node_spec.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 4f2a0df09c..68e8326f5b 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -6,7 +6,7 @@ describe Language::Node do expect(subject.setup_npm_environment).to be_nil end - it "calls prepend_path when npmrc does not exist" do + it "calls prepend_path when node formula exists and npmrc does not exist" do node = formula "node" do url "node-test" end @@ -16,6 +16,11 @@ describe Language::Node do subject.setup_npm_environment expect(ENV["PATH"]).to include(Formula["node"].opt_libexec/"bin") end + + it "does not call prepend_path when node formula does not exist but npmrc exists" do + allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) + expect(subject.setup_npm_environment).to eq(nil) + end end describe "#std_npm_install_args" do From 69840e2a2faa839ad8d18faee1ebb3cb00e91446 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Tue, 20 Jun 2017 05:36:23 +0530 Subject: [PATCH 07/10] Avoided the prepend_path not existing method error --- Library/Homebrew/test/language/node_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 68e8326f5b..10e89208c6 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -12,9 +12,8 @@ describe Language::Node do end stub_formula_loader(node) allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) - + expect(ENV).to receive(:prepend_path) subject.setup_npm_environment - expect(ENV["PATH"]).to include(Formula["node"].opt_libexec/"bin") end it "does not call prepend_path when node formula does not exist but npmrc exists" do From 5fed1f5cbeca11d54fd69070c2e628e165e8d80d Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Wed, 21 Jun 2017 03:03:52 +0530 Subject: [PATCH 08/10] Attempt to fix tests --- Library/Homebrew/test/language/node_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 10e89208c6..6021dd47da 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -31,7 +31,7 @@ describe Language::Node do it "does not raise error with a zero exitstatus" do allow(Utils).to receive(:popen_read).with("npm pack").and_return("pack") - allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) + allow($?).to receive(:exitstatus).and_return(0) resp = subject.std_npm_install_args(npm_install_arg) expect(resp).to include("--prefix=#{npm_install_arg}", "#{Dir.pwd}/pack") end From bfd19f91708abf0564a482377c5107b30b934437 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Fri, 23 Jun 2017 03:27:21 +0530 Subject: [PATCH 09/10] Stubbed nil:NilClass --- Library/Homebrew/test/language/node_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 6021dd47da..4675bb60b6 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -31,7 +31,8 @@ describe Language::Node do it "does not raise error with a zero exitstatus" do allow(Utils).to receive(:popen_read).with("npm pack").and_return("pack") - allow($?).to receive(:exitstatus).and_return(0) + allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0) + allow_any_instance_of(nil::NilClass).to receive(:exitstatus).and_return(0) resp = subject.std_npm_install_args(npm_install_arg) expect(resp).to include("--prefix=#{npm_install_arg}", "#{Dir.pwd}/pack") end From 67c48360fa61b5f9db36489b84d881ad517e07e6 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Sat, 24 Jun 2017 02:34:10 +0530 Subject: [PATCH 10/10] Improved code quality --- Library/Homebrew/test/language/node_spec.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/test/language/node_spec.rb b/Library/Homebrew/test/language/node_spec.rb index 4675bb60b6..b2114bc4fd 100644 --- a/Library/Homebrew/test/language/node_spec.rb +++ b/Library/Homebrew/test/language/node_spec.rb @@ -18,7 +18,7 @@ describe Language::Node do it "does not call prepend_path when node formula does not exist but npmrc exists" do allow_any_instance_of(Pathname).to receive(:exist?).and_return(false) - expect(subject.setup_npm_environment).to eq(nil) + expect(subject.setup_npm_environment).to be_nil end end @@ -26,7 +26,8 @@ describe Language::Node do npm_install_arg = "libexec" it "raises error with non zero exitstatus" do - expect { subject.std_npm_install_args(npm_install_arg) }.to raise_error("npm failed to pack #{Dir.pwd}") + expect { subject.std_npm_install_args(npm_install_arg) }.to \ + raise_error("npm failed to pack #{Dir.pwd}") end it "does not raise error with a zero exitstatus" do