| 
									
										
										
										
											2021-01-12 16:27:25 -05:00
										 |  |  | # typed: false | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "settings" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 11:16:09 -05:00
										 |  |  | describe Homebrew::Settings do | 
					
						
							| 
									
										
										
										
											2021-01-12 16:27:25 -05:00
										 |  |  |   before do | 
					
						
							|  |  |  |     HOMEBREW_REPOSITORY.cd do | 
					
						
							|  |  |  |       system "git", "init" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup_setting | 
					
						
							|  |  |  |     HOMEBREW_REPOSITORY.cd do | 
					
						
							|  |  |  |       system "git", "config", "--replace-all", "homebrew.foo", "true" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe ".read" do | 
					
						
							|  |  |  |     it "returns the correct value for a setting" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       expect(described_class.read("foo")).to eq "true" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns the correct value for a setting as a symbol" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       expect(described_class.read(:foo)).to eq "true" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns nil when setting is not set" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       expect(described_class.read("bar")).to be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "runs on a repo without a configuration file" do | 
					
						
							|  |  |  |       expect { described_class.read("foo", repo: HOMEBREW_REPOSITORY/"bar") }.not_to raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe ".write" do | 
					
						
							|  |  |  |     it "writes over an existing value" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       described_class.write :foo, false | 
					
						
							|  |  |  |       expect(described_class.read("foo")).to eq "false" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "writes a new value" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       described_class.write :bar, "abcde" | 
					
						
							|  |  |  |       expect(described_class.read("bar")).to eq "abcde" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns if the repo doesn't have a configuration file" do | 
					
						
							|  |  |  |       expect { described_class.write("foo", repo: HOMEBREW_REPOSITORY/"bar") }.not_to raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe ".delete" do | 
					
						
							|  |  |  |     it "deletes an existing setting" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       described_class.delete(:foo) | 
					
						
							|  |  |  |       expect(described_class.read("foo")).to be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "deletes a non-existing setting" do | 
					
						
							|  |  |  |       setup_setting | 
					
						
							|  |  |  |       expect { described_class.delete(:bar) }.not_to raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns if the repo doesn't have a configuration file" do | 
					
						
							|  |  |  |       expect { described_class.delete("foo", repo: HOMEBREW_REPOSITORY/"bar") }.not_to raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |