# File lib/autotest/cucumber_mixin.rb, line 48 48: def all_features_good 49: features_to_run == "" 50: end
# File lib/autotest/cucumber_mixin.rb, line 52 52: def get_to_green 53: begin 54: super 55: run_features 56: wait_for_changes unless all_features_good 57: end until all_features_good 58: end
# File lib/autotest/cucumber_mixin.rb, line 108 108: def make_cucumber_cmd(features_to_run, dirty_features_filename) 109: return '' if features_to_run == '' 110: 111: profile_loader = Cucumber::Cli::ProfileLoader.new 112: 113: profile ||= "autotest-all" if profile_loader.has_profile?("autotest-all") && features_to_run == :all 114: profile ||= "autotest" if profile_loader.has_profile?("autotest") 115: profile ||= nil 116: 117: if profile 118: args = ["--profile", profile] 119: else 120: args = %{--format} << (features_to_run == :all ? "progress" : "pretty") 121: end 122: # No --color option as some IDEs (Netbeans) don't output them very well ([31m1 failed step[0m) 123: args += %{--format rerun --out} << dirty_features_filename 124: args << (features_to_run == :all ? "" : features_to_run) 125: 126: # Unless I do this, all the steps turn up undefined during the rerun... 127: unless features_to_run == :all 128: args << 'features/step_definitions' << 'features/support' 129: end 130: 131: args = args.join(' ') 132: 133: return "#{Cucumber::RUBY_BINARY} #{Cucumber::BINARY} #{args}" 134: end
# File lib/autotest/cucumber_mixin.rb, line 60 60: def rerun_all_features 61: reset_features 62: run_features 63: end
# File lib/autotest/cucumber_mixin.rb, line 65 65: def reset_features 66: self.features_to_run = :all 67: end
# File lib/autotest/cucumber_mixin.rb, line 18 18: def run 19: hook :initialize 20: reset 21: reset_features 22: add_sigint_handler 23: 24: self.last_mtime = Time.now if $f 25: 26: loop do # ^c handler 27: begin 28: get_to_green 29: if self.tainted then 30: rerun_all_tests 31: rerun_all_features if all_good 32: else 33: hook :all_good 34: end 35: wait_for_changes 36: # Once tests and features are green, reset features every 37: # time a file is changed to see if anything breaks. 38: reset_features 39: rescue Interrupt 40: break if self.wants_to_quit 41: reset 42: reset_features 43: end 44: end 45: hook :quit 46: end
# File lib/autotest/cucumber_mixin.rb, line 69 69: def run_features 70: hook :run_features 71: Tempfile.open('autotest-cucumber') do |dirty_features_file| 72: cmd = self.make_cucumber_cmd(self.features_to_run, dirty_features_file.path) 73: return if cmd.empty? 74: puts cmd unless $q 75: old_sync = $stdout.sync 76: $stdout.sync = true 77: self.results = [] 78: line = [] 79: begin 80: open("| #{cmd}", "r") do |f| 81: until f.eof? do 82: c = f.getc or break 83: if RUBY_VERSION >= "1.9" then 84: print c 85: else 86: putc c 87: end 88: line << c 89: if c == \n\ then 90: self.results << if RUBY_VERSION >= "1.9" then 91: line.join 92: else 93: line.pack "c*" 94: end 95: line.clear 96: end 97: end 98: end 99: ensure 100: $stdout.sync = old_sync 101: end 102: self.features_to_run = dirty_features_file.read.strip 103: self.tainted = true unless self.features_to_run == '' 104: end 105: hook :ran_features 106: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.