module Filewatcher::SpecHelper::WatchRun
Base module for Filewatcher
runners in specs
Constants
- CHANGES
- TMP_DIR
- TMP_FILES_DIR
It’s requried to split modifying files from result files like CLI dumpers
Attributes
initial_files[R]
Public Class Methods
new(initial_files:, changes:)
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 32 def initialize(initial_files:, changes:) @initial_files = initial_files.transform_keys { |key| self.class.transform_spec_files(key) } @changes = changes debug "changes = #{@changes}" end
Public Instance Methods
run(make_changes_times: 1)
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 57 def run(make_changes_times: 1) start make_changes_times.times do make_changes wait seconds: 2 end stop end
start()
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 40 def start debug 'start' FileUtils.mkdir_p self.class::TMP_FILES_DIR initial_files.each do |initial_file_path, initial_file_data| File.write( File.expand_path(initial_file_path), initial_file_data.fetch(:content, 'content1') ) end debug "start initial_files = #{initial_files}" wait seconds: 1 end
stop()
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 69 def stop debug 'stop' FileUtils.rm_r(self.class::TMP_FILES_DIR) if File.exist?(self.class::TMP_FILES_DIR) end
Private Instance Methods
debug_file_mtime(file)
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 111 def debug_file_mtime(file) file = File.expand_path file debug "stat #{file}: #{system_stat(file)}" debug "File.mtime = #{File.mtime(file).strftime('%F %T.%9N')}" end
make_changes()
click to toggle source
# File lib/filewatcher/spec_helper/watch_run.rb, line 95 def make_changes @changes.each do |change_file, change_data| debug "make changes, change_file = #{change_file}, change_data = #{change_data}" change_event = change_data.fetch(:event, :update) change_event = :create_dir if change_event == :create && change_data[:directory] change_block = self.class::CHANGES.fetch(change_event) { raise "Unknown change `#{change_event}`" } instance_exec(change_file, change_data, &change_block) end wait seconds: 1 end