Class: ParallelTests::Test::RuntimeLogger
- Inherits:
-
Object
- Object
- ParallelTests::Test::RuntimeLogger
- Defined in:
- lib/parallel_tests/test/runtime_logger.rb
Constant Summary collapse
- @@has_started =
false
Class Method Summary collapse
-
.class_directory(suspect) ⇒ Object
Note: this is a best guess at conventional test directory structure, and may need tweaking / post-processing to match correctly for any given project.
- .class_to_filename(suspect) ⇒ Object
- .locked_appending_to(file) ⇒ Object
- .log(test, start_time, end_time) ⇒ Object
- .logfile ⇒ Object
- .message(test, start_time, end_time) ⇒ Object
Class Method Details
.class_directory(suspect) ⇒ Object
Note: this is a best guess at conventional test directory structure, and may need tweaking / post-processing to match correctly for any given project
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 29 def self.class_directory(suspect) result = "test/" if defined?(Rails) result += case suspect.superclass.name when "ActionDispatch::IntegrationTest" "integration/" when "ActionDispatch::PerformanceTest" "performance/" when "ActionController::TestCase" "functional/" when "ActionView::TestCase" "unit/helpers/" else "unit/" end end result end |
.class_to_filename(suspect) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 50 def self.class_to_filename(suspect) word = suspect.to_s.dup return word unless word.match /^[A-Z]/ and not word.match %r{/[a-z]} word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2') word.gsub!(/([a-z\d])([A-Z])/, '\1_\2') word.gsub!(/\:\:/, '/') word.tr!("-", "_") word.downcase! word end |
.locked_appending_to(file) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 62 def self.locked_appending_to(file) File.open(file, 'a') do |f| begin f.flock File::LOCK_EX yield f ensure f.flock File::LOCK_UN end end end |
.log(test, start_time, end_time) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 8 def self.log(test, start_time, end_time) return if test.is_a? ::Test::Unit::TestSuite # don't log for suites-of-suites if !@@has_started # make empty log file File.open(logfile, 'w'){} @@has_started = true end locked_appending_to(logfile) do |file| file.puts((test, start_time, end_time)) end end |
.logfile ⇒ Object
73 74 75 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 73 def self.logfile ParallelTests::Test::Runner.runtime_log end |
.message(test, start_time, end_time) ⇒ Object
21 22 23 24 25 |
# File 'lib/parallel_tests/test/runtime_logger.rb', line 21 def self.(test, start_time, end_time) delta = "%.2f" % (end_time.to_f-start_time.to_f) filename = class_directory(test.class) + class_to_filename(test.class) + ".rb" "#{filename}:#{delta}" end |