iostreams 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +7 -7
  4. data/lib/io_streams/builder.rb +4 -3
  5. data/lib/io_streams/bzip2/reader.rb +1 -1
  6. data/lib/io_streams/bzip2/writer.rb +1 -1
  7. data/lib/io_streams/deprecated.rb +2 -3
  8. data/lib/io_streams/encode/reader.rb +5 -8
  9. data/lib/io_streams/encode/writer.rb +1 -1
  10. data/lib/io_streams/io_streams.rb +5 -2
  11. data/lib/io_streams/line/reader.rb +2 -1
  12. data/lib/io_streams/path.rb +4 -4
  13. data/lib/io_streams/paths/http.rb +8 -10
  14. data/lib/io_streams/paths/matcher.rb +10 -11
  15. data/lib/io_streams/paths/s3.rb +6 -6
  16. data/lib/io_streams/paths/sftp.rb +38 -23
  17. data/lib/io_streams/pgp.rb +45 -35
  18. data/lib/io_streams/pgp/reader.rb +4 -6
  19. data/lib/io_streams/pgp/writer.rb +1 -2
  20. data/lib/io_streams/reader.rb +2 -2
  21. data/lib/io_streams/record/writer.rb +2 -4
  22. data/lib/io_streams/row/writer.rb +3 -5
  23. data/lib/io_streams/stream.rb +6 -6
  24. data/lib/io_streams/symmetric_encryption/reader.rb +1 -3
  25. data/lib/io_streams/symmetric_encryption/writer.rb +2 -6
  26. data/lib/io_streams/tabular.rb +12 -10
  27. data/lib/io_streams/tabular/header.rb +4 -4
  28. data/lib/io_streams/tabular/parser/array.rb +2 -4
  29. data/lib/io_streams/tabular/parser/csv.rb +3 -5
  30. data/lib/io_streams/tabular/parser/fixed.rb +4 -3
  31. data/lib/io_streams/tabular/parser/hash.rb +2 -4
  32. data/lib/io_streams/tabular/parser/json.rb +2 -4
  33. data/lib/io_streams/tabular/parser/psv.rb +5 -7
  34. data/lib/io_streams/tabular/utility/csv_row.rb +9 -17
  35. data/lib/io_streams/utils.rb +3 -3
  36. data/lib/io_streams/utils/reliable_http.rb +98 -0
  37. data/lib/io_streams/version.rb +1 -1
  38. data/lib/io_streams/writer.rb +1 -1
  39. data/lib/io_streams/xlsx/reader.rb +5 -5
  40. data/lib/io_streams/zip/reader.rb +1 -1
  41. data/lib/io_streams/zip/writer.rb +2 -2
  42. data/lib/iostreams.rb +34 -34
  43. data/test/builder_test.rb +74 -74
  44. data/test/bzip2_reader_test.rb +8 -13
  45. data/test/bzip2_writer_test.rb +8 -9
  46. data/test/deprecated_test.rb +25 -29
  47. data/test/encode_reader_test.rb +14 -18
  48. data/test/encode_writer_test.rb +29 -30
  49. data/test/gzip_reader_test.rb +8 -13
  50. data/test/gzip_writer_test.rb +10 -11
  51. data/test/io_streams_test.rb +35 -35
  52. data/test/line_reader_test.rb +35 -39
  53. data/test/line_writer_test.rb +8 -9
  54. data/test/minimal_file_reader.rb +1 -1
  55. data/test/path_test.rb +24 -24
  56. data/test/paths/file_test.rb +42 -42
  57. data/test/paths/http_test.rb +5 -5
  58. data/test/paths/matcher_test.rb +11 -12
  59. data/test/paths/s3_test.rb +44 -46
  60. data/test/paths/sftp_test.rb +18 -18
  61. data/test/pgp_reader_test.rb +13 -15
  62. data/test/pgp_test.rb +43 -44
  63. data/test/pgp_writer_test.rb +27 -28
  64. data/test/record_reader_test.rb +9 -10
  65. data/test/record_writer_test.rb +10 -11
  66. data/test/row_reader_test.rb +5 -6
  67. data/test/row_writer_test.rb +7 -8
  68. data/test/stream_test.rb +60 -62
  69. data/test/tabular_test.rb +111 -111
  70. data/test/test_helper.rb +22 -22
  71. data/test/utils_test.rb +7 -7
  72. data/test/xlsx_reader_test.rb +12 -12
  73. data/test/zip_reader_test.rb +14 -21
  74. data/test/zip_writer_test.rb +10 -10
  75. metadata +4 -3
