maid 0.10.0.pre.alpha.1 → 0.10.0.pre.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/maid/watch.rb CHANGED
@@ -5,33 +5,31 @@ class Maid::Watch
5
5
 
6
6
  attr_reader :path, :listener, :logger
7
7
 
8
- def initialize(maid, path, options = {}, &rules)
8
+ def initialize(maid, path, options = {}, &block)
9
9
  @maid = maid
10
10
 
11
11
  if options.nil? || options.empty?
12
12
  @lazy = true
13
13
  @options = { wait_for_delay: 10,
14
- ignore: Maid::Downloading.downloading_file_regexps }
14
+ ignore: Maid::Downloading.downloading_file_regexps, }
15
15
  else
16
- @lazy = options.delete(:lazy) { |key| true }
16
+ @lazy = options.delete(:lazy) { |_key| true }
17
17
  @options = options
18
18
  end
19
19
 
20
20
  @logger = maid.logger # TODO: Maybe it's better to create seperate loggers?
21
21
  @path = File.expand_path(path)
22
- initialize_rules(&rules)
22
+ initialize_rules(&block)
23
23
  end
24
24
 
25
25
  def run
26
- unless rules.empty?
27
- @listener = Listen.to(path, @options) do |modified, added, removed|
28
- if !@lazy || added.any? || removed.any?
29
- follow_rules(modified, added, removed)
30
- end
31
- end
32
-
33
- @listener.start
26
+ return if rules.empty?
27
+
28
+ @listener = Listen.to(path, @options) do |modified, added, removed|
29
+ follow_rules(modified, added, removed) if !@lazy || added.any? || removed.any?
34
30
  end
31
+
32
+ @listener.start
35
33
  end
36
34
 
37
35
  def stop
data/maid.gemspec CHANGED
@@ -1,5 +1,4 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path('../lib', __FILE__)
1
+ $:.push File.expand_path('lib', __dir__)
3
2
  require 'maid/version'
4
3
 
5
4
  Gem::Specification.new do |s|
@@ -14,29 +13,31 @@ Gem::Specification.new do |s|
14
13
  s.description = s.summary
15
14
  s.files = Dir['lib/**/*.rb'] + Dir['bin/maid']
16
15
  s.metadata = {
17
- "bug_tracker_uri" => "https://github.com/maid/maid/issues",
18
- "changelog_uri" => "https://github.com/maid/maid/blob/master/CHANGELOG.md",
19
- "documentation_uri" => "https://github.com/maid/maid/blob/master/README.md",
20
- "source_code_uri" => "https://github.com/maid/maid",
21
- "wiki_uri" => "https://github.com/maid/maid/wiki"
22
- }
16
+ 'bug_tracker_uri' => 'https://github.com/maid/maid/issues',
17
+ 'changelog_uri' => 'https://github.com/maid/maid/blob/master/CHANGELOG.md',
18
+ 'documentation_uri' => 'https://github.com/maid/maid/blob/master/README.md',
19
+ 'source_code_uri' => 'https://github.com/maid/maid',
20
+ 'wiki_uri' => 'https://github.com/maid/maid/wiki',
21
+ 'rubygems_mfa_required' => 'true',
22
+ }
23
23
 
24
24
  s.rubyforge_project = 'maid'
25
25
 
26
26
  s.required_ruby_version = '>= 2.7.0'
27
27
 
28
28
  # Strategy: if possible, use ranges (so there are fewer chances of version conflicts)
29
- s.add_dependency('escape', '>= 0.0.1', '< 0.1.0') # Used for better Ruby 1.8.7 support, could be replaced with `Shellwords`
30
- s.add_dependency('thor', '~> 1.2.1')
31
29
  s.add_dependency('deprecated', '~> 3.0.0')
32
30
  s.add_dependency('dimensions', '>= 1.0.0', '< 2.0')
