diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2020-04-23 14:11:10 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2020-04-23 14:11:10 -0700 |
commit | 165685fdcbd4fbe8138d37d1285b633e3958cf09 (patch) | |
tree | c95140471c1c8f816896d71957f5ac362b6d59f3 /spec/unit/provider | |
parent | 16b6db24f54f4fa015b4939880a04abb9a8c256b (diff) | |
download | chef-165685fdcbd4fbe8138d37d1285b633e3958cf09.tar.gz |
Chef-16 git provider fixes
The git provider now no longer checks out to a "deploy" branch by
default and now checks out to the branch (with a remote upstream) or
else checks out to a detatched head.
The prior behavior can be restored by using "checkout branch 'deploy'".
This also removes the SCM resource base class and replaces it with a
resource partial and does some internal reorganization.
It also introduces the RecipeDSLHelper for better functional tests and
cleans up the functional tests of the git provider.
Properties that were only ever implemented on the git provider were
removed from the subversion provider where they had been inherited from
the base class incorrectly.
Some additional env var handling was added to the subversion handler in
the process of sorting out the common properties, including HOME
handling for alternative users.
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
Diffstat (limited to 'spec/unit/provider')
-rw-r--r-- | spec/unit/provider/git_spec.rb | 9 | ||||
-rw-r--r-- | spec/unit/provider/subversion_spec.rb | 6 |
2 files changed, 10 insertions, 5 deletions
diff --git a/spec/unit/provider/git_spec.rb b/spec/unit/provider/git_spec.rb index b98745b3ca..2f253358f1 100644 --- a/spec/unit/provider/git_spec.rb +++ b/spec/unit/provider/git_spec.rb @@ -400,7 +400,8 @@ describe Chef::Provider::Git do @provider.clone end - it "runs a checkout command with default options" do + it "runs a checkout command when the local branch is set" do + @resource.checkout_branch "deploy" expect(@provider).to receive(:shell_out!).with("git branch -f deploy d35af14d41ae22b19da05d7d03a0bafc321b244c", cwd: "/my/deploy/dir", log_tag: "git[web2.0 app]").ordered expect(@provider).to receive(:shell_out!).with("git checkout deploy", cwd: "/my/deploy/dir", @@ -607,7 +608,7 @@ describe Chef::Provider::Git do it "does not raise an error if user exists" do allow(@provider).to receive(:get_homedir).with(@resource.user).and_return("/home/test") - expect { @provider.run_action(:sync) }.not_to raise_error(ArgumentError) + expect { @provider.run_action(:sync) }.not_to raise_error end end @@ -622,8 +623,10 @@ describe Chef::Provider::Git do end it "does not raise an error if user exists" do + allow(@provider).to receive(:action_sync) # stub the entire action + allow(::File).to receive(:directory?).with("/my/deploy").and_return(true) allow(@provider).to receive(:get_homedir).with(@resource.user).and_return("/home/test") - expect { @provider.run_action(:sync) }.not_to raise_error(Chef::Exceptions::User) + expect { @provider.run_action(:sync) }.not_to raise_error end end diff --git a/spec/unit/provider/subversion_spec.rb b/spec/unit/provider/subversion_spec.rb index f0393f6b40..f3d8404841 100644 --- a/spec/unit/provider/subversion_spec.rb +++ b/spec/unit/provider/subversion_spec.rb @@ -46,7 +46,8 @@ describe Chef::Provider::Subversion do it "converts resource properties to options for shell_out" do expect(@provider.run_options).to eq({}) @resource.user "deployninja" - expect(@provider.run_options).to eq({ user: "deployninja" }) + expect(@provider).to receive(:get_homedir).and_return("/home/deployninja") + expect(@provider.run_options).to eq({ user: "deployninja", environment: { "HOME" => "/home/deployninja" } }) end context "determining the revision of the currently deployed code" do @@ -221,7 +222,8 @@ describe Chef::Provider::Subversion do @resource.user "whois" @resource.group "thisis" expected_cmd = "svn checkout -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir" - expect(@provider).to receive(:shell_out!).with(expected_cmd, { user: "whois", group: "thisis" }) + expect(@provider).to receive(:get_homedir).and_return("/home/whois") + expect(@provider).to receive(:shell_out!).with(expected_cmd, { user: "whois", group: "thisis", environment: { "HOME" => "/home/whois" } }) @provider.run_action(:checkout) expect(@resource).to be_updated end |