@@ -1,9 +1,9 @@
1
- require_relative 'test_helper'
1
+ require_relative "test_helper"
2
2
 
3
3
  class DelimitedWriterTest < Minitest::Test
4
4
  describe IOStreams::Line::Writer do
5
5
  let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'text.txt')
6
+ File.join(File.dirname(__FILE__), "files", "text.txt")
7
7
  end
8
8
 
9
9
  let :raw do
@@ -14,9 +14,9 @@ class DelimitedWriterTest < Minitest::Test
14
14
  raw.lines.map(&:strip)
15
15
  end
16
16
 
17
- describe '#<<' do
18
- it 'file' do
19
- temp_file = Tempfile.new('rocket_job')
17
+ describe "#<<" do
18
+ it "file" do
19
+ temp_file = Tempfile.new("rocket_job")
20
20
  file_name = temp_file.to_path
21
21
  IOStreams::Line::Writer.file(file_name) do |io|
22
22
  lines.each { |line| io << line }
@@ -25,7 +25,7 @@ class DelimitedWriterTest < Minitest::Test
25
25
  assert_equal raw, result
26
26
  end
27
27
 
28
- it 'stream' do
28
+ it "stream" do
29
29
  io_string = StringIO.new
30
30
  IOStreams::Line::Writer.stream(io_string) do |io|
31
31
  lines.each { |line| io << line }
@@ -34,8 +34,8 @@ class DelimitedWriterTest < Minitest::Test
34
34
  end
35
35
  end
36
36
 
37
- describe '.write' do
38
- it 'returns byte count' do
37
+ describe ".write" do
38
+ it "returns byte count" do
39
39
  io_string = StringIO.new
40
40
  count = 0
41
41
  IOStreams::Line::Writer.stream(io_string) do |io|
@@ -45,6 +45,5 @@ class DelimitedWriterTest < Minitest::Test
45
45
  assert_equal raw.size, count
46
46
  end
47
47
  end
48
-
49
48
  end
50
49
  end
@@ -4,7 +4,7 @@ class MinimalFileReader
4
4
  io = new(file_name)
5
5
  yield(io)
6
6
  ensure
7
- io.close if io
7
+ io&.close
8
8
  end
9
9
 
10
10
  def initialize(file_name)
@@ -1,53 +1,53 @@
1
- require_relative 'test_helper'
1
+ require_relative "test_helper"
2
2
 
3
3
  module IOStreams
4
4
  class PathTest < Minitest::Test
5
5
  describe IOStreams::Path do
6
- describe '.join' do
7
- let(:path) { IOStreams::Path.new('some_path') }
6
+ describe ".join" do
7
+ let(:path) { IOStreams::Path.new("some_path") }
8
8
 
9
- it 'returns self when no elements' do
9
+ it "returns self when no elements" do
10
10
  assert_equal path.object_id, path.join.object_id
11
11
  end
12
12
 
13
- it 'adds element to path' do
14
- assert_equal ::File.join('some_path', 'test'), path.join('test').to_s
13
+ it "adds element to path" do
14
+ assert_equal ::File.join("some_path", "test"), path.join("test").to_s
15
15
  end
16
16
 
17
- it 'adds paths to root' do
18
- assert_equal ::File.join('some_path', 'test', 'second', 'third'), path.join('test', 'second', 'third').to_s
17
+ it "adds paths to root" do
18
+ assert_equal ::File.join("some_path", "test", "second", "third"), path.join("test", "second", "third").to_s
19
19
  end
20
20
 
21
- it 'returns path and filename' do
22
- assert_equal ::File.join('some_path', 'file.xls'), path.join('file.xls').to_s
21
+ it "returns path and filename" do
22
+ assert_equal ::File.join("some_path", "file.xls"), path.join("file.xls").to_s
23
23
  end
24
24
 
25
- it 'adds elements to path' do
26
- assert_equal ::File.join('some_path', 'test', 'second', 'third', 'file.xls'), path.join('test', 'second', 'third', 'file.xls').to_s
25
+ it "adds elements to path" do
26
+ assert_equal ::File.join("some_path", "test", "second", "third", "file.xls"), path.join("test", "second", "third", "file.xls").to_s
27
27
  end
28
28
 
29
- it 'return path as sent in when full path' do
30
- assert_equal ::File.join('some_path', 'test', 'second', 'third', 'file.xls'), path.join('some_path', 'test', 'second', 'third', 'file.xls').to_s
29
+ it "return path as sent in when full path" do
30
+ assert_equal ::File.join("some_path", "test", "second", "third", "file.xls"), path.join("some_path", "test", "second", "third", "file.xls").to_s
31
31
  end
32
32
  end
33
33
 
34
- describe '#absolute?' do
35
- it 'true on absolute' do
36
- assert_equal true, IOStreams::Path.new('/a/b/c/d').absolute?
34
+ describe "#absolute?" do
35
+ it "true on absolute" do
36
+ assert_equal true, IOStreams::Path.new("/a/b/c/d").absolute?
37
37
  end
38
38
 
39
- it 'false when not absolute' do
40
- assert_equal false, IOStreams::Path.new('a/b/c/d').absolute?
39
+ it "false when not absolute" do
40
+ assert_equal false, IOStreams::Path.new("a/b/c/d").absolute?
41
41
  end
42
42
  end
43
43
 
44
- describe '#relatve?' do
45
- it 'true on relative' do
46
- assert_equal true, IOStreams::Path.new('a/b/c/d').relative?
44
+ describe "#relatve?" do
45
+ it "true on relative" do
46
+ assert_equal true, IOStreams::Path.new("a/b/c/d").relative?
47
47
  end
48
48
 
49
- it 'false on absolute' do
50
- assert_equal false, IOStreams::Path.new('/a/b/c/d').relative?
49
+ it "false on absolute" do
50
+ assert_equal false, IOStreams::Path.new("/a/b/c/d").relative?
51
51
  end
52
52
  end
53
53
  end
@@ -1,48 +1,48 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  module Paths
4
4
  class FileTest < Minitest::Test
5
5
  describe IOStreams::Paths::File do
6
6
  let(:root) { IOStreams::Paths::File.new("/tmp/iostreams").delete_all }
7
- let(:directory) { root.join('/some_test_dir') }
7
+ let(:directory) { root.join("/some_test_dir") }
8
8
  let(:data) { "Hello World" }
9
9
  let(:file_path) do
10
- path = root.join('some_test_dir/test_file.txt')
10
+ path = root.join("some_test_dir/test_file.txt")
11
11
  path.writer { |io| io << data }
12
12
  path
13
13
  end
14
14
  let(:file_path2) do
15
- path = root.join('some_test_dir/test_file2.txt')
15
+ path = root.join("some_test_dir/test_file2.txt")
16
16
  path.writer { |io| io << "Hello World2" }
17
17
  path
18
18
  end
19
19
 
20
- describe '#each_child' do
21
- it 'iterates an empty path' do
20
+ describe "#each_child" do
21
+ it "iterates an empty path" do
22
22
  none = nil
23
- directory.join('does_not_exist').mkdir.each_child { |path| none = path }
23
+ directory.join("does_not_exist").mkdir.each_child { |path| none = path }
24
24
  assert_nil none
