matest 1.4.1 → 1.5.0

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: 5343d40a5235496d63d71af86f7737997f675284
4
- data.tar.gz: ac0b79083aa656a8c1fc19ccd65133b9bef3de46
3
+ metadata.gz: f02cbd7cc39eda882dd572d7cf95e7acdee9bed9
4
+ data.tar.gz: def3bb5852801094f9013b62ab1a9b16217710f6
5
5
  SHA512:
6
- metadata.gz: 7e8628d367ed45aa2784bdaff0b071edbea48e7d883fdb1d09aa4d09e7634dd01e3be2b23fdebe5ca46fc47972e20a87762b9d7ea61c29aaaadc853392e5a8c1
7
- data.tar.gz: 68201c248f577c38728c4350db7a6a1c98134f03cc4e9a0fdbddf11ca3f1b0935cc0f258b1ee33e08cfa3c2c75b13243b9c08a8bb84345203a3f1f89751233b6
6
+ metadata.gz: 73bc398f1d198bad0ea52f09834569175820e0d305ebedc44d3a50ee04c5bbb1462296af64bb0323390d7f072917c131877cbba08fac87311f01c1e8fd3c24f8
7
+ data.tar.gz: e262572d3c83067f57b19f1d4e9857f00f1b2041a8c14fdfef48d299795a93501af85956d842f048dae602efe60d4cb47e654c38859f6875d0d2fb9c8a1ed441
data/README.md CHANGED
@@ -148,7 +148,7 @@ end
148
148
 
149
149
  ## The output
150
150
 
151
- In case the test fails, you'll get an extensive explanation about why.
151
+ In case the test fails or is not a natural assertion, you'll get an extensive explanation about why.
152
152
 
153
153
  To show a trivial example:
154
154
 
@@ -226,14 +226,37 @@ You may be used to other keywords provenient from different testing frameworks.
226
226
  - `test` (and `xtest`)
227
227
  - `example` (and `xexample`)
228
228
 
229
+ ## Configuration
230
+
231
+ You can add some configuration to the way the tests are run, by using the ```Matest.configure``` method.
232
+
233
+ To use it, you need to pass a block with the configuration instructions inside.
234
+
235
+ ```ruby
236
+ Matest.configure do |config|
237
+ config.use_color
238
+ end
239
+ ```
240
+
241
+ ### Color
242
+
243
+ You can tell Matest to use colored output by calling the ```use_color``` method on the config object
244
+
245
+ ```ruby
246
+ Matest.configure do |config|
247
+ config.use_color
248
+ end
249
+ ```
250
+
229
251
  ## TODO ... or not TODO
230
- - Colorize output
231
252
  - Before and after callbacks
232
253
  - matest-given-ish
233
254
  - Allow seamless transition (separated gems)
234
255
  * matest-assert (to move from TestUnit, Minitest::Unit, Cutest)
