rfd 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/rfd.gemspec +7 -4
- metadata +29 -51
- data/spec/controller_spec.rb +0 -439
- data/spec/spec_helper.rb +0 -7
- data/spec/support/capture_helper.rb +0 -22
- data/spec/testdir/.file1 +0 -0
- data/spec/testdir/.file2 +0 -0
- data/spec/testdir/.file3 +0 -0
- data/spec/testdir/.link1 +0 -1
- data/spec/testdir/dir1/.keep +0 -0
- data/spec/testdir/dir2/.keep +0 -0
- data/spec/testdir/dir3/.keep +0 -0
- data/spec/testdir/dirlink1 +0 -1
- data/spec/testdir/file1 +0 -1
- data/spec/testdir/file2 +0 -0
- data/spec/testdir/file3 +0 -0
- data/spec/testdir/gz1.tar.gz +0 -0
- data/spec/testdir/link1 +0 -1
- data/spec/testdir/link2 +0 -1
- data/spec/testdir/zip1.zip +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2d3f9431d82b51b60a0202b8715d7c70258127130a1006f1467bfb024a729cf9
|
|
4
|
+
data.tar.gz: 998e2b8409539ef0f2a0dcc9f50d39d8d200530a8a729020585ea627bc53d090
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 619e350f6ab323070af91f516591659da3ebb5abe3a27780ce63644200cf171667bdba5ab4dfd1ccbfa3bcfa7c9a482c9f76d7eb154232124ac3bc2428cc4835
|
|
7
|
+
data.tar.gz: b75b5c0ea0fea5daf59ec6dec75fbee332432cceae5ddd65f31d777ee4d485f1f47b1cd14239e644d532779eb6b52b6ff323cd110093f252d77cf49072a07617
|
data/rfd.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "rfd"
|
|
8
|
-
spec.version = '0.7.
|
|
8
|
+
spec.version = '0.7.1'
|
|
9
9
|
spec.authors = ["Akira Matsuda"]
|
|
10
10
|
spec.email = ["ronnie@dio.jp"]
|
|
11
11
|
spec.description = 'A Ruby filer that runs on terminal'
|
|
@@ -13,7 +13,9 @@ Gem::Specification.new do |spec|
|
|
|
13
13
|
spec.homepage = 'https://github.com/amatsuda/rfd'
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
16
|
-
spec.files =
|
|
16
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
17
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
18
|
+
end
|
|
17
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
21
|
spec.require_paths = ["lib"]
|
|
@@ -21,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
21
23
|
spec.add_dependency 'curses', '>= 1.0.0'
|
|
22
24
|
spec.add_dependency 'rubyzip', '>= 1.0.0'
|
|
23
25
|
spec.add_development_dependency 'bundler'
|
|
24
|
-
spec.add_development_dependency "rake"
|
|
25
|
-
spec.add_development_dependency 'rspec'
|
|
26
|
+
spec.add_development_dependency "rake"
|
|
27
|
+
spec.add_development_dependency 'rspec'
|
|
28
|
+
spec.add_development_dependency 'rspec-its'
|
|
26
29
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rfd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Akira Matsuda
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-12-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: curses
|
|
@@ -56,30 +56,44 @@ dependencies:
|
|
|
56
56
|
name: rake
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
68
|
+
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rspec
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - "
|
|
73
|
+
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
75
|
+
version: '0'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - "
|
|
80
|
+
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rspec-its
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
83
97
|
description: A Ruby filer that runs on terminal
|
|
84
98
|
email:
|
|
85
99
|
- ronnie@dio.jp
|
|
@@ -100,29 +114,11 @@ files:
|
|
|
100
114
|
- lib/rfd/logging.rb
|
|
101
115
|
- lib/rfd/windows.rb
|
|
102
116
|
- rfd.gemspec
|
|
103
|
-
- spec/controller_spec.rb
|
|
104
|
-
- spec/spec_helper.rb
|
|
105
|
-
- spec/support/capture_helper.rb
|
|
106
|
-
- spec/testdir/.file1
|
|
107
|
-
- spec/testdir/.file2
|
|
108
|
-
- spec/testdir/.file3
|
|
109
|
-
- spec/testdir/.link1
|
|
110
|
-
- spec/testdir/dir1/.keep
|
|
111
|
-
- spec/testdir/dir2/.keep
|
|
112
|
-
- spec/testdir/dir3/.keep
|
|
113
|
-
- spec/testdir/dirlink1
|
|
114
|
-
- spec/testdir/file1
|
|
115
|
-
- spec/testdir/file2
|
|
116
|
-
- spec/testdir/file3
|
|
117
|
-
- spec/testdir/gz1.tar.gz
|
|
118
|
-
- spec/testdir/link1
|
|
119
|
-
- spec/testdir/link2
|
|
120
|
-
- spec/testdir/zip1.zip
|
|
121
117
|
homepage: https://github.com/amatsuda/rfd
|
|
122
118
|
licenses:
|
|
123
119
|
- MIT
|
|
124
120
|
metadata: {}
|
|
125
|
-
post_install_message:
|
|
121
|
+
post_install_message:
|
|
126
122
|
rdoc_options: []
|
|
127
123
|
require_paths:
|
|
128
124
|
- lib
|
|
@@ -137,26 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
137
133
|
- !ruby/object:Gem::Version
|
|
138
134
|
version: '0'
|
|
139
135
|
requirements: []
|
|
140
|
-
rubygems_version: 3.0.
|
|
141
|
-
signing_key:
|
|
136
|
+
rubygems_version: 3.5.0.dev
|
|
137
|
+
signing_key:
|
|
142
138
|
specification_version: 4
|
|
143
139
|
summary: Ruby on Files & Directories
|
|
144
|
-
test_files:
|
|
145
|
-
- spec/controller_spec.rb
|
|
146
|
-
- spec/spec_helper.rb
|
|
147
|
-
- spec/support/capture_helper.rb
|
|
148
|
-
- spec/testdir/.file1
|
|
149
|
-
- spec/testdir/.file2
|
|
150
|
-
- spec/testdir/.file3
|
|
151
|
-
- spec/testdir/.link1
|
|
152
|
-
- spec/testdir/dir1/.keep
|
|
153
|
-
- spec/testdir/dir2/.keep
|
|
154
|
-
- spec/testdir/dir3/.keep
|
|
155
|
-
- spec/testdir/dirlink1
|
|
156
|
-
- spec/testdir/file1
|
|
157
|
-
- spec/testdir/file2
|
|
158
|
-
- spec/testdir/file3
|
|
159
|
-
- spec/testdir/gz1.tar.gz
|
|
160
|
-
- spec/testdir/link1
|
|
161
|
-
- spec/testdir/link2
|
|
162
|
-
- spec/testdir/zip1.zip
|
|
140
|
+
test_files: []
|
data/spec/controller_spec.rb
DELETED
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'rfd'
|
|
4
|
-
|
|
5
|
-
describe Rfd::Controller do
|
|
6
|
-
include CaptureHelper
|
|
7
|
-
|
|
8
|
-
around do |example|
|
|
9
|
-
@stdout = capture(:stdout) do
|
|
10
|
-
FileUtils.cp_r File.join(__dir__, 'testdir'), tmpdir
|
|
11
|
-
@rfd = Rfd.start tmpdir
|
|
12
|
-
def (@rfd.main).maxy
|
|
13
|
-
3
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
example.run
|
|
17
|
-
|
|
18
|
-
FileUtils.rm_r tmpdir
|
|
19
|
-
Dir.chdir __dir__
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
after :all do
|
|
24
|
-
Curses.close_screen
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
let(:tmpdir) { File.join __dir__, 'tmpdir' }
|
|
28
|
-
let!(:controller) { @rfd }
|
|
29
|
-
subject { controller }
|
|
30
|
-
let(:items) { controller.items }
|
|
31
|
-
|
|
32
|
-
describe '#spawn_panes' do
|
|
33
|
-
before { controller.spawn_panes 3 }
|
|
34
|
-
|
|
35
|
-
subject { controller.main.instance_variable_get :@number_of_panes }
|
|
36
|
-
it { should == 3 }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe '#current_item' do
|
|
40
|
-
before do
|
|
41
|
-
controller.instance_variable_set :@current_row, 3
|
|
42
|
-
end
|
|
43
|
-
its(:current_item) { should == items[3] }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe '#marked_items' do
|
|
47
|
-
before do
|
|
48
|
-
items[2].toggle_mark
|
|
49
|
-
items[3].toggle_mark
|
|
50
|
-
end
|
|
51
|
-
its(:marked_items) { should == [items[2], items[3]] }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe '#selected_items' do
|
|
55
|
-
context 'When no items were marked' do
|
|
56
|
-
context 'When the cursor is on . or ..' do
|
|
57
|
-
its(:selected_items) { should be_empty }
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
context 'When the cursor is not on . nor ..' do
|
|
61
|
-
before do
|
|
62
|
-
controller.instance_variable_set :@current_row, 5
|
|
63
|
-
end
|
|
64
|
-
its(:selected_items) { should == [items[5]] }
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
context 'When items were marked' do
|
|
68
|
-
before do
|
|
69
|
-
items[2].toggle_mark
|
|
70
|
-
items[4].toggle_mark
|
|
71
|
-
end
|
|
72
|
-
its(:selected_items) { should == [items[2], items[4]] }
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
describe '#move_cursor' do
|
|
77
|
-
context 'When moving to nil' do
|
|
78
|
-
before do
|
|
79
|
-
controller.move_cursor nil
|
|
80
|
-
end
|
|
81
|
-
its(:current_row) { should == 0 }
|
|
82
|
-
end
|
|
83
|
-
context 'When moving to a certain row' do
|
|
84
|
-
before do
|
|
85
|
-
controller.move_cursor 2
|
|
86
|
-
end
|
|
87
|
-
its(:current_row) { should == 2 }
|
|
88
|
-
|
|
89
|
-
context 'When moving to the second pane' do
|
|
90
|
-
before do
|
|
91
|
-
controller.move_cursor 5
|
|
92
|
-
end
|
|
93
|
-
subject { controller.main.instance_variable_get :@current_index }
|
|
94
|
-
it { should == 1 }
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context 'When moving to the second page' do
|
|
98
|
-
before do
|
|
99
|
-
controller.move_cursor 7
|
|
100
|
-
end
|
|
101
|
-
its(:current_page) { should == 1 }
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
describe '#cd' do
|
|
107
|
-
before do
|
|
108
|
-
controller.cd 'dir1'
|
|
109
|
-
end
|
|
110
|
-
its('current_dir.path') { should == File.join(tmpdir, 'dir1') }
|
|
111
|
-
|
|
112
|
-
describe '#popd' do
|
|
113
|
-
before do
|
|
114
|
-
controller.popd
|
|
115
|
-
end
|
|
116
|
-
its('current_dir.path') { should == tmpdir }
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
describe '#ls' do
|
|
121
|
-
before do
|
|
122
|
-
controller.instance_variable_set :@items, []
|
|
123
|
-
controller.ls
|
|
124
|
-
end
|
|
125
|
-
its(:items) { should_not be_empty }
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe '#sort' do
|
|
129
|
-
let(:item) do
|
|
130
|
-
Dir.mkdir File.join(tmpdir, '.a')
|
|
131
|
-
stat = File.lstat File.join(tmpdir, '.a')
|
|
132
|
-
Rfd::Item.new dir: tmpdir, name: '.a', stat: stat, window_width: 100
|
|
133
|
-
end
|
|
134
|
-
before do
|
|
135
|
-
controller.items << item
|
|
136
|
-
controller.sort
|
|
137
|
-
end
|
|
138
|
-
subject { item }
|
|
139
|
-
its(:index) { should == 2 } # . .. then next
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
describe '#chmod' do
|
|
143
|
-
let(:item) { controller.items.detect {|i| !i.directory?} }
|
|
144
|
-
|
|
145
|
-
context 'With an octet string' do
|
|
146
|
-
before do
|
|
147
|
-
item.toggle_mark
|
|
148
|
-
controller.chmod '666'
|
|
149
|
-
end
|
|
150
|
-
subject { controller.items.detect {|i| !i.directory?} }
|
|
151
|
-
its(:mode) { should == '-rw-rw-rw-' }
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
context 'With a decimal string' do
|
|
155
|
-
before do
|
|
156
|
-
item.toggle_mark
|
|
157
|
-
controller.chmod '0666'
|
|
158
|
-
end
|
|
159
|
-
subject { controller.items.detect {|i| !i.directory?} }
|
|
160
|
-
its(:mode) { should == '-rw-rw-rw-' }
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
context 'With a non-numeric string' do
|
|
164
|
-
before do
|
|
165
|
-
item.toggle_mark
|
|
166
|
-
controller.chmod 'a+w'
|
|
167
|
-
end
|
|
168
|
-
subject { controller.items.detect {|i| !i.directory?} }
|
|
169
|
-
its(:mode) { should == '-rw-rw-rw-' }
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
describe '#chown' do
|
|
174
|
-
let(:item) { controller.items.detect {|i| !i.directory?} }
|
|
175
|
-
subject { item }
|
|
176
|
-
|
|
177
|
-
context 'With user name only' do
|
|
178
|
-
before do
|
|
179
|
-
expect(FileUtils).to receive(:chown).with('alice', nil, Array(item.path))
|
|
180
|
-
item.toggle_mark
|
|
181
|
-
end
|
|
182
|
-
specify { controller.chown 'alice' }
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
context 'With group name only' do
|
|
186
|
-
before do
|
|
187
|
-
expect(FileUtils).to receive(:chown).with(nil, 'admin', Array(item.path))
|
|
188
|
-
item.toggle_mark
|
|
189
|
-
end
|
|
190
|
-
specify { controller.chown ':admin' }
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
context 'With both user name and group name' do
|
|
194
|
-
before do
|
|
195
|
-
expect(FileUtils).to receive(:chown).with('nobody', 'nobody', Array(item.path))
|
|
196
|
-
item.toggle_mark
|
|
197
|
-
end
|
|
198
|
-
specify { controller.chown 'nobody:nobody' }
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
describe '#find' do
|
|
203
|
-
before do
|
|
204
|
-
controller.find 'd'
|
|
205
|
-
end
|
|
206
|
-
its('current_item.name') { should start_with('d') }
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
describe '#find_reverse' do
|
|
210
|
-
before do
|
|
211
|
-
controller.find_reverse 'f'
|
|
212
|
-
end
|
|
213
|
-
its('current_item.name') { should == 'file3' }
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
describe '#grep' do
|
|
217
|
-
before do
|
|
218
|
-
controller.grep 'dir'
|
|
219
|
-
end
|
|
220
|
-
subject { controller.items[2..-1] }
|
|
221
|
-
its(:size) { should be > 2 }
|
|
222
|
-
it "all items' name should include 'dir'" do
|
|
223
|
-
subject.all? {|i| i.name.should include('dir')}
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
describe '#cp' do
|
|
228
|
-
before do
|
|
229
|
-
controller.find 'file1'
|
|
230
|
-
controller.cp 'file4'
|
|
231
|
-
end
|
|
232
|
-
it 'should be the same file as the copy source file' do
|
|
233
|
-
File.read(File.join(tmpdir, 'file1')).should == File.read(File.join(tmpdir, 'file4'))
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
describe '#mv' do
|
|
238
|
-
before do
|
|
239
|
-
controller.find 'file3'
|
|
240
|
-
controller.mv 'dir2'
|
|
241
|
-
end
|
|
242
|
-
subject { File }
|
|
243
|
-
it { should be_exist File.join(tmpdir, 'dir2/file3') }
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
describe '#rename' do
|
|
247
|
-
before do
|
|
248
|
-
controller.find '.file2'
|
|
249
|
-
controller.toggle_mark
|
|
250
|
-
controller.find 'file3'
|
|
251
|
-
controller.toggle_mark
|
|
252
|
-
controller.rename 'fi/faaai'
|
|
253
|
-
end
|
|
254
|
-
subject { File }
|
|
255
|
-
it { should be_exist File.join(tmpdir, '.faaaile2') }
|
|
256
|
-
it { should be_exist File.join(tmpdir, 'faaaile3') }
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
describe '#trash' do
|
|
260
|
-
before do
|
|
261
|
-
controller.find 'file3'
|
|
262
|
-
controller.toggle_mark
|
|
263
|
-
controller.trash
|
|
264
|
-
end
|
|
265
|
-
it 'should be properly deleted from the current directory' do
|
|
266
|
-
controller.items.should be_none {|i| i.name == 'file3'}
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
describe '#delete' do
|
|
271
|
-
before do
|
|
272
|
-
controller.find 'file3'
|
|
273
|
-
controller.toggle_mark
|
|
274
|
-
controller.find 'dir2'
|
|
275
|
-
controller.toggle_mark
|
|
276
|
-
controller.delete
|
|
277
|
-
end
|
|
278
|
-
it 'should be properly deleted from the current directory' do
|
|
279
|
-
controller.items.should be_none {|i| i.name == 'file3'}
|
|
280
|
-
controller.items.should be_none {|i| i.name == 'dir2'}
|
|
281
|
-
end
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
describe '#mkdir' do
|
|
285
|
-
before do
|
|
286
|
-
controller.mkdir 'aho'
|
|
287
|
-
end
|
|
288
|
-
subject { Dir }
|
|
289
|
-
it { should be_exist File.join(tmpdir, 'aho') }
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
describe '#touch' do
|
|
293
|
-
before do
|
|
294
|
-
controller.touch 'fuga'
|
|
295
|
-
end
|
|
296
|
-
subject { File }
|
|
297
|
-
it { should be_exist File.join(tmpdir, 'fuga') }
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
describe '#symlink' do
|
|
301
|
-
before do
|
|
302
|
-
controller.find 'dir1'
|
|
303
|
-
controller.symlink 'aaa'
|
|
304
|
-
end
|
|
305
|
-
subject { File }
|
|
306
|
-
it { should be_symlink File.join(tmpdir, 'aaa') }
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
describe '#yank' do
|
|
310
|
-
before do
|
|
311
|
-
controller.find '.file1'
|
|
312
|
-
controller.toggle_mark
|
|
313
|
-
controller.find 'dir3'
|
|
314
|
-
controller.toggle_mark
|
|
315
|
-
controller.yank
|
|
316
|
-
end
|
|
317
|
-
it 'should be yanked' do
|
|
318
|
-
controller.instance_variable_get(:@yanked_items).map(&:name).should =~ %w(.file1 dir3)
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
describe '#paste' do
|
|
323
|
-
before do
|
|
324
|
-
controller.find '.file1'
|
|
325
|
-
controller.toggle_mark
|
|
326
|
-
controller.find 'dir3'
|
|
327
|
-
controller.toggle_mark
|
|
328
|
-
controller.yank
|
|
329
|
-
end
|
|
330
|
-
context 'when the cursor is on a directory' do
|
|
331
|
-
before do
|
|
332
|
-
controller.find 'dir1'
|
|
333
|
-
controller.paste
|
|
334
|
-
end
|
|
335
|
-
subject { File }
|
|
336
|
-
it { should be_exist File.join(tmpdir, 'dir1', '.file1') }
|
|
337
|
-
it { should be_exist File.join(tmpdir, 'dir1', 'dir3') }
|
|
338
|
-
end
|
|
339
|
-
context 'when the cursor is on a file' do
|
|
340
|
-
before do
|
|
341
|
-
controller.find 'file2'
|
|
342
|
-
controller.paste
|
|
343
|
-
end
|
|
344
|
-
subject { File }
|
|
345
|
-
it { should be_exist File.join(tmpdir, '.file1_2') }
|
|
346
|
-
it { should be_exist File.join(tmpdir, 'dir3_2') }
|
|
347
|
-
end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
if RbConfig::CONFIG['host_os'] =~ /darwin/
|
|
351
|
-
describe '#pbcopy' do
|
|
352
|
-
before do
|
|
353
|
-
controller.find '.file1'
|
|
354
|
-
controller.toggle_mark
|
|
355
|
-
controller.find 'dir3'
|
|
356
|
-
controller.toggle_mark
|
|
357
|
-
controller.clipboard
|
|
358
|
-
end
|
|
359
|
-
it 'copies the selected paths into clipboard' do
|
|
360
|
-
`pbpaste`.should == "#{File.join(tmpdir, 'dir3')} #{File.join(tmpdir, '.file1')}"
|
|
361
|
-
end
|
|
362
|
-
end
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
describe '#zip' do
|
|
366
|
-
before do
|
|
367
|
-
controller.find 'dir1'
|
|
368
|
-
controller.zip 'archive1'
|
|
369
|
-
end
|
|
370
|
-
subject { File }
|
|
371
|
-
it { should be_exist File.join(tmpdir, 'archive1.zip') }
|
|
372
|
-
end
|
|
373
|
-
|
|
374
|
-
describe '#unarchive' do
|
|
375
|
-
before do
|
|
376
|
-
controller.find 'zip1'
|
|
377
|
-
controller.toggle_mark
|
|
378
|
-
controller.find 'gz1'
|
|
379
|
-
controller.toggle_mark
|
|
380
|
-
controller.unarchive
|
|
381
|
-
end
|
|
382
|
-
subject { File }
|
|
383
|
-
it { should be_exist File.join(tmpdir, 'zip1/zip_content1') }
|
|
384
|
-
it { should be_exist File.join(tmpdir, 'zip1/zip_content_dir1/zip_content1_1') }
|
|
385
|
-
it { should be_exist File.join(tmpdir, 'gz1/gz_content1') }
|
|
386
|
-
it { should be_exist File.join(tmpdir, 'gz1/gz_content_dir1/gz_content1_1') }
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
describe '#first_page? and #last_page?' do
|
|
390
|
-
context 'When on the first page' do
|
|
391
|
-
it { should be_first_page }
|
|
392
|
-
it { should_not be_last_page }
|
|
393
|
-
end
|
|
394
|
-
context 'When on the first page' do
|
|
395
|
-
before do
|
|
396
|
-
controller.k
|
|
397
|
-
end
|
|
398
|
-
it { should_not be_first_page }
|
|
399
|
-
it { should be_last_page }
|
|
400
|
-
end
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
describe '#total_pages' do
|
|
404
|
-
its(:total_pages) { should == 3 } # 15 / (3 * 2) + 1
|
|
405
|
-
end
|
|
406
|
-
|
|
407
|
-
describe '#switch_page' do
|
|
408
|
-
before do
|
|
409
|
-
controller.switch_page 2
|
|
410
|
-
end
|
|
411
|
-
its(:current_page) { should == 2 }
|
|
412
|
-
end
|
|
413
|
-
|
|
414
|
-
describe '#toggle_mark' do
|
|
415
|
-
before do
|
|
416
|
-
controller.move_cursor 10
|
|
417
|
-
controller.toggle_mark
|
|
418
|
-
end
|
|
419
|
-
subject { items[10] }
|
|
420
|
-
it { should be_marked }
|
|
421
|
-
end
|
|
422
|
-
|
|
423
|
-
describe 'times' do
|
|
424
|
-
subject { controller.times }
|
|
425
|
-
context 'before accepting 0-9' do
|
|
426
|
-
it { should == 1 }
|
|
427
|
-
end
|
|
428
|
-
context 'When 0-9 were typed' do
|
|
429
|
-
before do
|
|
430
|
-
controller.public_send '3'
|
|
431
|
-
controller.public_send '7'
|
|
432
|
-
end
|
|
433
|
-
after do
|
|
434
|
-
controller.instance_variable_set :@times, nil
|
|
435
|
-
end
|
|
436
|
-
it { should == 37 }
|
|
437
|
-
end
|
|
438
|
-
end
|
|
439
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'tempfile'
|
|
3
|
-
|
|
4
|
-
# copied from ActiveSupport 4
|
|
5
|
-
module CaptureHelper
|
|
6
|
-
def capture(stream)
|
|
7
|
-
stream = stream.to_s
|
|
8
|
-
captured_stream = Tempfile.new(stream)
|
|
9
|
-
stream_io = eval("$#{stream}")
|
|
10
|
-
origin_stream = stream_io.dup
|
|
11
|
-
stream_io.reopen(captured_stream)
|
|
12
|
-
|
|
13
|
-
yield
|
|
14
|
-
|
|
15
|
-
stream_io.rewind
|
|
16
|
-
return captured_stream.read
|
|
17
|
-
ensure
|
|
18
|
-
captured_stream.close
|
|
19
|
-
captured_stream.unlink
|
|
20
|
-
stream_io.reopen(origin_stream)
|
|
21
|
-
end
|
|
22
|
-
end
|
data/spec/testdir/.file1
DELETED
|
File without changes
|
data/spec/testdir/.file2
DELETED
|
File without changes
|
data/spec/testdir/.file3
DELETED
|
File without changes
|
data/spec/testdir/.link1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.file1
|
data/spec/testdir/dir1/.keep
DELETED
|
File without changes
|
data/spec/testdir/dir2/.keep
DELETED
|
File without changes
|
data/spec/testdir/dir3/.keep
DELETED
|
File without changes
|
data/spec/testdir/dirlink1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
spec/testdir/dir1
|
data/spec/testdir/file1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
file1
|
data/spec/testdir/file2
DELETED
|
File without changes
|
data/spec/testdir/file3
DELETED
|
File without changes
|
data/spec/testdir/gz1.tar.gz
DELETED
|
Binary file
|
data/spec/testdir/link1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
spec/testdir/file1
|
data/spec/testdir/link2
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
spec/testdir/file2
|
data/spec/testdir/zip1.zip
DELETED
|
Binary file
|