25
25
  end
26
26
 
27
- it 'iterates a non-existant path' do
27
+ it "iterates a non-existant path" do
28
28
  none = nil
29
- directory.join('does_not_exist').each_child { |path| none = path }
29
+ directory.join("does_not_exist").each_child { |path| none = path }
30
30
  assert_nil none
31
31
  end
32
32
 
33
- it 'find all files' do
33
+ it "find all files" do
34
34
  expected = [file_path.to_s, file_path2.to_s]
35
35
  actual = root.children("**/*").collect(&:to_s)
36
36
  assert_equal expected.sort, actual.sort
37
37
  end
38
38
 
39
- it 'find matches case-insensitive' do
39
+ it "find matches case-insensitive" do
40
40
  expected = [file_path.to_s, file_path2.to_s]
41
41
  actual = root.children("**/Test*.TXT").collect(&:to_s)
42
42
  assert_equal expected, actual.sort
43
43
  end
44
44
 
45
- it 'find matches case-sensitive' do
45
+ it "find matches case-sensitive" do
46
46
  skip "TODO"
47
47
  expected = [file_path.to_s, file_path2.to_s]
48
48
  actual = root.children("**/Test*.TXT", case_sensitive: true).collect(&:to_s)
@@ -50,24 +50,24 @@ module Paths
50
50
  end
51
51
  end
52
52
 
53
- describe '#mkpath' do
54
- it 'makes path skipping file_name' do
55
- new_path = directory.join('test_mkpath.xls').mkpath
53
+ describe "#mkpath" do
54
+ it "makes path skipping file_name" do
55
+ new_path = directory.join("test_mkpath.xls").mkpath
56
56
  assert ::File.exist?(directory.to_s)
57
57
  refute ::File.exist?(new_path.to_s)
58
58
  end
59
59
  end
60
60
 
61
- describe '#mkdir' do
62
- it 'makes entire path that does not have a file name' do
63
- new_path = directory.join('more_path').mkdir
61
+ describe "#mkdir" do
62
+ it "makes entire path that does not have a file name" do
63
+ new_path = directory.join("more_path").mkdir
64
64
  assert ::File.exist?(directory.to_s)
65
65
  assert ::File.exist?(new_path.to_s)
66
66
  end
67
67
  end
68
68
 
69
- describe '#exist?' do
70
- it 'true on existing file or directory' do
69
+ describe "#exist?" do
70
+ it "true on existing file or directory" do
71
71
  assert ::File.exist?(file_path.to_s)
72
72
  assert ::File.exist?(directory.to_s)
73
73
 
@@ -75,8 +75,8 @@ module Paths
75
75
  assert file_path.exist?
76
76
  end
77
77
 
78
- it 'false when not found' do
79
- non_existant_directory = directory.join('oh_no')
78
+ it "false when not found" do
79
+ non_existant_directory = directory.join("oh_no")
80
80
  refute ::File.exist?(non_existant_directory.to_s)
81
81
 
82
82
  non_existant_file_path = directory.join("abc.txt")
@@ -87,31 +87,31 @@ module Paths
87
87
  end
88
88
  end
89
89
 
90
- describe '#size' do
91
- it 'of file' do
90
+ describe "#size" do
91
+ it "of file" do
92
92
  assert_equal data.size, file_path.size
93
93
  end
94
94
  end
95
95
 
96
- describe '#realpath' do
97
- it 'already a real path' do
98
- path = ::File.expand_path(__dir__, '../files/test.csv')
96
+ describe "#realpath" do
97
+ it "already a real path" do
98
+ path = ::File.expand_path(__dir__, "../files/test.csv")
99
99
  assert_equal path, IOStreams::Paths::File.new(path).realpath.to_s
100
100
  end
101
101
 
102
- it 'removes ..' do
103
- path = ::File.join(__dir__, '../files/test.csv')
102
+ it "removes .." do
103
+ path = ::File.join(__dir__, "../files/test.csv")
104
104
  realpath = ::File.realpath(path)