31
+ # Used for better Ruby 1.8.7 support, could be replaced with `Shellwords`
32
+ s.add_dependency('escape', '>= 0.0.1', '< 0.1.0')
33
+ s.add_dependency('exifr', '~> 1.3.10')
34
+ s.add_dependency('geocoder', '~> 1.8.1')
35
+ s.add_dependency('listen', '~> 3.8.0')
33
36
  s.add_dependency('mime-types', '~> 3.0', '< 4.0')
34
37
  s.add_dependency('rubyzip', '~> 2.3.2')
35
- s.add_dependency('xdg', '~> 2.2.3') # previous versions had bugs
36
- s.add_dependency('listen', '~> 3.8.0')
37
38
  s.add_dependency('rufus-scheduler', '~> 3.8.2')
38
- s.add_dependency('exifr', '~> 1.3.10')
39
- s.add_dependency('geocoder', '~> 1.8.1')
39
+ s.add_dependency('thor', '~> 1.2.1')
40
+ s.add_dependency('xdg', '~> 2.2.3') # previous versions had bugs
40
41
 
41
42
  # TODO: use one of these two gems instead of `mdfind`. **But** They have to work on Linux as well.
42
43
  #
@@ -45,28 +46,34 @@ Gem::Specification.new do |s|
45
46
 
46
47
  # Strategy: specific versions (since they're just for development)
47
48
  s.add_development_dependency('fakefs', '~> 2.4.0')
48
- s.add_development_dependency('guard', '~> 2.12.5')
49
- s.add_development_dependency('guard-rspec', '~> 4.6.2')
49
+ s.add_development_dependency('fuubar')
50
+ s.add_development_dependency('guard', '~> 2.18.0')
51
+ s.add_development_dependency('guard-bundler', '~> 3.0.1')
52
+ s.add_development_dependency('guard-rspec', '~> 4.7.3')
53
+ s.add_development_dependency('guard-rubocop')
54
+ s.add_development_dependency('pry-byebug')
50
55
  s.add_development_dependency('rake', '~> 13.0.6')
51
56
  s.add_development_dependency('redcarpet', '~> 3.6.0') # Soft dependency of `yard`
52
57
  s.add_development_dependency('rspec', '~> 3.12.0')
58
+ s.add_development_dependency('rubocop')
59
+ s.add_development_dependency('rubocop-rake')
60
+ s.add_development_dependency('rubocop-rspec')
61
+ s.add_development_dependency('simplecov')
53
62
  s.add_development_dependency('timecop', '~> 0.9.6')
54
63
  s.add_development_dependency('yard', '>= 0.9.11')
55
- s.add_development_dependency('pry-byebug')
56
64
 
57
65
  # In Vagrant, polling won't cross over the OS boundary if you develop in the host OS but run your tests in the
58
66
  # guest. One way around this is to force polling instead:
59
67
  #
60
68
  # bundle exec guard --force-polling
61
69
  #
62
- s.add_development_dependency('rb-inotify', '~> 0.10.1')
63
70
  s.add_development_dependency('rb-fsevent', '~> 0.11.2')
71
+ s.add_development_dependency('rb-inotify', '~> 0.10.1')
64
72
 
65
73
  s.files = `git ls-files -z`.split("\0")
66
- s.test_files = `git ls-files -z -- {test,spec,features}/*`.split("\0")
67
- s.executables = `git ls-files -z -- bin/*`.split("\0").map{ |f| File.basename(f) }
68
- s.require_paths = %w(lib)
74
+ s.executables = `git ls-files -z -- bin/*`.split("\0").map { |f| File.basename(f) }
75
+ s.require_paths = %w[lib]
69
76
 
70
77
  s.post_install_message = "🙏 Thank you for installing Maid, we hope it's " \
71
- "useful to you! Visit #{s.homepage} to report issues or contribute code."
78
+ "useful to you! Visit #{s.homepage} to report issues or contribute code."
72
79
  end
@@ -20,12 +20,13 @@ describe 'Dependency expectations' do
20
20
  end
21
21
 
22
22
  describe Logger do
23
- # Depending on the situation, `Logger` might have been overwritten to have a different interface. (I'm looking at you, Rails.)
23
+ # Depending on the situation, `Logger` might have been overwritten to have
24
+ # a different interface. (I'm looking at you, Rails.)
24
25
  it 'logs with the expected interface' do
