From a4d4da64aab707e2f39fcc32fec6418cc39e8010 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Thu, 27 Jul 2017 04:41:49 +0530 Subject: [PATCH 1/7] Added tests for os_prefix_ci --- Library/Homebrew/test/utils/analytics_spec.rb | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Library/Homebrew/test/utils/analytics_spec.rb diff --git a/Library/Homebrew/test/utils/analytics_spec.rb b/Library/Homebrew/test/utils/analytics_spec.rb new file mode 100644 index 0000000000..cee09e2861 --- /dev/null +++ b/Library/Homebrew/test/utils/analytics_spec.rb @@ -0,0 +1,34 @@ +require "utils/analytics" + +describe Utils::Analytics do + describe "::os_prefix_ci" do + context "when anonymous_os_prefix_ci is not set" do + it "returns OS_VERSION and prefix when HOMEBREW_PREFIX is not /usr/local" do + expect(described_class.os_prefix_ci).to include("#{OS_VERSION}, non-/usr/local") + end + + it "includes CI when ENV['CI'] is set" do + allow(ENV).to receive(:[]).with("CI").and_return("true") + expect(described_class.os_prefix_ci).to include("CI") + end + + it "does not include prefix when HOMEBREW_PREFIX is usr/local" do + allow(HOMEBREW_PREFIX).to receive(:to_s).and_return("/usr/local") + expect(described_class.os_prefix_ci).not_to include("non-/usr/local") + end + end + + context "when anonymous_os_prefix_ci is set" do + let(:anonymous_os_prefix_ci) { "macOS 10.11.6, non-/usr/local, CI" } + + it "returns anonymous_os_prefix_ci" do + described_class.instance_variable_set(:@anonymous_os_prefix_ci, anonymous_os_prefix_ci) + expect(described_class.os_prefix_ci).to eq(anonymous_os_prefix_ci) + end + end + end + + describe "::" do + + end +end \ No newline at end of file From 2660f5ae3ea5e0ce466e6f9b3b736a12ad3a341a Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Thu, 27 Jul 2017 17:47:28 +0530 Subject: [PATCH 2/7] Added tests for report and report_event --- Library/Homebrew/test/utils/analytics_spec.rb | 50 +++++++++++++++++-- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/test/utils/analytics_spec.rb b/Library/Homebrew/test/utils/analytics_spec.rb index cee09e2861..96a9a4f7ff 100644 --- a/Library/Homebrew/test/utils/analytics_spec.rb +++ b/Library/Homebrew/test/utils/analytics_spec.rb @@ -1,19 +1,27 @@ require "utils/analytics" +require "formula_installer" describe Utils::Analytics do describe "::os_prefix_ci" do context "when anonymous_os_prefix_ci is not set" do + before(:each) do + if described_class.instance_variable_defined?(:@anonymous_os_prefix_ci) + described_class.send(:remove_instance_variable, :@anonymous_os_prefix_ci) + end + end + it "returns OS_VERSION and prefix when HOMEBREW_PREFIX is not /usr/local" do + stub_const("HOMEBREW_PREFIX", "blah") expect(described_class.os_prefix_ci).to include("#{OS_VERSION}, non-/usr/local") end it "includes CI when ENV['CI'] is set" do - allow(ENV).to receive(:[]).with("CI").and_return("true") + ENV["CI"] = "true" expect(described_class.os_prefix_ci).to include("CI") end it "does not include prefix when HOMEBREW_PREFIX is usr/local" do - allow(HOMEBREW_PREFIX).to receive(:to_s).and_return("/usr/local") + stub_const("HOMEBREW_PREFIX", "/usr/local") expect(described_class.os_prefix_ci).not_to include("non-/usr/local") end end @@ -28,7 +36,39 @@ describe Utils::Analytics do end end - describe "::" do - + describe "::report_event" do + let(:f) { formula { url "foo-1.0" } } + let(:options) { FormulaInstaller.new(f).display_options(f) } + let(:action) { "#{f.full_name} #{options}".strip } + + context "when ENV vars is set" do + it "returns nil when HOMEBREW_NO_ANALYTICS is true" do + ENV["HOMEBREW_NO_ANALYTICS"] = "true" + expect(described_class.report_event("install", action)).to be_nil + end + + it "returns nil when HOMEBREW_NO_ANALYTICS_THIS_RUN is true" do + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "true" + expect(described_class.report_event("install", action)).to be_nil + end + + it "returns nil when HOMEBREW_ANALYTICS_DEBUG is true" do + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = nil + ENV["HOMEBREW_NO_ANALYTICS"] = nil + ENV["HOMEBREW_ANALYTICS_DEBUG"] = "true" + expect(described_class.report_event("install", action)).to be_nil + end + end + + context "when ENV vars are nil" do + before do + ENV["HOMEBREW_NO_ANALYTICS"] = nil + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = nil + end + + it "returns nil when HOMEBREW_ANALYTICS_DEBUG is not set" do + expect(described_class.report_event("install", action)).to be_an_instance_of(Thread) + end + end end -end \ No newline at end of file +end From a4d8d7ba576e1418a18eb605b8eddc6c10447608 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Tue, 15 Aug 2017 21:05:52 +0530 Subject: [PATCH 3/7] Added tests for report_build_error --- Library/Homebrew/test/utils/analytics_spec.rb | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/test/utils/analytics_spec.rb b/Library/Homebrew/test/utils/analytics_spec.rb index 96a9a4f7ff..eb675b370d 100644 --- a/Library/Homebrew/test/utils/analytics_spec.rb +++ b/Library/Homebrew/test/utils/analytics_spec.rb @@ -25,15 +25,6 @@ describe Utils::Analytics do expect(described_class.os_prefix_ci).not_to include("non-/usr/local") end end - - context "when anonymous_os_prefix_ci is set" do - let(:anonymous_os_prefix_ci) { "macOS 10.11.6, non-/usr/local, CI" } - - it "returns anonymous_os_prefix_ci" do - described_class.instance_variable_set(:@anonymous_os_prefix_ci, anonymous_os_prefix_ci) - expect(described_class.os_prefix_ci).to eq(anonymous_os_prefix_ci) - end - end end describe "::report_event" do @@ -66,9 +57,45 @@ describe Utils::Analytics do ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = nil end - it "returns nil when HOMEBREW_ANALYTICS_DEBUG is not set" do + it "returns waiting thread when HOMEBREW_ANALYTICS_DEBUG is not set" do expect(described_class.report_event("install", action)).to be_an_instance_of(Thread) end end end + + describe "::report_build_error" do + context "when tap is installed" do + let(:err) { BuildError.new(f, "badprg", %w[arg1 arg2], {}) } + let(:f) { formula { url "foo-1.0" } } + + it "reports event if BuildError raised for a formula with a public remote repository" do + allow_any_instance_of(Tap).to receive(:custom_remote?).and_return(false) + expect(described_class).to respond_to(:report_event) + described_class.report_build_error(err) + end + + it "does not report event if BuildError raised for a formula with a private remote repository" do + expect(described_class.report_build_error(err)).to be_nil + end + end + + context "when formula does not have a tap" do + let(:err) { BuildError.new(f, "badprg", %w[arg1 arg2], {}) } + let(:f) { double(Formula, name: "foo", path: "blah", tap: nil) } + + it "does not report event if BuildError is raised" do + expect(described_class.report_build_error(err)).to be_nil + end + end + + context "when tap for a formula is not installed" do + let(:err) { BuildError.new(f, "badprg", %w[arg1 arg2], {}) } + let(:f) { double(Formula, name: "foo", path: "blah", tap: CoreTap.instance) } + + it "does not report event if BuildError is raised" do + allow_any_instance_of(Pathname).to receive(:directory?).and_return(false) + expect(described_class.report_build_error(err)).to be_nil + end + end + end end From 59f3c661a31d2d0d7f649fbe75daae171b2cfd23 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Sun, 20 Aug 2017 22:04:09 +0530 Subject: [PATCH 4/7] Used ENV.delete to remove set ENV vars --- Library/Homebrew/test/utils/analytics_spec.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/test/utils/analytics_spec.rb b/Library/Homebrew/test/utils/analytics_spec.rb index eb675b370d..228c352b4c 100644 --- a/Library/Homebrew/test/utils/analytics_spec.rb +++ b/Library/Homebrew/test/utils/analytics_spec.rb @@ -44,8 +44,8 @@ describe Utils::Analytics do end it "returns nil when HOMEBREW_ANALYTICS_DEBUG is true" do - ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = nil - ENV["HOMEBREW_NO_ANALYTICS"] = nil + ENV.delete("HOMEBREW_NO_ANALYTICS_THIS_RUN") + ENV.delete("HOMEBREW_NO_ANALYTICS") ENV["HOMEBREW_ANALYTICS_DEBUG"] = "true" expect(described_class.report_event("install", action)).to be_nil end @@ -53,8 +53,8 @@ describe Utils::Analytics do context "when ENV vars are nil" do before do - ENV["HOMEBREW_NO_ANALYTICS"] = nil - ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = nil + ENV.delete("HOMEBREW_NO_ANALYTICS_THIS_RUN") + ENV.delete("HOMEBREW_NO_ANALYTICS") end it "returns waiting thread when HOMEBREW_ANALYTICS_DEBUG is not set" do From 413d35b82fc66a6970d933a845a242b795340e44 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Thu, 24 Aug 2017 01:44:13 +0530 Subject: [PATCH 5/7] Added clear_anonymous_os_prefix_ci_cache --- Library/Homebrew/utils/analytics.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Library/Homebrew/utils/analytics.rb b/Library/Homebrew/utils/analytics.rb index a89995ba93..2e59b8f009 100644 --- a/Library/Homebrew/utils/analytics.rb +++ b/Library/Homebrew/utils/analytics.rb @@ -3,6 +3,10 @@ require "erb" module Utils module Analytics class << self + def clear_anonymous_os_prefix_ci_cache + remove_instance_variable(:@anonymous_os_prefix_ci) if instance_variable_defined?(:@anonymous_os_prefix_ci) + end + def os_prefix_ci @anonymous_os_prefix_ci ||= begin os = OS_VERSION From db28126b4a31c3d8ff910283fc50ab4de1f63db2 Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Thu, 24 Aug 2017 01:44:48 +0530 Subject: [PATCH 6/7] Used clear_anonymous_os_prefix_ci_cache to remove @anonymous_os_prefix_ci --- Library/Homebrew/test/utils/analytics_spec.rb | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Library/Homebrew/test/utils/analytics_spec.rb b/Library/Homebrew/test/utils/analytics_spec.rb index 228c352b4c..bb6cda0b12 100644 --- a/Library/Homebrew/test/utils/analytics_spec.rb +++ b/Library/Homebrew/test/utils/analytics_spec.rb @@ -5,9 +5,7 @@ describe Utils::Analytics do describe "::os_prefix_ci" do context "when anonymous_os_prefix_ci is not set" do before(:each) do - if described_class.instance_variable_defined?(:@anonymous_os_prefix_ci) - described_class.send(:remove_instance_variable, :@anonymous_os_prefix_ci) - end + described_class.clear_anonymous_os_prefix_ci_cache end it "returns OS_VERSION and prefix when HOMEBREW_PREFIX is not /usr/local" do @@ -20,7 +18,7 @@ describe Utils::Analytics do expect(described_class.os_prefix_ci).to include("CI") end - it "does not include prefix when HOMEBREW_PREFIX is usr/local" do + it "does not include prefix when HOMEBREW_PREFIX is /usr/local" do stub_const("HOMEBREW_PREFIX", "/usr/local") expect(described_class.os_prefix_ci).not_to include("non-/usr/local") end @@ -50,17 +48,6 @@ describe Utils::Analytics do expect(described_class.report_event("install", action)).to be_nil end end - - context "when ENV vars are nil" do - before do - ENV.delete("HOMEBREW_NO_ANALYTICS_THIS_RUN") - ENV.delete("HOMEBREW_NO_ANALYTICS") - end - - it "returns waiting thread when HOMEBREW_ANALYTICS_DEBUG is not set" do - expect(described_class.report_event("install", action)).to be_an_instance_of(Thread) - end - end end describe "::report_build_error" do From 1dd7e9d95b55bbf352dfe7a9dd1e509fc1bc557d Mon Sep 17 00:00:00 2001 From: mansimarkaur Date: Tue, 29 Aug 2017 16:36:46 +0530 Subject: [PATCH 7/7] Modified clear_anonymous_os_prefix_ci_cache --- Library/Homebrew/utils/analytics.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/utils/analytics.rb b/Library/Homebrew/utils/analytics.rb index 2e59b8f009..9766c14db3 100644 --- a/Library/Homebrew/utils/analytics.rb +++ b/Library/Homebrew/utils/analytics.rb @@ -4,7 +4,8 @@ module Utils module Analytics class << self def clear_anonymous_os_prefix_ci_cache - remove_instance_variable(:@anonymous_os_prefix_ci) if instance_variable_defined?(:@anonymous_os_prefix_ci) + return unless instance_variable_defined?(:@anonymous_os_prefix_ci) + remove_instance_variable(:@anonymous_os_prefix_ci) end def os_prefix_ci