105
105
  assert_equal realpath, IOStreams::Paths::File.new(path).realpath.to_s
106
106
  end
107
107
  end
108
108
 
109
- describe '#move_to' do
110
- it 'move_to existing file' do
109
+ describe "#move_to" do
110
+ it "move_to existing file" do
111
111
  IOStreams.temp_file("iostreams_move_test", ".txt") do |temp_file|
112
112
  temp_file.write("Hello World")
113
113
  begin
114
- target = temp_file.directory.join("move_test.txt")
114
+ target = temp_file.directory.join("move_test.txt")
115
115
  response = temp_file.move_to(target)
116
116
  assert_equal target, response
117
117
  assert target.exist?
@@ -124,7 +124,7 @@ module Paths
124
124
  end
125
125
  end
126
126
 
127
- it 'missing source file' do
127
+ it "missing source file" do
128
128
  IOStreams.temp_file("iostreams_move_test", ".txt") do |temp_file|
129
129
  begin
130
130
  refute temp_file.exist?
@@ -138,11 +138,11 @@ module Paths
138
138
  end
139
139
  end
140
140
 
141
- it 'missing target directories' do
141
+ it "missing target directories" do
142
142
  IOStreams.temp_file("iostreams_move_test", ".txt") do |temp_file|
143
143
  temp_file.write("Hello World")
144
144
  begin
145
- target = temp_file.directory.join("a/b/c/move_test.txt")
145
+ target = temp_file.directory.join("a/b/c/move_test.txt")
146
146
  response = temp_file.move_to(target)
147
147
  assert_equal target, response
148
148
  assert target.exist?
@@ -156,27 +156,27 @@ module Paths
156
156
  end
157
157
  end
158
158
 
159
- describe '#delete' do
160
- it 'deletes existing file' do
159
+ describe "#delete" do
160
+ it "deletes existing file" do
161
161
  assert ::File.exist?(file_path.to_s)
162
162
  file_path.delete
163
163
  refute ::File.exist?(file_path.to_s)
164
164
  end
165
165
 
166
- it 'ignores missing file' do
166
+ it "ignores missing file" do
167
167
  file_path.delete
168
168
  file_path.delete
169
169
  end
170
170
  end
171
171
 
172
- describe 'reader' do
173
- it 'reads file' do
172
+ describe "reader" do
173
+ it "reads file" do
174
174
  assert_equal data, file_path.reader(&:read)
175
175
  end
176
176
  end
177
177
 
178
- describe 'writer' do
179
- it 'creates file' do
178
+ describe "writer" do
179
+ it "creates file" do
180
180
  new_file_path = directory.join("new.txt")
181
181
  refute ::File.exist?(new_file_path.to_s)
182
182
  new_file_path.writer { |io| io << data }
@@ -1,4 +1,4 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  module Paths
4
4
  class HTTPTest < Minitest::Test
@@ -11,18 +11,18 @@ module Paths
11
11
  "https://example.com/index.html?count=10"
12
12
  end
13
13
 
14
- describe '.open' do
15
- it 'reads http' do
14
+ describe ".open" do
15
+ it "reads http" do
16
16
  result = IOStreams::Paths::HTTP.new(url).read
17
17
  assert_includes result, "<html>"
18
18
  end
19
19
 
20
- it 'reads https' do
20
+ it "reads https" do
21
21
  result = IOStreams::Paths::HTTP.new(ssl_url).read
22
22
  assert_includes result, "<html>"
23
23
  end
24
24
 
25
- it 'does not support streams' do
25
+ it "does not support streams" do
26
26
  assert_raises URI::InvalidURIError do
27
27
  io = StringIO.new
28
28
  IOStreams::Paths::HTTP.new(io)
@@ -1,4 +1,4 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  module Paths
4
4
  class MatcherTest < Minitest::Test
@@ -49,13 +49,13 @@ module Paths
49
49
  case_sensitive: true