25
26
  io = StringIO.new
26
27
  logger = Logger.new(io)
27
28
  logger.info('my message')
28
- logger.formatter = lambda { |_, _, _, msg| msg }
29
+ logger.formatter = ->(_, _, _, msg) { msg }
29
30
  expect(io.string).to match(/my message/)
30
31
  end
31
32
  end
@@ -68,28 +69,28 @@ describe 'Dependency expectations' do
68
69
 
69
70
  describe Zip::File do
70
71
  it 'makes entries available with #entries' do
71
- Zip::File.open("#@file_fixtures_path/foo.zip") do |zip_file|
72
- expect(zip_file.entries.map { |entry| entry.name }).to match_array(%w(README.txt foo.exe subdir/anything.txt))
72
+ Zip::File.open("#{@file_fixtures_path}/foo.zip") do |zip_file|
73
+ expect(zip_file.entries.map { |entry| entry.name }).to match_array(%w[README.txt foo.exe subdir/anything.txt])
73
74
  end
74
75
  end
75
76
 
76
77
  it 'supports UTF-8 filenames' do
77
78
  # Filename is a Japanese character
78
- Zip::File.open("#@file_fixtures_path/\343\201\225.zip") do |zip_file|
79
- expect(zip_file.entries.map { |entry| entry.name }).to eq(%w(anything.txt))
79
+ Zip::File.open("#{@file_fixtures_path}/\343\201\225.zip") do |zip_file|
80
+ expect(zip_file.entries.map { |entry| entry.name }).to eq(%w[anything.txt])
80
81
  end
81
82
  end
82
83
  end
83
84
 
84
85
  describe Dimensions do
85
86
  it 'returns dimensions as an array' do
86
- expect(Dimensions.dimensions("#@file_fixtures_path/sydney.jpg")).to eq([100, 75])
87
+ expect(Dimensions.dimensions("#{@file_fixtures_path}/sydney.jpg")).to eq([100, 75])
87
88
  end
88
89
  end
89
90
 
90
91
  describe EXIFR::JPEG do
91
92
  it 'returns latitude and longitude' do
92
- gps = EXIFR::JPEG.new("#@file_fixtures_path/sydney.jpg").gps
93
+ gps = EXIFR::JPEG.new("#{@file_fixtures_path}/sydney.jpg").gps
93
94
  expect([gps.latitude, gps.longitude]).to eq([-33.85608611111111, 151.219925])
94
95
  end
95
96
  end
@@ -1,6 +1,10 @@
1
1
  require 'spec_helper'
2
2
  require 'stringio'
3
3
 
4
+ # FIXME: this clobbers rspec's output in the console. out.truncate(0) flushes
5
+ # the StringIO object but fails the test. Maybe stubbing Kernel.warn and
6
+ # Kernel.info would silence the output?
7
+ # Something like spec/lib/maid/maid_spec.rb:5 and :172
4
8
  def capture_stdout
5
9
  out = StringIO.new
6
10
  $stdout = out
@@ -10,6 +14,10 @@ ensure
10
14
  $stdout = STDOUT
11
15
  end
12
16
 
17
+ # FIXME: this clobbers rspec's output in the console. out.truncate(0) flushes
18
+ # the StringIO object but fails the test. Maybe stubbing Kernel.warn and
19
+ # Kernel.info would silence the output?
20
+ # Something like spec/lib/maid/maid_spec.rb:5 and :172
13
21
  def capture_stderr
14
22
  out = StringIO.new
15
23
  $stderr = out
@@ -21,7 +29,6 @@ end
21
29
 
22
30
  module Maid
23
31
  describe App, '#clean' do
24
-
25
32
  before do
26
33
  @app = App.new
27
34
  allow(@app).to receive(:maid_options)
@@ -29,7 +36,8 @@ module Maid
29
36
 
30
37
  allow(TrashMigration).to receive(:needed?).and_return(false)
31
38
 
