diff options
Diffstat (limited to 'spec/lib/puppet_spec')
| -rw-r--r-- | spec/lib/puppet_spec/files.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/lib/puppet_spec/files.rb b/spec/lib/puppet_spec/files.rb new file mode 100644 index 0000000..fa774ef --- /dev/null +++ b/spec/lib/puppet_spec/files.rb @@ -0,0 +1,44 @@ +require 'fileutils' +require 'tempfile' +require 'tmpdir' + +# A support module for testing files. +module PuppetSpec::Files + @global_tempfiles = [] + + def self.cleanup + until @global_tempfiles.empty? + path = @global_tempfiles.pop + Dir.unstub(:entries) + FileUtils.rm_rf path, secure: true + end + end + + module_function + + def tmpfile(name, dir = nil) + dir ||= Dir.tmpdir + path = Puppet::FileSystem.expand_path(make_tmpname(name, nil).encode(Encoding::UTF_8), dir) + PuppetSpec::Files.record_tmp(File.expand_path(path)) + + path + end + + # Copied from ruby 2.4 source + def make_tmpname((prefix, suffix), n) + prefix = (String.try_convert(prefix) || + raise(ArgumentError, "unexpected prefix: #{prefix.inspect}")) + suffix &&= (String.try_convert(suffix) || + raise(ArgumentError, "unexpected suffix: #{suffix.inspect}")) + t = Time.now.strftime('%Y%m%d') + path = "#{prefix}#{t}-#{$PROCESS_ID}-#{rand(0x100000000).to_s(36)}".dup + path << "-#{n}" if n + path << suffix if suffix + path + end + + def self.record_tmp(tmp) + # ...record it for cleanup, + @global_tempfiles << tmp + end +end |