50
50
  },
51
51
  {path: "/path/work", pattern: "file.txt", expected_path: "/path/work/file.txt", expected_pattern: nil, recursive: false},
52
- {path: "/path/work", pattern: "*", expected_path: "/path/work", expected_pattern: "*", recursive: false},
52
+ {path: "/path/work", pattern: "*", expected_path: "/path/work", expected_pattern: "*", recursive: false}
53
53
  ]
54
54
  end
55
55
  # , case_sensitive: false, hidden: false
56
56
 
57
- describe '#recursive?' do
58
- it 'identifies recursive paths correctly' do
57
+ describe "#recursive?" do
58
+ it "identifies recursive paths correctly" do
59
59
  cases.each do |test_case|
60
60
  path = IOStreams.path(test_case[:path])
61
61
  matcher = IOStreams::Paths::Matcher.new(path, test_case[:pattern])
@@ -65,7 +65,7 @@ module Paths
65
65
  end
66
66
 
67
67
  describe "#path?" do
68
- it 'optimizes path correctly' do
68
+ it "optimizes path correctly" do
69
69
  cases.each do |test_case|
70
70
  path = IOStreams.path(test_case[:path])
71
71
  matcher = IOStreams::Paths::Matcher.new(path, test_case[:pattern])
@@ -75,7 +75,7 @@ module Paths
75
75
  end
76
76
 
77
77
  describe "#pattern" do
78
- it 'optimizes pattern correctly' do
78
+ it "optimizes pattern correctly" do
79
79
  cases.each do |test_case|
80
80
  path = IOStreams.path(test_case[:path])
81
81
  matcher = IOStreams::Paths::Matcher.new(path, test_case[:pattern])
@@ -89,7 +89,7 @@ module Paths
89
89
  end
90
90
 
91
91
  describe "#match?" do
92
- it 'matches' do
92
+ it "matches" do
93
93
  cases.each do |test_case|
94
94
  path = IOStreams.path(test_case[:path])
95
95
  case_sensitive = test_case.fetch(:case_sensitive, false)
@@ -102,20 +102,19 @@ module Paths
102
102
  end
103
103
  end
104
104
 
105
- it 'should not match' do
106
- cases.each do |test_case|
105
+ it "should not match" do
106
+ cases.each_with_index do |test_case, index|
107
107
  path = IOStreams.path(test_case[:path])
108
- case_sensitive = test_case.fetch(case_sensitive, :false)
108
+ case_sensitive = test_case.key?(:case_sensitive) ? test_case[:case_sensitive] : false
109
109
  matcher = IOStreams::Paths::Matcher.new(path, test_case[:pattern], case_sensitive: case_sensitive)
110
110
  next unless test_case[:not_matches]
111
111
 
112
112
  test_case[:not_matches].each do |file_name|
113
- refute matcher.match?(file_name), test_case.merge(file_name: file_name)
113
+ refute matcher.match?(file_name), -> { {case_sensitive: case_sensitive, test_case_number: index + 1, failed_file_name: file_name, test_case: test_case}.ai }
114
114
  end
115
115
  end
116
116
  end
117
117
  end
118
-
119
118
  end
120
119
  end
121
120
  end
@@ -1,16 +1,14 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  module Paths
4
4
  class S3Test < Minitest::Test
5
5
  describe IOStreams::Paths::S3 do
6
6
  before do
7
- unless ENV['S3_BUCKET_NAME']
8
- skip "Supply 'S3_BUCKET_NAME' environment variable with S3 bucket name to test S3 paths"
9
- end
7
+ skip "Supply 'S3_BUCKET_NAME' environment variable with S3 bucket name to test S3 paths" unless ENV["S3_BUCKET_NAME"]
10
8
  end
11
9
 
12
10
  let :file_name do
13
- File.join(File.dirname(__FILE__), '..', 'files', 'text file.txt')
11
+ File.join(File.dirname(__FILE__), "..", "files", "text file.txt")
14
12
  end