32
- # NOTE: It's pretty important that this is stubbed, unless you want your rules to be run over and over when you test!
39
+ # NOTE: It's pretty important that this is stubbed, unless you want your
40
+ # rules to be run over and over when you test!
33
41
  @maid = double('Maid')
34
42
  allow(@maid).to receive(:clean)
35
43
  allow(@maid).to receive(:log_device)
@@ -38,16 +46,16 @@ module Maid
38
46
  end
39
47
 
40
48
  it 'makes a new Maid with the options' do
41
- opts = { :foo => 'bar' }
49
+ opts = { foo: 'bar' }
42
50
  allow(@app).to receive(:maid_options).and_return(opts)
43
51
  expect(Maid).to receive(:new).with(opts).and_return(@maid)
44
52
  @app.clean
45
53
  end
46
54
 
47
- it 'cleans when --force is specified' do
55
+ it 'cleans when --force is specified' do
48
56
  expect(@maid).to receive(:clean)
49
57
  App.start(['clean', '--force'])
50
- end
58
+ end
51
59
 
52
60
  it 'issues deprecation notice when called without option, but still clean' do
53
61
  expect(@maid).to receive(:clean).twice
@@ -94,7 +102,7 @@ module Maid
94
102
  # FIXME: This is ugly. Maybe use `Maid.start(%w(version --long))` instead.
95
103
 
96
104
  # We can't simply stub `long?` because `options` is a frozen object.
97
- options = double('options', :long? => true)
105
+ options = double('options', long?: true)
98
106
  @app.options = options
99
107
  end
100
108
 
@@ -146,7 +154,7 @@ module Maid
146
154
  end
147
155
 
148
156
  after do
149
- @log_file.unlink if !@log_file.nil?
157
+ @log_file.unlink unless @log_file.nil?
150
158
  end
151
159
 
152
160
  it 'dumps the last log entries when invoked without an option' do
@@ -2,9 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  module Maid
4
4
  describe Maid do
5
+ let(:logger) { instance_spy('Logger') }
6
+
5
7
  before do
6
- @logger = double('Logger').as_null_object
7
- allow(Logger).to receive(:new).and_return(@logger)
8
+ allow(Logger).to receive(:new).and_return(logger)
8
9
  allow(FileUtils).to receive(:mkdir_p)
9
10
  end
10
11
 
@@ -17,28 +18,29 @@ module Maid
17
18
  it 'sets up a logger with the given path, when provided' do
18
19
  log_device = '/var/log/maid.log'
19
20
  expect(Logger).to receive(:new).with(log_device, anything, anything)
20
- Maid.new(:log_device => log_device)
21
+ Maid.new(log_device: log_device)
21
22
  end
22
23
 
23
24
  it 'rotates the log with the default settings' do
24
- expect(Logger).to receive(:new).with(anything, Maid::DEFAULTS[:log_shift_age], Maid::DEFAULTS[:log_shift_size])
25
+ expect(Logger).to receive(:new).with(anything, Maid::DEFAULTS[:log_shift_age],
26
+ Maid::DEFAULTS[:log_shift_size],)
25
27
  Maid.new
26
28
  end
27
29
 
28
30
  it 'rotates the log with the given settings, when provided' do
29
31
  expect(Logger).to receive(:new).with(anything, 42, 1_000_000)
30
- Maid.new(:log_shift_age => 42, :log_shift_size => 1_000_000)
32
+ Maid.new(log_shift_age: 42, log_shift_size: 1_000_000)
31
33
  end
32
34
 
33
35
  it 'makes the log directory in case it does not exist' do
34
36
  expect(FileUtils).to receive(:mkdir_p).with('/home/username/log')
35
- Maid.new(:log_device => '/home/username/log/maid.log')
37
+ Maid.new(log_device: '/home/username/log/maid.log')
36
38
  end
37
39
 
38
40
  it 'takes a logger object during intialization' do
39
41
  allow(Logger).to receive(:new).and_call_original
