test_temp_file_helper 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc79e2ac38d87941a0a08e4edebbd1e92763eafc
4
- data.tar.gz: b71bd5e044cc21144eac10859e200586573b1704
3
+ metadata.gz: d4ff9b1bf75dba193364a17c27dff7b374cd4461
4
+ data.tar.gz: e6e3c1a973382bcc7f9cb6deeb73031a2bebc89e
5
5
  SHA512:
6
- metadata.gz: 0ff00fe7c5e03bc28b7aa04ed269ba07844ee558990ef8d5c39cf37c23546561fb92a7d5357f535fc3bcf1222bede028b33c2666a63143d192b4a4a1cb6ab422
7
- data.tar.gz: e98c42a8b16eee67d180b650260743064b8d872b8ab3f7b575bc50e527218dce11ae28b3de78e3b40b41247a19152ceec0d2f7b9f44df4129300dc4316c9b342
6
+ metadata.gz: f12e13b1e4ba1c1dab03db9ce81374ed8d8b778f49e7edb03c9b50b1b79a0cd2650d8c27d94c6dfc9fd32fd9af9cfeda43b448bdedcb3599ba21032c7d28fc97
7
+ data.tar.gz: 1530ea138872e299e88d254842442cb25808a66423dbc7e729efb1ebdb49cc48d8466b5a6f4c4450fcf809107c2c1157100b0a090701f26856debf94c510f83c
data/README.md CHANGED
@@ -42,27 +42,7 @@ $ gem install test_temp_file_helper
42
42
 
43
43
  ### Usage
44
44
 
45
- First, add the following to your `Rakefile`:
46
-
47
- ```ruby
48
- require 'test_temp_file_helper/rake'
49
-
50
- TestTempFileHelper::SetupTestEnvironmentTask.new do |t|
51
- t.base_dir = File.dirname __FILE__
52
- t.data_dir = File.join('test', 'data')
53
- t.tmp_dir = File.join('test', 'tmp')
54
- end
55
- ```
56
- The `SetupTestEnvironmentTask` properties:
57
- - `base_dir`: parent directory used to set the environment variables
58
- - `data_dir`: directory relative to `base_dir` used to set `TEST_DATADIR`
59
- - `tmp_dir`: directory relative to `base_dir` used to set `TEST_TMPDIR`
60
-
61
- If an environment variable is already set, or if the corresponding property is
62
- not set on the `SetupTestEnvironmentTask` object, the environment variable
63
- will not be set or updated.
64
-
65
- Then, create a `TempFileHelper` in your test's `setup` method, and call
45
+ Create a `TempFileHelper` in your test's `setup` method, and call
66
46
  `TempFileHelper.teardown` in your test's `teardown` method.
67
47
 
68
48
  ```ruby
@@ -86,6 +66,16 @@ class MyTest < ::Minitest::Test
86
66
  end
87
67
  ```
88
68
 
69
+ The temporary directory containing all generated files and directories is
70
+ set by the first of these items which is not `nil`:
71
+
72
+ 1. the `tmp_dir` argument to `TempFileHelper.new`
73
+ 2. the `TEST_TMPDIR` environment variable
74
+ 3. `Dir.mktmpdir`
75
+
76
+ The path to the temporary directory itself can be accessed via
77
+ `TempFileHelper.tmpdir`.
78
+
89
79
  ### Contributing
90
80
 
91
81
  1. Fork the repo ( https://github.com/18F/test_temp_file_helper/fork )
@@ -18,29 +18,27 @@ require "test_temp_file_helper/version"
18
18
 
19
19
  module TestTempFileHelper
20
20
  # Automatically generates and cleans up temporary files in automated tests.
21
- # Performs its operations in the directory specified by the +TEST_TMPDIR+
22
- # environment variable.
21
+ #
22
+ # The temporary directory containing all generated files and directories is
23
+ # set by the first of these items which is not +nil+:
24
+ # - the +tmp_dir+ argument to +TempFileHelper.new+
25
+ # - the +TEST_TMPDIR+ environment variable
26
+ # - +Dir.mktmpdir+
23
27
  class TempFileHelper
24
- # @param tmpdir [String] (optional) if specified, overrides +TEST_TMPDIR+
25
- def initialize(tmpdir: nil)
26
- @tmpdir = tmpdir || ENV['TEST_TMPDIR']
27
- @files = []
28
- @dirs = []
28
+ attr_accessor :tmpdir
29
+
30
+ # @param tmpdir [String] (optional) if set, determines the temp dir
31
+ def initialize(tmp_dir: nil)
32
+ @tmpdir = tmp_dir || ENV['TEST_TMPDIR'] || Dir.mktmpdir
29
33
  end
30
34
 
31
35
  # Creates a temporary test directory relative to TEST_TMPDIR.
32
36
  # @param relative_path [String] directory to create
33
37
  # @return [String] File.join(@tmpdir, relative_path)
34
38
  def mkdir(relative_path)
35
- components = relative_path.split(File::SEPARATOR)
36
- components = components.delete_if {|i| i == '.'}
37
- current = @tmpdir
38
- until components.empty?
39
- current = File.join current, components.shift
40
- Dir.mkdir current unless File.exists? current
41
- @dirs << current
42
- end
43
- @dirs.last
39
+ new_dir = File.join @tmpdir, relative_path
40
+ FileUtils.mkdir_p new_dir
41
+ new_dir
44
42
  end
45
43
 
46
44
  # Creates a temporary file relative to TEST_TMPDIR.
@@ -51,15 +49,13 @@ module TestTempFileHelper
51
49
  mkdir File.dirname(relative_path)
52
50
  filename = File.join(@tmpdir, relative_path)
53
51
  File.open(filename, 'w') {|f| f << content}
54
- @files << filename
55
52
  filename
56
53
  end
57
54
 
58
55
  # Removes all files and directories created by the instance. Should be
59
56
  # called from the test's +teardown+ method.
60
57
  def teardown
61
- @files.sort.uniq.each {|f| File.unlink f}
62
- @dirs.sort.uniq.reverse.each {|d| Dir.rmdir d}
58
+ FileUtils.remove_entry @tmpdir
63
59
  end
64
60
  end
65
61
  end
@@ -15,5 +15,5 @@
15
15
  # @author Mike Bland (michael.bland@gsa.gov)
16
16
 
17
17
  module TestTempFileHelper
18
- VERSION = "0.0.1"
18
+ VERSION = "0.0.2"
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_temp_file_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Bland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-18 00:00:00.000000000 Z
11
+ date: 2015-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -76,7 +76,6 @@ extra_rdoc_files: []
76
76
  files:
77
77
  - README.md
78
78
  - lib/test_temp_file_helper.rb
79
- - lib/test_temp_file_helper/rake.rb
80
79
  - lib/test_temp_file_helper/version.rb
81
80
  homepage: https://github.com/18F/test_temp_file_helper
82
81
  licenses:
@@ -1,89 +0,0 @@
1
- # test_temp_file_helper - Generates and cleans up temp files for automated tests
2
- #
3
- # Written in 2015 by Mike Bland (michael.bland@gsa.gov)
4
- # on behalf of the 18F team, part of the US General Services Administration:
5
- # https://18f.gsa.gov/
6
- #
7
- # To the extent possible under law, the author(s) have dedicated all copyright
8
- # and related and neighboring rights to this software to the public domain
9
- # worldwide. This software is distributed without any warranty.
10
- #
11
- # You should have received a copy of the CC0 Public Domain Dedication along
12
- # with this software. If not, see
13
- # <https://creativecommons.org/publicdomain/zero/1.0/>.
14
- #
15
- # @author Mike Bland (michael.bland@gsa.gov)
16
-
17
- require 'rake/tasklib'
18
-
19
- module TestTempFileHelper
20
-
21
- # A Rake task that sets up the +TEST_DATADIR+ and +TEST_TMPDIR+ environment
22
- # variables.
23
- #
24
- # Properties:
25
- # - +base_dir+: parent directory used to set the environment variables
26
- # - +data_dir+: directory relative to +base_dir+ used to set +TEST_DATADIR+
27
- # - +tmp_dir+: directory relative to +base_dir+ used to set +TEST_TMPDIR+
28
- #
29
- # If an environment variable is already set, or if the corresponding
30
- # property is not set on the +SetupTestEnvironmentTask+ object, the
31
- # environment variable will not be set or updated.
32
- #
33
- # Usage (inside a +Rakefile+):
34
- #
35
- # require 'test_temp_file_helper/rake'
36
- #
37
- # TestTempFileHelper::SetupTestEnvironmentTask.new do |t|
38
- # t.base_dir = File.dirname __FILE__
39
- # t.data_dir = File.join('test', 'data')
40
- # t.tmp_dir = File.join('test', 'tmp')
41
- # end
42
- class SetupTestEnvironmentTask < ::Rake::TaskLib
43
- def initialize(name='test_temp_file_helper_setup_test_environment')
44
- @name = name
45
- @base_dir = nil
46
- yield self if block_given?
47
-
48
- set_environment_variable 'TEST_DATADIR', @data_dir
49
- set_environment_variable 'TEST_TMPDIR', @tmp_dir
50
- test_tmpdir = ENV['TEST_TMPDIR']
51
-
52
- if test_tmpdir
53
- rm_rf test_tmpdir if File.exists? test_tmpdir
54
- directory test_tmpdir
55
- task test: test_tmpdir
56
- end
57
- end
58
-
59
- # Sets +ENV[var_name]+ as the concatenation of +base_dir+ and
60
- # +relative_dir+.
61
- # @param var_name [String]
62
- # @param relative_dir [String]
63
- def set_environment_variable(var_name, relative_dir)
64
- unless ENV[var_name]
65
- ENV[var_name] = File.join @base_dir, relative_dir if relative_dir
66
- end
67
- end
68
- private :set_environment_variable
69
-
70
- # Sets the base directory that serves as the common parent for the
71
- # +TEST_DATADIR+ and +TEST_TMPDIR+ environment variables.
72
- # @param dirname [String] parent dir of +data_dir+ and +tmp_dir+
73
- def base_dir=(dirname)
74
- @base_dir = dirname
75
- end
76
-
77
- # Sets +TEST_DATADIR+ using a path relative to the +base_dir+.
78
- # @param dirname [String] path relative to +base_dir+
79
- def data_dir=(dirname)
80
- @data_dir = dirname
81
- end
82
-
83
- # Sets +TEST_TMPDIR+ using a path relative to the +base_dir+.
84
- # @param dirname [String] path relative to +base_dir+
85
- def tmp_dir=(dirname)
86
- @tmp_dir = dirname
87
- end
88
- end
89
- end