15
13
 
16
14
  let :raw do
@@ -20,98 +18,98 @@ module Paths
20
18
  let(:root_path) { IOStreams::Paths::S3.new("s3://#{ENV['S3_BUCKET_NAME']}/iostreams_test") }
21
19
 
22
20
  let :existing_path do
23
- path = root_path.join('test.txt')
21
+ path = root_path.join("test.txt")
24
22
  path.write(raw) unless path.exist?
25
23
  path
26
24
  end
27
25
 
28
26
  let :missing_path do
29
- root_path.join('unknown.txt')
27
+ root_path.join("unknown.txt")
30
28
  end
31
29
 
32
30
  let :write_path do
33
- root_path.join('writer_test.txt').delete
31
+ root_path.join("writer_test.txt").delete
34
32
  end
35
33
 
36
- describe '#delete' do
37
- it 'existing file' do
34
+ describe "#delete" do
35
+ it "existing file" do
38
36
  assert existing_path.delete.is_a?(IOStreams::Paths::S3)
39
37
  end
40
38
 
41
- it 'missing file' do
39
+ it "missing file" do
42
40
  assert missing_path.delete.is_a?(IOStreams::Paths::S3)
43
41
  end
44
42
  end
45
43
 
46
- describe '#exist?' do
47
- it 'existing file' do
44
+ describe "#exist?" do
45
+ it "existing file" do
48
46
  assert existing_path.exist?
49
47
  end
50
48
 
51
- it 'missing file' do
49
+ it "missing file" do
52
50
  refute missing_path.exist?
53
51
  end
54
52
  end
55
53
 
56
- describe '#mkpath' do
57
- it 'returns self for non-existant path' do
54
+ describe "#mkpath" do
55
+ it "returns self for non-existant path" do
58
56
  assert existing_path.mkpath.is_a?(IOStreams::Paths::S3)
59
57
  end
60
58
 
61
- it 'checks for lack of existence' do
59
+ it "checks for lack of existence" do
62
60
  assert missing_path.mkpath.is_a?(IOStreams::Paths::S3)
63
61
  end
64
62
  end
65
63
 
66
- describe '#mkdir' do
67
- it 'returns self for non-existant path' do
64
+ describe "#mkdir" do
65
+ it "returns self for non-existant path" do
68
66
  assert existing_path.mkdir.is_a?(IOStreams::Paths::S3)
69
67
  end
70
68
 
71
- it 'checks for lack of existence' do
69
+ it "checks for lack of existence" do
72
70
  assert missing_path.mkdir.is_a?(IOStreams::Paths::S3)
73
71
  end
74
72
  end
75
73
 
76
- describe '#reader' do
77
- it 'reads' do
78
- assert_equal raw, existing_path.reader { |io| io.read }
74
+ describe "#reader" do
75
+ it "reads" do
76
+ assert_equal raw, existing_path.reader(&:read)
79
77
  end
80
78
  end
81
79
 
82
- describe '#size' do
83
- it 'existing file' do
80
+ describe "#size" do
81
+ it "existing file" do
84
82
  assert_equal raw.size, existing_path.size
85
83
  end
86
84
 
87
- it 'missing file' do
85
+ it "missing file" do
88
86
  assert_nil missing_path.size
89
87
  end
90
88
  end
91
89
 
92
- describe '#writer' do
93
- it 'writes' do
90
+ describe "#writer" do
91
+ it "writes" do
94
92
  assert_equal raw.size, write_path.writer { |io| io.write(raw) }
95
93
  assert write_path.exist?
96
94
  assert_equal raw, write_path.read
97
95
  end
98
96
  end
99
97
 
100
- describe '#each_line' do
101
- it 'reads line by line' do
98
+ describe "#each_line" do
99
+ it "reads line by line" do
102
100
  lines = []