235
256
  * matest-should (to move from RSpec
236
257
  * matest-must (to move from Minitest::Spec)
258
+ - Run "<file>:<line>"
259
+ Should run the enclosing test or scope
237
260
 
238
261
  ## Installation
239
262
 
@@ -251,6 +274,10 @@ Or install it yourself as:
251
274
 
252
275
  $ gem install matest
253
276
 
277
+ ## Known Issues
278
+
279
+ - If the test contains a here doc and it fails, it raises a Sorcerer error
280
+
254
281
  ## Contributing
255
282
 
256
283
  1. Fork it ( https://github.com/[my-github-username]/matest/fork )
data/Rakefile CHANGED
@@ -1,27 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
3
  task default: :matest
4
+ require "matest/spec_tasks"
4
5
 
5
- task :spec do
6
- arg_files = (ENV["FILES"] && ENV["FILES"].split(/[\s,]+/)) || [ENV["SPEC"]]
7
- if arg_files
8
- arg_files.map! { |file_name|
9
- Pathname(file_name).directory? ? file_name + "/**/*.rb" : file_name
10
- }
11
- end
12
-
13
- all_files = Rake::FileList["./spec/matest_specs/**/*_spec.rb"]
14
- files = arg_files || all_files
15
- puts "\nRuning tests for: #{ files.join(" ") }\n\n"
16
-
17
- system *["./bin/matest"].concat(files)
18
- end
19
-
20
- task :matest do
21
- arg_files = ENV["FILES"] && ENV["FILES"].split(/[\s,]+/)
22
- all_files = Rake::FileList["./spec/matest_specs/**/*_spec.rb"]
23
- files = arg_files || all_files
24
- puts "\nRuning tests for: #{ files.join(" ") }\n\n"
25
-
26
- system *["./bin/matest"].concat(files)
27
- end
@@ -29,22 +29,26 @@ class ExampleBlock
29
29
  private
30
30
 
31
31
  def generate_code
32
- file = File.open(block.source_location.first)
33
- source = file.read
34
- lines = source.each_line.to_a
35
-
36
32
  lineno = block.source_location.last
37
33
 
38
34
  current_line = lineno-1
39
35
  valid_lines = [lines[current_line]]
40
36
 
41
- valid_lines
42
-
43
37
  until Ripper::SexpBuilder.new(valid_lines.join("\n")).parse
44
38
  current_line += 1
45
39
  valid_lines << lines[current_line]
46
40
  end
47
- code_array = valid_lines[1..-2]
48
- code_array.join
41
+
42
+ valid_lines[1..-2].join
43
+ end
44
+
45
+ def lines
46
+ @lines ||= get_lines
47
+ end
48
+
49
+ def get_lines
50
+ file = File.open(block.source_location.first)
51
+ source = file.read
52
+ source.each_line.to_a
49
53
  end
50
54
  end
@@ -9,7 +9,7 @@ module Matest
9
9
  end
10
10
 
11
11
  def print_messages(runner)
12
- puts bright_blue("\n\n### Messages ###")
12
+ puts "\n\n### Messages ###"
13
13
 
14
14
  statuses = []
15
15
  runner.info[:success] = true
@@ -30,17 +30,17 @@ module Matest
30
30
  if status.is_a?(Matest::SpecFailed)
31
31
  runner.info[:success] = false
32
32
  puts header("Assertion")
33
- puts " #{status.example.example_block.assertion}"
33
+ puts expression(" #{status.example.example_block.assertion}")
34
34
  if status.example.track_variables.any?
35
35
  puts header("Variables")
36
36
  status.example.track_variables.each do |var, val|
37
- puts " #{var}: #{val.inspect}"
37
+ puts key_value(var, val)
38
38
  end
39
39
  end
40
40
  if status.example.track_lets.any?
41
41
  puts header("Lets")
42
42
  status.example.track_lets.each do |var, val|
43
- puts " #{var}: #{val.inspect}"
43
+ puts key_value(var, val)
44
44
  end
45
45
  end
46
46
 
@@ -53,9 +53,9 @@ module Matest
53
53
  end
54
54
  if status.is_a?(Matest::ExceptionRaised)
55
55
  runner.info[:success] = false
56
- puts bright_red("EXCEPTION >> #{status.result}")
56
+ puts error("EXCEPTION >> #{status.result}")
57
57
  status.result.backtrace.each do |l|
58
- puts red(" #{l}")
58
+ puts error(" #{l}")
59
59
  end
60
60
 
61
61
  end
@@ -79,9 +79,9 @@ module Matest
79
79
  result = Evaluator.new(just_before_assertion, just_before_assertion.before_assertion_block).eval_string(code)
80
80
  if result.class != Matest::EvalErr
81
81
  explanation = []
82
- explanation << yellow(" #{code}")
82
+ explanation << expression(" #{code}")
83
83
  explanation << "\n"
84
- explanation << bright_blue(" # => #{result}")
84
+ explanation << value(" # => #{result}")
85
85
  puts explanation.join
86
86
  true
87
87
  else
@@ -91,7 +91,7 @@ module Matest
91
91
  #{result}
92
92
  Make sure you are not calling any local vaiables on your code assertion.
93
93
  CODE
94
- puts red(code)
94
+ puts error(code)
95
95
  false
96
96
  end
97
97
  end
@@ -102,6 +102,22 @@ module Matest
102
102
  str + ":"
103
103
  end
104
104
 
105
+ def expression(str)
106
+ yellow(str)
107
+ end
108
+
109
+ def value(str)
110
+ blue(str)
111
+ end
112
+
113
+ def key_value(key, value)
114
+ " #{yellow(key.to_s)} #{bright_black("=>")} #{blue(value.inspect)}"
115
+ end
116
+
117
+ def error(str)
118
+ red(str)
119
+ end
120
+
105
121
  def colors
106
122
  {
107
123
  Matest::SpecPassed => :green,
@@ -0,0 +1,16 @@
1
+ task :spec do
2
+ arg_files = (ENV["FILES"] && ENV["FILES"].split(/[\s,]+/)) || [ENV["SPEC"]]
3
+ if arg_files
4
+ arg_files.map! { |file_name|
5
+ path = Pathname(file_name).expand_path
6
+ raise "Spec file not found: #{file_name.inspect}" unless path.exist?
7
+ path.directory? ? path.to_s + "/**/*.rb" : path.to_s
8
+ }
9
+ end
10
+
11
+ all_files = Rake::FileList["./spec/**/*_spec.rb"]
12
+ files = arg_files || all_files
13
+ puts "\nRuning tests for: #{ files.join(" ") }\n\n"
14
+
15
+ system *["matest"].concat(files)
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Matest
2
- VERSION = "1.4.1"
2
+ VERSION = "1.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-15 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -92,6 +92,7 @@ files:
92
92
  - lib/matest/skip_me.rb
93
93
  - lib/matest/spec_printer.rb
94
94
  - lib/matest/spec_status.rb
95
+ - lib/matest/spec_tasks.rb
95
96
  - lib/matest/top_level_methods.rb
96
97
  - lib/matest/version.rb
97
98
  - matest.gemspec