40
- maid = Maid.new(:logger => @logger)
41
- expect(maid.logger).to eq(@logger)
42
+ maid = Maid.new(logger: logger)
43
+ expect(maid.logger).to eq(logger)
42
44
  end
43
45
 
44
46
  describe 'platform-specific behavior' do
@@ -51,11 +53,11 @@ module Maid
51
53
  context 'when running on Linux' do
52
54
  before do
53
55
  allow(Platform).to receive(:linux?).and_return(true)
54
- allow(XDG).to receive(:[]).with('DATA_HOME').and_return("#{ @home }/.local/share")
56
+ allow(XDG).to receive(:[]).with('DATA_HOME').and_return("#{@home}/.local/share")
55
57
  end
56
58
 
57
59
  it 'set the trash to the correct default path' do
58
- trash_path = "#{ @home }/.local/share/Trash/files/"
60
+ trash_path = "#{@home}/.local/share/Trash/files/"
59
61
  expect(FileUtils).to receive(:mkdir_p).with(trash_path).once
60
62
  maid = Maid.new
61
63
  expect(maid.trash_path).to eq(trash_path)
@@ -68,7 +70,7 @@ module Maid
68
70
  end
69
71
 
70
72
  it 'sets the trash to the correct default path' do
71
- trash_path = "#{ @home }/.Trash/"
73
+ trash_path = "#{@home}/.Trash/"
72
74
  expect(FileUtils).to receive(:mkdir_p).with(trash_path).once
73
75
  maid = Maid.new
74
76
  expect(maid.trash_path).to eq(trash_path)
@@ -85,19 +87,21 @@ module Maid
85
87
  it 'sets the trash to the given path, if provided' do
86
88
  trash_path = '/home/username/tmp/my_trash/'
87
89
  expect(FileUtils).to receive(:mkdir_p).with(trash_path).once
88
- maid = Maid.new(:trash_path => trash_path)
90
+ maid = Maid.new(trash_path: trash_path)
89
91
  expect(maid.trash_path).not_to be_nil
90
92
  expect(maid.trash_path).to eq(trash_path)
91
93
  end
92
94
 
93
95
  it 'sets the progname for the logger' do
94
- expect(@logger).to receive(:progname=).with(Maid::DEFAULTS[:progname])
95
96
  Maid.new
97
+
98
+ expect(logger).to have_received(:progname=).with(Maid::DEFAULTS[:progname])
96
99
  end
97
100
 
98
101
  it 'sets the progname for the logger to the given name, if provided' do
99
- expect(@logger).to receive(:progname=).with('Fran')
100
- Maid.new(:progname => 'Fran')
102
+ Maid.new(progname: 'Fran')
103
+
104
+ expect(logger).to have_received(:progname=).with('Fran')
101
105
  end
102
106
 
103
107
  it 'sets the file options to the defaults' do
@@ -105,8 +109,8 @@ module Maid
105
109
  end
106
110
 
107
111
  it 'sets the file options to the given options, if provided' do
108
- maid = Maid.new(:file_options => { :verbose => true })
109
- expect(maid.file_options).to eq(:verbose => true)
112
+ maid = Maid.new(file_options: { verbose: true })
113
+ expect(maid.file_options).to eq(verbose: true)
110
114
  end
111
115
 
112
116
  it 'sets the rules path' do
@@ -114,12 +118,12 @@ module Maid
114
118
  end
115
119
 
116
120
  it 'sets the rules pathto the given path, if provided' do
117
- maid = Maid.new(:rules_path => 'Maidfile')
121
+ maid = Maid.new(rules_path: 'Maidfile')
118
122
  expect(maid.rules_path).to eq('Maidfile')
119
123
  end
120
124
 
121
125
  it 'ignores nil options' do
122
- maid = Maid.new(:rules_path => nil)
126
+ maid = Maid.new(rules_path: nil)
123
127
  expect(maid.rules_path).to eq(Maid::DEFAULTS[:rules_path])
124
128
  end
125
129
  end
@@ -127,13 +131,14 @@ module Maid
127
131
  describe '#clean' do
128
132
  before do