103
- existing_path.each(:line) {|line| lines << line}
101
+ existing_path.each(:line) { |line| lines << line }
104
102
  assert_equal raw.lines.collect(&:chomp), lines
105
103
  end
106
104
  end
107
105
 
108
- describe '#each_child' do
106
+ describe "#each_child" do
109
107
  # TODO: case_sensitive: false, directories: false, hidden: false
110
108
  let(:abd_file_names) { %w[abd/test1.txt abd/test5.file abd/extra/file.csv] }
111
109
  let(:files_for_test) { abd_file_names + %w[xyz/test2.csv xyz/another.csv] }
112
110
 
113
111
  let :each_root do
114
- root_path.join('each_child_test')
112
+ root_path.join("each_child_test")
115
113
  end
116
114
 
117
115
  let :multiple_paths do
@@ -122,37 +120,37 @@ module Paths
122
120
  multiple_paths.each { |path| path.write(raw) unless path.exist? }
123
121
  end
124
122
 
125
- it 'existing file returns just the file itself' do
123
+ it "existing file returns just the file itself" do
126
124
  # Glorified exists call
127
125
  existing_path
128
126
  assert_equal root_path.join("test.txt").to_s, root_path.children("test.txt").first.to_s
129
127
  end
130
128
 
131
- it 'missing file does nothing' do
129
+ it "missing file does nothing" do
132
130
  # Glorified exists call
133
131
  assert_equal [], missing_path.children("readme").collect(&:to_s)
134
132
  end
135
133
 
136
- it 'returns all the children' do
134
+ it "returns all the children" do
137
135
  write_raw_data
138
136
  assert_equal multiple_paths.collect(&:to_s).sort, each_root.children("**/*").collect(&:to_s).sort
139
137
  end
140
138
 
141
- it 'returns all the children under a sub-dir' do
139
+ it "returns all the children under a sub-dir" do
142
140
  write_raw_data
143
141
  expected = abd_file_names.collect { |file_name| each_root.join(file_name) }
144
142
  assert_equal expected.collect(&:to_s).sort, each_root.children("abd/*").collect(&:to_s).sort
145
143
  end
146
144
 
147
- it 'missing path' do
145
+ it "missing path" do
148
146
  count = 0
149
147
  missing_path.each_child { |_| count += 1 }
150
148
  assert_equal 0, count
151
149
  end
152
150
 
153
151
  # Test is here since all the test artifacts have been created already in S3.
154
- describe 'IOStreams.each_child' do
155
- it 'returns all the children' do
152
+ describe "IOStreams.each_child" do
153
+ it "returns all the children" do
156
154
  write_raw_data
157
155
  children = []
158
156
  IOStreams.each_child(each_root.join("**/*").to_s) { |child| children << child }
@@ -161,8 +159,8 @@ module Paths
161
159
  end
162
160
  end
163
161
 
164
- describe '#move_to' do
165
- it 'moves existing file' do
162
+ describe "#move_to" do
163
+ it "moves existing file" do
166
164
  source = root_path.join("move_test_source.txt")
167
165
  begin
168
166
  source.write("Hello World")
@@ -179,7 +177,7 @@ module Paths
179
177
  end
180
178
  end
181
179
 
182
- it 'missing source file' do
180
+ it "missing source file" do
183
181
  source = root_path.join("move_test_source.txt")
184
182
  refute source.exist?
185
183
  begin
@@ -194,7 +192,7 @@ module Paths
194
192
  end
195
193
  end
196
194
 
197
- it 'missing target directories' do
195
+ it "missing target directories" do
198
196
  source = root_path.join("move_test_source.txt")
199
197
  begin
200
198
  source.write("Hello World")
@@ -212,8 +210,8 @@ module Paths
212
210
  end
213
211
  end
214
212
 
215
- describe '#partial_files_visible?' do
216
- it 'visible only after upload' do
213
+ describe "#partial_files_visible?" do
214
+ it "visible only after upload" do
217
215
  refute root_path.partial_files_visible?
218
216
  end
219
217
  end