Sha256: 754755f4f82205f3debddc12d59bc14f494c9eb3335c6cb1be7761f34f230416
Contents?: true
Size: 1.47 KB
Versions: 11
Compression:
Stored size: 1.47 KB
Contents
require File.expand_path('../spec_helper', __FILE__) TEMP_FILE_PATH = "./test.txt" INTERVAL = 0.010 class MyStatWatcher < Cool.io::StatWatcher attr_accessor :accessed, :previous, :current def initialize(path) super path, INTERVAL end def on_change(previous, current) self.accessed = true self.previous = previous self.current = current end end def run_with_file_change(path) reactor = Cool.io::Loop.new sw = MyStatWatcher.new(path) sw.attach(reactor) tw = Cool.io::TimerWatcher.new(INTERVAL, true) tw.on_timer do reactor.stop if sw.accessed write_file(path) end tw.attach(reactor) reactor.run tw.detach sw.detach sw end def write_file(path) File.open(path, "w+") { |f| f.write(rand.to_s) } end def delete_file(path) File.delete(TEMP_FILE_PATH) end describe Cool.io::StatWatcher do let :watcher do run_with_file_change(TEMP_FILE_PATH) end before :each do write_file(TEMP_FILE_PATH) end after :each do delete_file(TEMP_FILE_PATH) end it "fire on_change when the file it is watching is modified" do watcher.accessed.should eql(true) end it "should pass previous and current file stat info given a stat watcher" do watcher.previous.ino.should eql(watcher.current.ino) end it "should raise when the handler does not take 2 parameters" do class MyStatWatcher < Cool.io::StatWatcher; def on_change; end; end lambda { watcher.accessed }.should raise_error(ArgumentError) end end
Version data entries
11 entries across 11 versions & 1 rubygems