From dd073cf031229b436228ff0be79a2c639b2158b5 Mon Sep 17 00:00:00 2001 From: Nick Bertrand Date: Mon, 12 Jun 2023 13:32:31 -0500 Subject: [PATCH] Allow specifying tmpdir for git wrapper script --- lib/puppet/provider/vcsrepo/git.rb | 4 ++-- lib/puppet/type/vcsrepo.rb | 7 ++++++ spec/unit/puppet/provider/vcsrepo/git_spec.rb | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/puppet/provider/vcsrepo/git.rb b/lib/puppet/provider/vcsrepo/git.rb index 81da6073..306013d3 100644 --- a/lib/puppet/provider/vcsrepo/git.rb +++ b/lib/puppet/provider/vcsrepo/git.rb @@ -7,7 +7,7 @@ has_features :bare_repositories, :reference_tracking, :ssh_identity, :multiple_remotes, :user, :depth, :branch, :submodules, :safe_directory, :hooks_allowed, - :umask, :http_proxy + :umask, :http_proxy, :tmpdir def create check_force @@ -708,7 +708,7 @@ def git_ssh_with_identity_ssh_command(*args) # @!visiblity private def git_ssh_with_identity_ssh_file(*args) - Tempfile.open('git-helper') do |f| + Tempfile.open('git-helper', @resource.value(:tmpdir)) do |f| f.puts '#!/bin/sh' f.puts 'SSH_AUTH_SOCKET=' f.puts 'export SSH_AUTH_SOCKET' diff --git a/lib/puppet/type/vcsrepo.rb b/lib/puppet/type/vcsrepo.rb index d485f34c..31ed3b62 100644 --- a/lib/puppet/type/vcsrepo.rb +++ b/lib/puppet/type/vcsrepo.rb @@ -73,6 +73,9 @@ feature :http_proxy, 'The provider supports retrieving repos via HTTP/HTTPS over an HTTP/HTTPS proxy' + feature :tmpdir, + 'The provider supports setting the temp directory used for wrapper scripts.' + ensurable do desc 'Ensure the version control repository.' attr_accessor :latest @@ -348,6 +351,10 @@ def insync?(is) end end + newparam :tmpdir, required_features: [:tmpdir] do + desc 'The temp directory used for wrapper scripts.' + end + autorequire(:package) do ['git', 'git-core', 'mercurial', 'subversion'] end diff --git a/spec/unit/puppet/provider/vcsrepo/git_spec.rb b/spec/unit/puppet/provider/vcsrepo/git_spec.rb index b3aa42f9..dd2b188f 100644 --- a/spec/unit/puppet/provider/vcsrepo/git_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/git_spec.rb @@ -689,4 +689,28 @@ def branch_a_list(include_branch = nil?) end end end + + describe 'tmpdir' do + before(:each) do + resource[:source] = '/path/to/source' + resource[:identity] = '/path/to/identity' + expect(Dir).to receive(:chdir).with('/tmp/test').at_least(:once).and_yield + expect(provider).to receive(:exec_git).with('--version').and_return('1.8.3.1') + end + + context 'when set' do + it 'uses tmpdir' do + resource[:tmpdir] = '/custom_tmp' + expect(Tempfile).to receive(:open).with('git-helper', '/custom_tmp') + expect { provider.set_mirror }.not_to raise_error + end + end + + context 'when unset' do + it 'uses default' do + expect(Tempfile).to receive(:open).with('git-helper', nil) + expect { provider.set_mirror }.not_to raise_error + end + end + end end