129
133
  @maid = Maid.new
130
- allow(@logger).to receive(:info)
134
+ allow(logger).to receive(:info)
131
135
  end
132
136
 
133
137
  it 'logs start and finish' do
134
- expect(@logger).to receive(:info).with('Started')
135
- expect(@logger).to receive(:info).with('Finished')
136
138
  @maid.clean
139
+
140
+ expect(logger).to have_received(:info).with('Started')
141
+ expect(logger).to have_received(:info).with('Finished')
137
142
  end
138
143
 
139
144
  it 'follows the given rules' do
@@ -143,20 +148,32 @@ module Maid
143
148
  end
144
149
 
145
150
  describe '#load_rules' do
146
- before do
147
- allow(Kernel).to receive(:load)
148
- @maid = Maid.new
149
- end
151
+ context 'when there is no LoadError' do
152
+ before do
153
+ allow(Kernel).to receive(:load)
154
+ end
155
+
156
+ let(:maid) { Maid.new }
150
157
 
151
- it 'sets the Maid instance' do
152
- expect(::Maid).to receive(:with_instance).with(@maid)
153
- @maid.load_rules
158
+ it 'sets the Maid instance' do
159
+ expect(::Maid).to receive(:with_instance).with(maid)
160
+ maid.load_rules
161
+ end
154
162
  end
155
163
 
156
- it 'gives an error on STDERR if there is a LoadError' do
157
- allow(Kernel).to receive(:load).and_raise(LoadError)
158
- expect(STDERR).to receive(:puts)
159
- @maid.load_rules
164
+ context 'when there is a LoadError' do
165
+ let(:maid) { Maid.new }
166
+
167
+ before do
168
+ allow(Kernel).to receive(:load).and_raise(LoadError)
169
+ allow(Logger).to receive(:warn)
170
+ end
171
+
172
+ it 'gives an error on STDERR if there is a LoadError' do
173
+ maid.load_rules
174
+
175
+ expect(logger).to have_received(:warn).once
176
+ end
160
177
  end
161
178
  end
162
179
 
@@ -195,8 +212,9 @@ module Maid
195
212
  expect(@maid.watches.first.path).to eq(File.expand_path('watch_dir'))
196
213
  end
197
214
 
198
- it 'accepts a hash of options and passes them to Listen' do
199
- hash = { :some => :options }
215
+ # FIXME: Example is too long, shouldn't need the rubocop::disable
216
+ it 'accepts a hash of options and passes them to Listen' do # rubocop:disable RSpec/ExampleLength
217
+ hash = { some: :options }
200
218
  @maid.watch('some_dir', hash) do
201
219
  rule 'test' do
202
220
  end
@@ -232,11 +250,12 @@ module Maid
232
250
  expect(@maid.repeats.first.timestring).to eq('1s')
233
251
  end
234
252
 
235
- it 'accepts a hash of options and passes them to Rufus' do
253
+ # FIXME: Example is too long, shouldn't need the rubocop::disable
254
+ it 'accepts a hash of options and passes them to Rufus' do # rubocop:disable RSpec/ExampleLength
236
255
  scheduler = double('scheduler')
237
256
  expect(Rufus::Scheduler).to receive(:singleton).and_return(scheduler)
238
257
 
239
- hash = { :some => :options }
258
+ hash = { some: :options }
240
259
  @maid.repeat('1s', hash) do
241
260
  rule 'test' do
242
261
  end
@@ -249,18 +268,21 @@ module Maid
249
268
  end
250
269
 
251
270
  describe '#follow_rules' do
252
- it 'follows each rule' do
271
+ # FIXME: Example is too long, shouldn't need the rubocop::disable
272
+ it 'follows each rule' do # rubocop:disable RSpec/ExampleLength
253
273
  n = 3
254
274
  maid = Maid.new
255
- expect(@logger).to receive(:info).exactly(n).times
275
+
256
276
  rules = (1..n).map do |i|
257
- d = double("rule ##{ i }", :description => 'description')
277
+ d = double("rule ##{i}", description: 'description')
258
278
  expect(d).to receive(:follow)
