ftest 0.3.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e61f9a6be7447773cae069acd4d0bd9b8e5b83b5
4
- data.tar.gz: 1a41862c915bcb998590d9dfe117b98016fb8248
3
+ metadata.gz: 5738d3080893d015b14e3ce706c0d4dab1f20319
4
+ data.tar.gz: c4ae4ac2674e3afcd9b0fabc1e8dd8cc0e0f7aba
5
5
  SHA512:
6
- metadata.gz: b80e594bcd505f583f07551df8636077e2bd5e3a58bbe4744947424d7d82c6331f294547278cc551df3d69a5b8ed3b1f5710ffae6581790efc249e79fad9200e
7
- data.tar.gz: 08ae6b85526670449915eb27e1dd3fc5ff9728fbf282979b928a19f95ddd0fe3fc571e276066a3704eb1a0f1f44192df7e5fdf39def76e8b68e6abe283d64a29
6
+ metadata.gz: 516e5a0a8d5910a9347b4e09eb12f25e6226fc76d2a4e8ba31acd56d2d960e37cc4b17e2c9aa627422287d085a71a58a1ae5bf7a35743154c472aa03709c9d11
7
+ data.tar.gz: aa759bfee38c2c92ab08da83ae723a1e30c3501a87335e5d56d3a09cf2c61656a2078a538cb7f644991c199aeb54b0060d66686a08796168b7a56816ebe338bc
data/lib/ftest.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "logger"
2
+ require "logger/logging"
2
3
 
3
4
  module FTest
4
5
  autoload :Assert, "ftest/assert"
@@ -22,7 +22,7 @@ module FTest
22
22
 
23
23
  def build_checks
24
24
  @checks.map do |check_name, argument|
25
- FTest.logger.debug "Resolving check #{check_name.inspect}, arg=#{argument.inspect}"
25
+ FTest::Config.internal_logger.debug "Resolving check #{check_name.inspect}, arg=#{argument.inspect}"
26
26
  resolve_check check_name, argument
27
27
  end
28
28
  end
data/lib/ftest/cli.rb CHANGED
@@ -16,7 +16,6 @@ module FTest
16
16
 
17
17
  def call
18
18
  @options = ArgvParser.(@argv)
19
- options.color if @stdout.tty?
20
19
  setup_config
21
20
  Runner.(resolve_files) or exit 1
22
21
  end
@@ -30,9 +29,9 @@ module FTest
30
29
  end
31
30
 
32
31
  def build_logger
33
- cls = if options.color? then ColoredLogger else Logger end
34
- logger = cls.new @stdout
32
+ logger = Logger.new @stdout
35
33
  logger.level = options.log_level
34
+ logger.progname = "ftest"
36
35
  logger
37
36
  end
38
37
 
@@ -47,13 +46,22 @@ module FTest
47
46
  end
48
47
 
49
48
  class Options
49
+ def self.build
50
+ if ENV["FTEST_VERBOSE"]
51
+ log_level = Logger::DEBUG
52
+ else
53
+ log_level = Logger::INFO
54
+ end
55
+ new log_level
56
+ end
57
+
50
58
  attr_reader :child_count
51
59
  attr_reader :log_level
52
60
  attr_reader :paths
53
61
 
54
- def initialize
62
+ def initialize log_level
55
63
  @paths = []
56
- @log_level = Logger::WARN
64
+ @log_level = log_level
57
65
  end
58
66
 
59
67
  def add_path path
@@ -64,14 +72,6 @@ module FTest
64
72
  @child_count = number.to_i
65
73
  end
66
74
 
67
- def color
68
- @color = !@color
69
- end
70
-
71
- def color?
72
- @color
73
- end
74
-
75
75
  def fail_fast
76
76
  @fail_fast = !@fail_fast
77
77
  end
@@ -108,7 +108,7 @@ module FTest
108
108
 
109
109
  class ArgvParser
110
110
  def self.call argv
111
- options = Options.new
111
+ options = Options.build
112
112
  parser = ArgvParser.new argv, options
113
113
  parser.()
114
114
  options
@@ -144,10 +144,6 @@ If no PATH(s) are specified, ./tests is assumed
144
144
  @options.full_backtrace
145
145
  end
146
146
 
147
- opts.on "-c", "--color", "Enable/disable colored output" do
148
- @options.color
149
- end
150
-
151
147
  opts.on "-f", "--fail-fast", "When any test script fails, exit immediately" do
152
148
  @options.fail_fast
153
149
  end
data/lib/ftest/config.rb CHANGED
@@ -2,9 +2,11 @@ module FTest
2
2
  module Config
3
3
  extend self
4
4
 
5
+ extend Logger::Logging
6
+
5
7
  attr_writer :child_count
6
8
  attr_writer :fail_fast
7
- attr_writer :logger
9
+ attr_writer :internal_logger
8
10
  attr_writer :reverse_backtraces
9
11
  attr_writer :trim_backtraces
10
12
 
@@ -20,12 +22,12 @@ module FTest
20
22
  end
21
23
  end
22
24
 
