ftest 0.1.1 → 0.2.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 +4 -4
- data/lib/ftest.rb +9 -0
- data/lib/ftest/assert.rb +1 -23
- data/lib/ftest/assert/assertion.rb +1 -1
- data/lib/ftest/backtrace_filter.rb +25 -0
- data/lib/ftest/cli.rb +10 -10
- data/lib/ftest/colored_logger.rb +2 -1
- data/lib/ftest/config.rb +48 -8
- data/lib/ftest/runner.rb +2 -1
- data/lib/ftest/script.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c74881d078896ac38442c877ecca6dbdad5d739f
|
4
|
+
data.tar.gz: 2e7146641d9f0bfefd920e0edb2fb5e2656747a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33b69d60643c7622583be04bbbf308b8b49b97e0d7ddfb28dacc535b380d3af6862e0745e000f96e628efd0aac1668974afc184cc19bfd9de4b2bbfcdc8eaa1d
|
7
|
+
data.tar.gz: 7099432413a94b4b85f12ded3ce90a5fc0dd3f4834928d729d38399b6342ecb0c9c9f57900b4ab05778beae8c11d2bf5b614406be7930c9e41bfa7e4c866f760
|
data/lib/ftest.rb
CHANGED
@@ -2,6 +2,7 @@ require "logger"
|
|
2
2
|
|
3
3
|
module FTest
|
4
4
|
autoload :Assert, "ftest/assert"
|
5
|
+
autoload :BacktraceFilter, "ftest/backtrace_filter"
|
5
6
|
autoload :ColoredLogger, "ftest/colored_logger"
|
6
7
|
autoload :Config, "ftest/config"
|
7
8
|
autoload :CLI, "ftest/cli"
|
@@ -15,10 +16,18 @@ module FTest
|
|
15
16
|
#
|
16
17
|
# logger.info "hi"
|
17
18
|
# assert true
|
19
|
+
#
|
20
|
+
# You can also require "ftest/script" to automatically include FTest
|
18
21
|
def logger
|
19
22
|
Config.logger
|
20
23
|
end
|
21
24
|
|
25
|
+
# Describe can help break up a larger test script into chunks. Blocks are run
|
26
|
+
# immediately; this is a pure cosmetic enhancement.
|
27
|
+
def describe msg
|
28
|
+
yield
|
29
|
+
end
|
30
|
+
|
22
31
|
def self.included target
|
23
32
|
Assert::Syntax.infect target
|
24
33
|
end
|
data/lib/ftest/assert.rb
CHANGED
@@ -6,32 +6,10 @@ require_relative "assert/syntax"
|
|
6
6
|
|
7
7
|
module FTest
|
8
8
|
module Assert
|
9
|
-
|
10
|
-
|
11
|
-
def inspect object, truncate = 100
|
9
|
+
def self.inspect object, truncate = 100
|
12
10
|
raw = object.inspect
|
13
11
|
return raw if raw.size <= truncate
|
14
12
|
"#{raw[0..truncate - 2]} …\""
|
15
13
|
end
|
16
|
-
|
17
|
-
def filter_trace trace
|
18
|
-
return trace unless Config.trim_backtrace
|
19
|
-
|
20
|
-
entry_point = trace.last
|
21
|
-
ftest_root = File.expand_path "../..", __FILE__
|
22
|
-
|
23
|
-
first_pass = trace.drop_while do |location|
|
24
|
-
full_path = File.expand_path location.path
|
25
|
-
full_path.start_with? ftest_root
|
26
|
-
end
|
27
|
-
|
28
|
-
second_pass = first_pass.take_while do |location|
|
29
|
-
full_path = File.expand_path location.path
|
30
|
-
not full_path.start_with? ftest_root
|
31
|
-
end
|
32
|
-
|
33
|
-
second_pass << entry_point unless second_pass.last == entry_point
|
34
|
-
second_pass
|
35
|
-
end
|
36
14
|
end
|
37
15
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module FTest
|
2
|
+
module BacktraceFilter
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def call trace
|
6
|
+
return trace unless Config.trim_backtraces
|
7
|
+
|
8
|
+
entry_point = trace.last
|
9
|
+
ftest_root = File.expand_path "../..", __FILE__
|
10
|
+
|
11
|
+
first_pass = trace.drop_while do |location|
|
12
|
+
full_path = File.expand_path location.to_s
|
13
|
+
full_path.start_with? ftest_root
|
14
|
+
end
|
15
|
+
|
16
|
+
second_pass = first_pass.take_while do |location|
|
17
|
+
full_path = File.expand_path location.to_s
|
18
|
+
not full_path.start_with? ftest_root
|
19
|
+
end
|
20
|
+
|
21
|
+
second_pass << entry_point unless second_pass.last == entry_point
|
22
|
+
second_pass
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/ftest/cli.rb
CHANGED
@@ -25,8 +25,8 @@ module FTest
|
|
25
25
|
Config.child_count = options.child_count
|
26
26
|
Config.fail_fast = options.fail_fast?
|
27
27
|
Config.logger = build_logger
|
28
|
-
Config.
|
29
|
-
Config.
|
28
|
+
Config.reverse_backtraces = options.reverse_backtraces?
|
29
|
+
Config.trim_backtraces = options.trim_backtraces?
|
30
30
|
end
|
31
31
|
|
32
32
|
def build_logger
|
@@ -54,7 +54,6 @@ module FTest
|
|
54
54
|
def initialize
|
55
55
|
@paths = []
|
56
56
|
@log_level = Logger::WARN
|
57
|
-
@child_count = 2
|
58
57
|
end
|
59
58
|
|
60
59
|
def add_path path
|
@@ -85,20 +84,21 @@ module FTest
|
|
85
84
|
@full_backtrace = !@full_backtrace
|
86
85
|
end
|
87
86
|
|
88
|
-
def
|
89
|
-
@full_backtrace
|
87
|
+
def trim_backtraces?
|
88
|
+
return nil if @full_backtrace.nil?
|
89
|
+
not @full_backtrace
|
90
90
|
end
|
91
91
|
|
92
92
|
def quiet
|
93
93
|
@log_level += 1
|
94
94
|
end
|
95
95
|
|
96
|
-
def
|
97
|
-
@
|
96
|
+
def reverse_backtraces
|
97
|
+
@reverse_backtraces = !@reverse_backtraces
|
98
98
|
end
|
99
99
|
|
100
|
-
def
|
101
|
-
@
|
100
|
+
def reverse_backtraces?
|
101
|
+
@reverse_backtraces
|
102
102
|
end
|
103
103
|
|
104
104
|
def verbose
|
@@ -156,7 +156,7 @@ If no PATH is specified, ./tests is assumed
|
|
156
156
|
@options.quiet
|
157
157
|
end
|
158
158
|
opts.on "-r", "--reverse-traces", "Reverse the order of stack traces" do
|
159
|
-
@options.
|
159
|
+
@options.reverse_backtraces
|
160
160
|
end
|
161
161
|
opts.on "-v", "--verbose", "Increases log verbosity" do
|
162
162
|
@options.verbose
|
data/lib/ftest/colored_logger.rb
CHANGED
@@ -25,7 +25,8 @@ module FTest
|
|
25
25
|
end
|
26
26
|
|
27
27
|
%i(unknown fatal error warn info debug).each do |log_level|
|
28
|
-
define_method log_level do |msg|
|
28
|
+
define_method log_level do |msg = nil, &block|
|
29
|
+
msg ||= block[]
|
29
30
|
colored_msg = format log_level, msg
|
30
31
|
@logger.public_send log_level, colored_msg
|
31
32
|
end
|
data/lib/ftest/config.rb
CHANGED
@@ -5,15 +5,19 @@ module FTest
|
|
5
5
|
attr_writer :child_count
|
6
6
|
attr_writer :fail_fast
|
7
7
|
attr_writer :logger
|
8
|
-
attr_writer :
|
9
|
-
attr_writer :
|
8
|
+
attr_writer :reverse_backtraces
|
9
|
+
attr_writer :trim_backtraces
|
10
10
|
|
11
11
|
def child_count
|
12
|
-
@child_count
|
12
|
+
Option::Number.evaluate @child_count do
|
13
|
+
ENV.fetch "FTEST_CHILD_COUNT", 1
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
15
17
|
def fail_fast
|
16
|
-
@fail_fast
|
18
|
+
Option::Boolean.evaluate @fail_fast do
|
19
|
+
ENV["FTEST_FAIL_FAST"]
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
def logger
|
@@ -24,12 +28,48 @@ module FTest
|
|
24
28
|
@default_logger ||= Logger.new $stdout
|
25
29
|
end
|
26
30
|
|
27
|
-
def
|
28
|
-
@
|
31
|
+
def reverse_backtraces
|
32
|
+
Option::Boolean.evaluate @reverse_backtraces do
|
33
|
+
ENV["FTEST_REVERSE_BACKTRACES"]
|
34
|
+
end
|
29
35
|
end
|
30
36
|
|
31
|
-
def
|
32
|
-
@
|
37
|
+
def trim_backtraces
|
38
|
+
Option::Boolean.evaluate @trim_backtraces do
|
39
|
+
ENV.fetch "FTEST_TRIM_BACKTRACES", true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class Option
|
44
|
+
def self.evaluate value, &block
|
45
|
+
instance = new value
|
46
|
+
instance.fetch &block
|
47
|
+
end
|
48
|
+
|
49
|
+
def initialize value
|
50
|
+
@value = value
|
51
|
+
end
|
52
|
+
|
53
|
+
def fetch
|
54
|
+
@value = yield unless set?
|
55
|
+
value
|
56
|
+
end
|
57
|
+
|
58
|
+
def set?
|
59
|
+
not @value.nil?
|
60
|
+
end
|
61
|
+
|
62
|
+
class Number < Option
|
63
|
+
def value
|
64
|
+
@value.to_i
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class Boolean < Option
|
69
|
+
def value
|
70
|
+
not [nil, false, "", "0", "n", "no", "false"].include? @value
|
71
|
+
end
|
72
|
+
end
|
33
73
|
end
|
34
74
|
end
|
35
75
|
end
|
data/lib/ftest/runner.rb
CHANGED
@@ -117,11 +117,12 @@ module FTest
|
|
117
117
|
def print_stacktrace error
|
118
118
|
locations = error.backtrace
|
119
119
|
final_location = locations.shift
|
120
|
+
locations = FTest::BacktraceFilter.(locations)
|
120
121
|
|
121
122
|
lines = locations.map do |loc| "\tfrom #{loc}" end
|
122
123
|
lines.unshift "#{final_location}: #{error.message}"
|
123
124
|
|
124
|
-
lines.reverse! if Config.
|
125
|
+
lines.reverse! if Config.reverse_backtraces
|
125
126
|
Config.logger.error "Exception:\n#{lines * "\n"}"
|
126
127
|
end
|
127
128
|
|
data/lib/ftest/script.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ftest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.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-
|
11
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Fork based runner for tests written as simple ruby scripts
|
14
14
|
email: nathanladd+github@gmail.com
|
@@ -26,10 +26,12 @@ files:
|
|
26
26
|
- lib/ftest/assert/checks/registry.rb
|
27
27
|
- lib/ftest/assert/errors.rb
|
28
28
|
- lib/ftest/assert/syntax.rb
|
29
|
+
- lib/ftest/backtrace_filter.rb
|
29
30
|
- lib/ftest/cli.rb
|
30
31
|
- lib/ftest/colored_logger.rb
|
31
32
|
- lib/ftest/config.rb
|
32
33
|
- lib/ftest/runner.rb
|
34
|
+
- lib/ftest/script.rb
|
33
35
|
- lib/ftest/util.rb
|
34
36
|
homepage: https://github.com/ntl/ftest
|
35
37
|
licenses:
|