259
279
  d
260
280
  end
261
281
  maid.instance_eval { @rules = rules }
262
282
 
263
283
  maid.follow_rules
284
+
285
+ expect(logger).to have_received(:info).exactly(n).times
264
286
  end
265
287
  end
266
288
 
@@ -273,7 +295,7 @@ module Maid
273
295
  expect { @maid.cmd('not-a-real-command arg1 arg2') }.to raise_error(NotImplementedError)
274
296
  end
275
297
 
276
- it 'should report `echo` as a real command' do
298
+ it 'reports `echo` as a real command' do
277
299
  expect { @maid.cmd('echo .') }.not_to raise_error
278
300
  end
279
301
  end
@@ -18,7 +18,7 @@ describe Maid::NumericExtensions::SizeToKb do
18
18
  it 'tells you that 1 gigabyte equals 1024 megabytes' do
19
19
  expect(1.gigabyte).to eq(1024.megabytes)
20
20
  end
21
-
21
+
22
22
  it 'tells you that 1 terabyte equals 1024 gigabytes' do
23
23
  expect(1.terabyte).to eq(1024.gigabytes)
24
24
  end
@@ -5,7 +5,7 @@ module Maid
5
5
  describe SingleRule, fakefs: true do
6
6
  subject(:single_rule) { described_class.new name, task }
7
7
  let(:name) { double(:rule_description) }
8
- let(:task) { Proc.new {} }
8
+ let(:task) { proc {} }
9
9
 
10
10
  before do
11
11
  logfile = File.join('~', '.maid', 'maid.log')
@@ -15,11 +15,11 @@ module Maid
15
15
 
16
16
  describe '#initialize' do
17
17
  it 'has a name' do
18
- expect(single_rule.name). to eq(name)
18
+ expect(single_rule.name).to eq(name)
19
19
  end
20
20
 
21
21
  it 'has a task' do
22
- expect(single_rule.task). to eq(task)
22
+ expect(single_rule.task).to eq(task)
23
23
  end
24
24
  end
25
25
 
@@ -74,7 +74,7 @@ module Maid
74
74
  describe '.perform' do
75
75
  subject(:perform) { described_class.perform name, task }
76
76
  let(:name) { double(:name) }
77
- let(:task) { Proc.new {} }
77
+ let(:task) { proc {} }
78
78
 
79
79
  it 'creates an instance' do
80
80
  expect(described_class)
@@ -98,7 +98,6 @@ module Maid
98
98
  end
99
99
  end
100
100
  end
101
-
102
101
  end
103
102
  end
104
103
  end
@@ -3,11 +3,10 @@ require 'spec_helper'
3
3
  module Maid
4
4
  module Rake
5
5
  describe Task do
6
-
7
6
  before(:all) { ::Rake::TaskManager.record_task_metadata = true }
8
7
 
9
- subject(:define_task) { described_class.new *args, &instructions }
10
- let(:instructions) { Proc.new {} }
8
+ subject(:define_task) { described_class.new(*args, &instructions) }
9
+ let(:instructions) { proc {} }
11
10
 
12
11
  describe '#initialize' do
13
12
  before { ::Rake::Task.clear }
@@ -36,7 +35,7 @@ module Maid
36
35
  end
37
36
 
38
37
  context 'given a description argument' do
39
- let(:args) { [:foobar, description: 'Custom description'] }
38
+ let(:args) { [:foobar, { description: 'Custom description' }] }
40
39
 
41
40
  it 'defines a rake task with the description provided' do
42
41
  define_task
@@ -45,7 +44,6 @@ module Maid
45
44
  end
46
45
  end
47
46
  end
48
-
49
47
  end
50
48
  end
51
49
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module Maid
4
4
  describe Rule do
5
5
  it 'is able to be followed' do
6
- rule = Rule.new('my rule', lambda { 1 + 2 })
6
+ rule = Rule.new('my rule', -> { 1 + 2 })
7
7
  expect(rule.follow).to eq(3)
8
8
  end
9
9
  end