23
- def logger
24
- @logger or default_logger
25
- end
26
-
27
- def default_logger
28
- @default_logger ||= Logger.new $stdout
25
+ def internal_logger
26
+ if ENV["FTEST_INTERNAL_LOGGING"]
27
+ logger
28
+ else
29
+ Logger::Logging::NullLogger
30
+ end
29
31
  end
30
32
 
31
33
  def reverse_backtraces
data/lib/ftest/runner.rb CHANGED
@@ -13,10 +13,17 @@ module FTest
13
13
  end
14
14
 
15
15
  def call
16
- Config.logger.debug "ftest found #{files.size} files: #{files * ", "}"
16
+ Config.internal_logger.debug "ftest found #{files.size} files: #{files * ", "}"
17
17
  return if files.empty?
18
18
  result = run_all
19
- Config.logger.info "finished executing files; success=#{result.inspect}"
19
+
20
+ log_msg = "finished executing files; success=#{result.inspect}"
21
+ if result
22
+ Config.logger.info log_msg
23
+ else
24
+ Config.logger.warn log_msg
25
+ end
26
+
20
27
  result
21
28
  end
22
29
 
@@ -63,7 +70,7 @@ module FTest
63
70
  def reap reads
64
71
  @set.delete_if do |process|
65
72
  next unless reads.include? process.fd
66
- Config.logger.debug "Reaping #{process.file}:#{process.pid}"
73
+ Config.internal_logger.debug "Reaping #{process.file}:#{process.pid}"
67
74
  process.finish or @passed = false
68
75
  true
69
76
  end
@@ -120,7 +127,7 @@ module FTest
120
127
  locations = FTest::BacktraceFilter.(locations)
121
128
 
122
129
  lines = locations.map do |loc| "\tfrom #{loc}" end
123
- lines.unshift "#{final_location}: #{error.message}"
130
+ lines.unshift "#{final_location}: #{error.message} (#{error.class.name})"
124
131
 
125
132
  lines.reverse! if Config.reverse_backtraces
126
133
  Config.logger.error "Exception:\n#{lines * "\n"}"
@@ -130,7 +137,7 @@ module FTest
130
137
  fd.read 1
131
138
  _, status = ::Process.wait2 pid
132
139
  status = status.exitstatus
133
- Config.logger.debug "finished script #{@file}; status=#{status.inspect}"
140
+ Config.internal_logger.debug "finished script #{@file}; status=#{status.inspect}"
134
141
  status == 0
135
142
  end
136
143
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ftest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Ladd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-13 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2015-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger-logging
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Fork based runner for tests written as simple ruby scripts
14
28
  email: nathanladd+github@gmail.com
15
29
  executables:
@@ -28,7 +42,6 @@ files:
28
42
  - lib/ftest/assert/syntax.rb
29
43
  - lib/ftest/backtrace_filter.rb
30
44
  - lib/ftest/cli.rb
31
- - lib/ftest/colored_logger.rb
32
45
  - lib/ftest/config.rb
33
46
  - lib/ftest/runner.rb
34
47
  - lib/ftest/script.rb
@@ -1,62 +0,0 @@
1
- module FTest
2
- class ColoredLogger
3
- ANSI_COLORS = %i(black red green yellow blue magenta cyan white)
4
-
5
- DEFAULT_PALETTE = {
6
- :unknown => -> msg { bg(:blue, :bright, fg(:white, :bright, msg)) },
7
- :fatal => -> msg { bg(:red, :bright, fg(:white, :bright, msg)) },
8
- :error => -> msg { fg(:red, :bright, msg) },
9
- :warn => -> msg { fg(:yellow, :bright, msg) },
10
- :info => -> msg { fg(:default, :normal, msg) },
11
- :debug => -> msg { fg(:cyan, :bright, msg) },
12
- }
13
-
14
- attr_reader :palette
15
-
16
- def initialize io, palette = DEFAULT_PALETTE
17
- @logger = Logger.new io
18
- @palette = palette
19
- end
20
-
21
- %i(level= progname=).each do |method_name|
22
- define_method method_name do |*args, &block|
23
- @logger.public_send method_name, *args, &block
24
- end
25
- end
26
-
27
- %i(unknown fatal error warn info debug).each do |log_level|
28
- define_method log_level do |msg_or_progname = nil, &orig_block|
29
- colored_msg = format log_level, msg_or_progname
30
-
31
- if orig_block
32
- progname = colored_msg
33
- block = -> do format log_level, orig_block.() end
34
- else
35
- block = -> do colored_msg end
36
- end
37
-
38
- @logger.public_send log_level, progname, &block
39
- end
40
- end
41
-
42
- def format log_level, msg
43
- formatter = palette.fetch log_level
44
- instance_exec msg, &formatter
45
- end
46
-
47
- def fg *args
48
- col :fg, *args
49
- end
50
-
51
- def bg *args
52
- col :bg, *args
53
- end
54
-
55
- def col fgbg, color_code, intensity_code, str
56
- color_num = ANSI_COLORS.index color_code
57
- intensity_num = { :normal => 0, :bright => 1 }.fetch intensity_code
58
- fgbg_num = { :fg => 3, :bg => 4 }.fetch fgbg
59
- "\e[#{fgbg_num}#{color_num};#{intensity_num}m#{str}\e[0m"
60
- end
61
- end
62
- end