# -*- encoding: utf-8 -*- require 'spec_helper' describe FChange do before(:each) do @results = [] @notifier = FChange::Notifier.new @notifier.watch(@fixture_path.to_s) do |event| @results += [event.watcher.path] end end it "should work with path with an apostrophe" do custom_path = @fixture_path.join("custom 'path") file = custom_path.join("newfile.rb").to_s File.delete file if File.exists? file run FileUtils.touch file stop File.delete file @results.should == [@fixture_path.to_s, @fixture_path.to_s] end it "should catch new file" do file = @fixture_path.join("newfile.rb") File.delete file if File.exists? file run FileUtils.touch file stop File.delete file @results.should == [@fixture_path.to_s] end it "should catch file update" do file = @fixture_path.join("folder1/file1.txt") File.exists?(file).should be_true run FileUtils.touch file stop @results.should == [@fixture_path.to_s] end it "should catch files update" do file1 = @fixture_path.join("folder1/file1.txt") file2 = @fixture_path.join("folder1/folder2/file2.txt") File.exists?(file1).should be_true File.exists?(file2).should be_true run FileUtils.touch file1 FileUtils.touch file2 stop @results.should == [@fixture_path.to_s, @fixture_path.to_s] end it "should catch new directory" do dir = @fixture_path.join("new_dir") Dir.delete dir if Dir.exists? dir Dir.exists?(dir).should be_false run Dir.mkdir dir stop Dir.delete dir @results.should == [@fixture_path.to_s] end it "should catch directory rename" do dir = @fixture_path.join("new_dir") dir_new = @fixture_path.join("new_dir1") Dir.mkdir dir unless Dir.exists? dir Dir.delete dir_new if Dir.exists? dir_new run File.rename(dir, dir_new) stop Dir.delete(dir_new) @results.should == [@fixture_path.to_s, @fixture_path.to_s] end it "should catch file rename" do file = @fixture_path.join("folder1/file1.txt") file_new = @fixture_path.join("folder1/file3.txt") File.exists?(file).should be_true File.exists?(file_new).should be_false run File.rename(file, file_new) stop File.rename(file_new, file) @results.should == [@fixture_path.to_s, @fixture_path.to_s] end # it "should work with none-ANSI path" do # dir = @fixture_path.join("../тест") # Dir.mkdir dir unless Dir.exists? dir # file = dir.join("тест"); # File.delete file if File.exists? file # File.exists?(file).should be_false # @notifier.watch(dir.to_s, :all_events, :recursive) do |event| # @results += [event.watcher.path] # end # run # FileUtils.touch file # stop # File.delete file # Dir.delete dir # @results.should == [@fixture_path.to_s, @fixture_path.to_s] # end def run sleep 0.6 Thread.new { @notifier.run } sleep 0.6 end def stop sleep 0.6 @notifier.stop end end