m 1.3.4 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd1ad8313ab5bd9e236d70fe871ba3e29d871221
4
- data.tar.gz: 0e6b5521243cf531c2c45509aaf9d27c438696d5
3
+ metadata.gz: 9436a8da214c3991f21610d54d7f9a97e14835f7
4
+ data.tar.gz: 0d67da2b4de31c4cc41b8796e9e0c41482f36cc8
5
5
  SHA512:
6
- metadata.gz: 33c1b791fe1b6c24152547b4629a9b48a7be747b80d946d7180083835265cf5c98d46d5cdeacb6c1382722871c37dc04a37c55851ecd76841277b4a1a67513f3
7
- data.tar.gz: 79c1d8f2ab1417c58807cd69275de576fd94ca746dc5d48dc043d2372bc8a5b55eaddd26d4e662a49583f884e3c1373f36f3417888702d17f09f9988bbbf5324
6
+ metadata.gz: 21a7165beb196aec53eff14edff1334d9c065324825c69643a41ce1e71e22e1dd9f82fbbd27ad7c6c1a0c70c33ef5443e39b0a86fe0ae33edd8a116ad2659692
7
+ data.tar.gz: 8ed90bc2beaa7b33002243af5938db5c25f3809962eb228a2d8e43c52e13ac1c43698d32986b5b34c2438b651d73c32eb5b0d9b9a14a09c94672c3205f5251e4
@@ -2,9 +2,11 @@ rvm:
2
2
  - 2.0.0
3
3
  - 2.1.0
4
4
  - 2.2.0
5
+ - jruby-1.7.21
5
6
  install:
6
7
  - bundle install
7
8
  - bundle --gemfile=gemfiles/minitest5.gemfile
8
9
  - bundle --gemfile=gemfiles/minitest4.gemfile
10
+ - bundle --gemfile=gemfiles/test_unit_gem.gemfile
9
11
  script:
10
12
  - bundle exec rake tests
data/Appraisals CHANGED
@@ -5,3 +5,7 @@ end
5
5
  appraise "minitest5" do
6
6
  gem 'minitest'
7
7
  end
8
+
9
+ appraise "test_unit_gem" do
10
+ gem 'test-unit'
11
+ end
data/Gemfile CHANGED
@@ -3,4 +3,8 @@ source 'https://rubygems.org'
3
3
  gem 'coveralls', require: false
4
4
  gem 'benchmark-ips'
5
5
 
6
+ if RUBY_VERSION !~ /^2.0/ && !defined?(JRUBY_VERSION)
7
+ gem 'allocation_stats'
8
+ end
9
+
6
10
  gemspec
data/Rakefile CHANGED
@@ -3,9 +3,9 @@ require 'rubygems'
3
3
  require 'bundler/setup'
4
4
  require 'appraisal'
5
5
  require 'coveralls'
6
- require "bundler/gem_tasks"
6
+ require 'bundler/gem_tasks'
7
7
  require 'rake/clean'
8
- require "rake/testtask"
8
+ require 'rake/testtask'
9
9
 
10
10
  task :default => [:test]
11
11
 
@@ -17,21 +17,33 @@ end
17
17
 
18
18
  desc 'Run all tests and get merged test coverage'
19
19
  task :tests do
20
- system "appraisal minitest4 rake test"
21
- system "appraisal minitest5 rake test TEST=test/minitest_5_test.rb"
20
+ system "rake test" or exit!(1)
21
+ system "appraisal minitest4 rake test" or exit!(1)
22
+ system "appraisal minitest5 rake test TEST=test/minitest_5_test.rb" or exit!(1)
23
+ system "appraisal test_unit_gem rake test TEST=test/test_unit_test.rb" or exit!(1)
22
24
  Coveralls.push!
23
25
  end
24
26
 
25
27
  desc 'Run simple benchmarks'
26
28
  task :bench do
27
- exec "ruby test/bench.rb > benchmarks/#{Time.now.strftime('%Y%m%d')}-benchmark.log"
29
+ current_commit = `git rev-parse HEAD`
30
+ file_name = "benchmarks/#{Time.now.strftime('%Y%m%d')}-benchmark.log"
31
+ exec "echo -e 'Data for commit: #{current_commit}' > #{file_name} && ruby test/bench.rb >> #{file_name}"
28
32
  end
29
33
 
30
34
  # ROCCO ===============================================================
31
35
 
32
- require 'rdiscount'
33
- require 'rocco/tasks'
34
- Rocco::make 'docs/'
36
+ begin
37
+ require 'rdiscount'
38
+ rescue LoadError => e
39
+ warn e.inspect
40
+ end
41
+ begin
42
+ require 'rocco/tasks'
43
+ Rocco::make 'docs/'
44
+ rescue LoadError => e
45
+ warn e.inspect
46
+ end
35
47
 
36
48
  desc 'Build rocco docs'
37
49
  task :docs => :rocco
@@ -0,0 +1,28 @@
1
+ 653927eae75f5ca814e2760a64849658a8d99a1f
2
+
3
+ Calculating -------------------------------------
4
+ running m on a file that doesn't exist
5
+ 1.000 i/100ms
6
+ running m on an empty file
7
+ 1.000 i/100ms
8
+ running m on an entire file with minitest5
9
+ 1.000 i/100ms
10
+ running m on an entire file with minitest4
11
+ 1.000 i/100ms
12
+ running m on a specific test with minitest4
13
+ 1.000 i/100ms
14
+ running m on a specific test with minitest5
15
+ 1.000 i/100ms
16
+ -------------------------------------------------
17
+ running m on a file that doesn't exist
18
+ 3.171 (± 0.0%) i/s - 16.000
19
+ running m on an empty file
20
+ 1.911 (± 0.0%) i/s - 10.000
21
+ running m on an entire file with minitest5
22
+ 0.737 (± 0.0%) i/s - 4.000 in 5.429737s
23
+ running m on an entire file with minitest4
24
+ 0.757 (± 0.0%) i/s - 4.000 in 5.284200s
25
+ running m on a specific test with minitest4
26
+ 0.741 (± 0.0%) i/s - 4.000 in 5.397341s
27
+ running m on a specific test with minitest5
28
+ 0.741 (± 0.0%) i/s - 4.000 in 5.398335s
@@ -0,0 +1,36 @@
1
+ -e Data for commit: 6978a0778228cf1a96de0e41de0457969ddf4720
2
+
3
+ Calculating -------------------------------------
4
+ running m on a file that doesn't exist
5
+ 1.000 i/100ms
6
+ running m on an empty file
7
+ 1.000 i/100ms
8
+ running m on an entire file with minitest4
9
+ 1.000 i/100ms
10
+ running m on an entire file with minitest5
11
+ 1.000 i/100ms
12
+ running m on an entire file with test-unit gem
13
+ 1.000 i/100ms
14
+ running m on a specific test with minitest4
15
+ 1.000 i/100ms
16
+ running m on a specific test with minitest5
17
+ 1.000 i/100ms
18
+ running m on a specific test with test-unit gem
19
+ 1.000 i/100ms
20
+ -------------------------------------------------
21
+ running m on a file that doesn't exist
22
+ 2.400 (± 0.0%) i/s - 13.000 in 5.417140s
23
+ running m on an empty file
24
+ 1.579 (± 0.0%) i/s - 8.000
25
+ running m on an entire file with minitest4
26
+ 0.554 (± 0.0%) i/s - 3.000 in 5.419503s
27
+ running m on an entire file with minitest5
28
+ 0.557 (± 0.0%) i/s - 3.000 in 5.387670s
29
+ running m on an entire file with test-unit gem
30
+ 0.536 (± 0.0%) i/s - 3.000 in 5.596156s
31
+ running m on a specific test with minitest4
32
+ 0.559 (± 0.0%) i/s - 3.000 in 5.367341s
33
+ running m on a specific test with minitest5
34
+ 0.555 (± 0.0%) i/s - 3.000 in 5.410256s
35
+ running m on a specific test with test-unit gem
36
+ 0.537 (± 0.0%) i/s - 3.000 in 5.583095s
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "coveralls", :require=>false
5
+ gem "coveralls", :require => false, :group => :coverage
6
6
  gem "minitest", "4.7.5"
7
7
 
8
- gemspec :path=>"../"
8
+ gemspec :path => "../"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- m (1.3.3)
4
+ m (1.3.4)
5
5
  method_source (>= 0.6.7)
6
6
  rake (>= 0.9.2.2)
7
7
 
@@ -18,6 +18,7 @@ GEM
18
18
  bundler
19
19
  rake
20
20
  atomic (1.1.14)
21
+ atomic (1.1.14-java)
21
22
  coveralls (0.8.1)
22
23
  json (~> 1.8)
23
24
  rest-client (>= 1.6.8, < 2)
@@ -31,15 +32,16 @@ GEM
31
32
  domain_name (~> 0.5)
32
33
  i18n (0.6.9)
33
34
  json (1.8.2)
35
+ json (1.8.2-java)
34
36
  method_source (0.8.2)
35
37
  mime-types (2.5)
36
38
  minitest (4.7.5)
37
39
  multi_json (1.8.4)
38
- mustache (0.99.4)
40
+ mustache (1.0.2)
39
41
  netrc (0.10.3)
40
42
  rake (10.1.1)
41
- rdiscount (1.6.8)
42
- redcarpet (3.0.0)
43
+ rdiscount (2.1.8)
44
+ redcarpet (3.3.2)
43
45
  rest-client (1.8.0)
44
46
  http-cookie (>= 1.0.2, < 2.0)
45
47
  mime-types (>= 1.16, < 3.0)
@@ -57,13 +59,17 @@ GEM
57
59
  thor (0.19.1)
58
60
  thread_safe (0.1.3)
59
61
  atomic
62
+ thread_safe (0.1.3-java)
63
+ atomic
60
64
  tins (1.5.1)
61
65
  tzinfo (0.3.38)
62
66
  unf (0.1.4)
63
67
  unf_ext
68
+ unf (0.1.4-java)
64
69
  unf_ext (0.0.7.1)
65
70
 
66
71
  PLATFORMS
72
+ java
67
73
  ruby
68
74
 
69
75
  DEPENDENCIES
@@ -74,3 +80,6 @@ DEPENDENCIES
74
80
  minitest (= 4.7.5)
75
81
  rdiscount
76
82
  rocco
83
+
84
+ BUNDLED WITH
85
+ 1.10.6
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "coveralls", :require=>false
5
+ gem "coveralls", :require => false, :group => :coverage
6
6
  gem "minitest"
7
7
 
8
- gemspec :path=>"../"
8
+ gemspec :path => "../"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- m (1.3.3)
4
+ m (1.3.4)
5
5
  method_source (>= 0.6.7)
6
6
  rake (>= 0.9.2.2)
7
7
 
@@ -27,15 +27,16 @@ GEM
27
27
  domain_name (~> 0.5)
28
28
  i18n (0.6.9)
29
29
  json (1.8.2)
30
+ json (1.8.2-java)
30
31
  method_source (0.8.2)
31
32
  mime-types (2.5)
32
33
  minitest (5.3.1)
33
34
  multi_json (1.8.4)
34
- mustache (0.99.4)
35
+ mustache (1.0.2)
35
36
  netrc (0.10.3)
36
37
  rake (10.1.1)
37
- rdiscount (1.6.8)
38
- redcarpet (3.0.0)
38
+ rdiscount (2.1.8)
39
+ redcarpet (3.3.2)
39
40
  rest-client (1.8.0)
40
41
  http-cookie (>= 1.0.2, < 2.0)
41
42
  mime-types (>= 1.16, < 3.0)
@@ -54,9 +55,11 @@ GEM
54
55
  tins (1.5.1)
55
56
  unf (0.1.4)
56
57
  unf_ext
58
+ unf (0.1.4-java)
57
59
  unf_ext (0.0.7.1)
58
60
 
59
61
  PLATFORMS
62
+ java
60
63
  ruby
61
64
 
62
65
  DEPENDENCIES
@@ -67,3 +70,6 @@ DEPENDENCIES
67
70
  minitest
68
71
  rdiscount
69
72
  rocco
73
+
74
+ BUNDLED WITH
75
+ 1.10.6
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "coveralls", :require => false, :group => :coverage
6
+ gem "test-unit"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,85 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ m (1.3.4)
5
+ method_source (>= 0.6.7)
6
+ rake (>= 0.9.2.2)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (4.2.3)
12
+ i18n (~> 0.7)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
15
+ thread_safe (~> 0.3, >= 0.3.4)
16
+ tzinfo (~> 1.1)
17
+ appraisal (2.0.2)
18
+ bundler
19
+ rake
20
+ thor (>= 0.14.0)
21
+ coveralls (0.8.2)
22
+ json (~> 1.8)
23
+ rest-client (>= 1.6.8, < 2)
24
+ simplecov (~> 0.10.0)
25
+ term-ansicolor (~> 1.3)
26
+ thor (~> 0.19.1)
27
+ docile (1.1.5)
28
+ domain_name (0.5.24)
29
+ unf (>= 0.0.5, < 1.0.0)
30
+ http-cookie (1.0.2)
31
+ domain_name (~> 0.5)
32
+ i18n (0.7.0)
33
+ json (1.8.3)
34
+ json (1.8.3-java)
35
+ method_source (0.8.2)
36
+ mime-types (2.6.1)
37
+ minitest (5.7.0)
38
+ mustache (1.0.2)
39
+ netrc (0.10.3)
40
+ power_assert (0.2.4)
41
+ rake (10.4.2)
42
+ rdiscount (2.1.8)
43
+ redcarpet (3.3.2)
44
+ rest-client (1.8.0)
45
+ http-cookie (>= 1.0.2, < 2.0)
46
+ mime-types (>= 1.16, < 3.0)
47
+ netrc (~> 0.7)
48
+ rocco (0.8.2)
49
+ mustache
50
+ redcarpet
51
+ simplecov (0.10.0)
52
+ docile (~> 1.1.0)
53
+ json (~> 1.8)
54
+ simplecov-html (~> 0.10.0)
55
+ simplecov-html (0.10.0)
56
+ term-ansicolor (1.3.2)
57
+ tins (~> 1.0)
58
+ test-unit (3.1.2)
59
+ power_assert
60
+ thor (0.19.1)
61
+ thread_safe (0.3.5)
62
+ thread_safe (0.3.5-java)
63
+ tins (1.5.4)
64
+ tzinfo (1.2.2)
65
+ thread_safe (~> 0.1)
66
+ unf (0.1.4)
67
+ unf_ext
68
+ unf (0.1.4-java)
69
+ unf_ext (0.0.7.1)
70
+
71
+ PLATFORMS
72
+ java
73
+ ruby
74
+
75
+ DEPENDENCIES
76
+ activesupport
77
+ appraisal
78
+ coveralls
79
+ m!
80
+ rdiscount
81
+ rocco
82
+ test-unit
83
+
84
+ BUNDLED WITH
85
+ 1.10.6
@@ -53,18 +53,18 @@ module M
53
53
  # Memoize it since it's unnecessary to do this more than one for a given file.
54
54
  def tests
55
55
  @tests ||= begin
56
- require "m/test_collection"
57
- require "m/test_method"
58
- # With each suite and array of tests,
59
- # and with each test method present in this test file,
60
- # shove a new test method into this collection.
61
- suites.inject(TestCollection.new) do |collection, (suite_class, test_methods)|
62
- test_methods.each do |test_method|
63
- collection << TestMethod.create(suite_class, test_method)
64
- end
65
- collection
66
- end
67
- end
56
+ require "m/test_collection"
57
+ require "m/test_method"
58
+ # With each suite and array of tests,
59
+ # and with each test method present in this test file,
60
+ # shove a new test method into this collection.
61
+ suites.inject(TestCollection.new) do |collection, (suite_class, test_methods)|
62
+ test_methods.each do |test_method|
63
+ collection << TestMethod.create(suite_class, test_method)
64
+ end
65
+ collection
66
+ end
67
+ end
68
68
  end
69
69
 
70
70
 
@@ -75,7 +75,7 @@ module M
75
75
 
76
76
  begin
77
77
  # Fire up this Ruby file. Let's hope it actually has tests.
78
- load testable.file
78
+ require "./#{testable.file}"
79
79
  rescue LoadError => e
80
80
  # Fail with a happier error message instead of spitting out a backtrace from this gem
81
81
  STDERR.puts "Failed loading test file:\n#{e.message}"
@@ -85,12 +85,11 @@ module M
85
85
  suites = runner.suites
86
86
 
87
87
  # Use some janky internal APIs to group test methods by test suite.
88
- suites.inject({}) do |test_suites, suite_class|
88
+ suites.each_with_object({}) do |suite_class, test_suites|
89
89
  # End up with a hash of suite class name to an array of test methods, so we can later find them and ignore empty test suites
90
90
  if runner.test_methods(suite_class).any?
91
91
  test_suites[suite_class] = runner.test_methods(suite_class)
92
92
  end
93
- test_suites
94
93
  end
95
94
  end
96
95
 
@@ -19,15 +19,15 @@ module M
19
19
  private
20
20
 
21
21
  def minitest5?
22
- defined?(Minitest) && Minitest::Unit::VERSION.start_with?("5")
22
+ self.class.minitest5?
23
23
  end
24
24
 
25
25
  def minitest4?
26
- defined?(MiniTest)
26
+ self.class.minitest4?
27
27
  end
28
28
 
29
29
  def test_unit?
30
- defined?(Test)
30
+ self.class.test_unit?
31
31
  end
32
32
 
33
33
  def self.minitest5?
@@ -39,7 +39,7 @@ module M
39
39
  end
40
40
 
41
41
  def self.test_unit?
42
- defined?(Test)
42
+ defined?(Test::Unit)
43
43
  end
44
44
  end
45
45
  end
@@ -6,7 +6,9 @@ module M
6
6
  end
7
7
 
8
8
  def run(test_arguments)
9
- Minitest.run test_arguments
9
+ output = Minitest.run test_arguments
10
+ ::Minitest.class_variable_get(:@@after_run).reverse_each(&:call)
11
+ output
10
12
  end
11
13
 
12
14
  def test_methods(suite_class)
@@ -2,12 +2,24 @@ module M
2
2
  module Runners
3
3
  class TestUnit < Base
4
4
  def suites
5
- Test::Unit::TestCase.test_suites
5
+ if Test::Unit::TestCase.respond_to?(:test_suites)
6
+ Test::Unit::TestCase.test_suites
7
+ else
8
+ Test::Unit::TestCase::DESCENDANTS
9
+ end
6
10
  end
7
11
 
8
12
  def run(test_arguments)
9
13
  Test::Unit::AutoRunner.run(false, nil, test_arguments)
10
14
  end
15
+
16
+ def test_methods(suite_class)
17
+ if suite_class.respond_to?(:test_methods)
18
+ suite_class.test_methods
19
+ else
20
+ suite_class.public_instance_methods(true).grep(/^test/).map { |m| m.to_s }
21
+ end
22
+ end
11
23
  end
12
24
  end
13
25
  end
@@ -1,3 +1,3 @@
1
1
  module M
2
- VERSION = "1.3.4"
2
+ VERSION = "1.4.0"
3
3
  end
data/m.gemspec CHANGED
@@ -16,11 +16,11 @@ Gem::Specification.new do |gem|
16
16
  gem.add_runtime_dependency "rake", ">= 0.9.2.2"
17
17
 
18
18
  gem.add_development_dependency "activesupport"
19
- gem.add_development_dependency "rdiscount"
20
- gem.add_development_dependency "rocco"
19
+ gem.add_development_dependency "rdiscount" unless defined? JRUBY_VERSION
20
+ gem.add_development_dependency "rocco" unless defined? JRUBY_VERSION
21
21
  gem.add_development_dependency "appraisal"
22
22
 
23
23
  gem.required_ruby_version = ">= 1.9"
24
24
 
25
- gem.summary = description = %q{Run test/unit tests by line number. Metal!}
25
+ gem.summary = gem.description = %q{Run test/unit tests by line number. Metal!}
26
26
  end
@@ -0,0 +1,23 @@
1
+ $LOAD_PATH.unshift 'lib'
2
+ require 'm'
3
+ require 'allocation_stats'
4
+
5
+ def benchmark_allocations(burn: 1)
6
+ stats = AllocationStats.new(burn: burn).trace do
7
+ yield
8
+ end
9
+
10
+ columns = if ENV['DETAIL']
11
+ [:sourcefile, :sourceline, :class_plus]
12
+ else
13
+ [:class_plus]
14
+ end
15
+
16
+ puts stats.allocations(alias_paths: true).group_by(*columns).sort_by_size.to_text
17
+ end
18
+
19
+ benchmark_allocations do
20
+ 10.times do
21
+ M::Runner.new(['test/examples/minitest_5_example_test.rb:19']).run
22
+ end
23
+ end
@@ -9,12 +9,16 @@ Benchmark.ips do |bench|
9
9
  `ruby -Ilib ./bin/m test/examples/empty_example_test.rb 2>/dev/null`
10
10
  end
11
11
 
12
+ bench.report("running m on an entire file with minitest4") do
13
+ `appraisal minitest4 ruby -Ilib ./bin/m test/examples/minitest_4_example_test.rb 2>/dev/null`
14
+ end
15
+
12
16
  bench.report("running m on an entire file with minitest5") do
13
17
  `appraisal minitest5 ruby -Ilib ./bin/m test/examples/minitest_5_example_test.rb 2>/dev/null`
14
18
  end
15
19
 
16
- bench.report("running m on an entire file with minitest4") do
17
- `appraisal minitest4 ruby -Ilib ./bin/m test/examples/minitest_4_example_test.rb 2>/dev/null`
20
+ bench.report("running m on an entire file with test-unit gem") do
21
+ `appraisal test_unit_gem ruby -Ilib ./bin/m test/examples/test_unit_example_test.rb 2>/dev/null`
18
22
  end
19
23
 
20
24
  bench.report("running m on a specific test with minitest4") do
@@ -24,4 +28,8 @@ Benchmark.ips do |bench|
24
28
  bench.report("running m on a specific test with minitest5") do
25
29
  `appraisal minitest5 ruby -Ilib ./bin/m test/examples/minitest_5_example_test.rb:19 2>/dev/null`
26
30
  end
31
+
32
+ bench.report("running m on a specific test with test-unit gem") do
33
+ `appraisal test_unit_gem ruby -Ilib ./bin/m test/examples/test_unit_example_test.rb:15 2>/dev/null`
34
+ end
27
35
  end
@@ -10,7 +10,11 @@ class EverythingTest < MTest
10
10
  output = m('examples/thisdoesnexist_test.rb')
11
11
  assert !$?.success?
12
12
  assert_match(/Failed loading test file/, output)
13
- assert_match(/cannot load such file/, output)
13
+ if defined? JRUBY_VERSION
14
+ assert_match(/no such file to load/, output)
15
+ else
16
+ assert_match(/cannot load such file/, output)
17
+ end
14
18
  end
15
19
 
16
20
  def test_running_tests_within_a_subdirectory
@@ -31,4 +31,6 @@ if M::Frameworks.minitest5?
31
31
  assert_equal "OHAI!", @meme.i_can_has_cheezburger?
32
32
  end
33
33
  end
34
+
35
+ Minitest.after_run { p "ran after run block" }
34
36
  end
@@ -1,3 +1,6 @@
1
+ require_relative '../test_helper'
2
+ try_loading('test-unit')
3
+
1
4
  if M::Frameworks.test_unit?
2
5
  class TestUnitExampleTest < Test::Unit::TestCase
3
6
  def setup
@@ -34,5 +34,11 @@ if M::Frameworks.minitest5?
34
34
  assert_match %r{ test_that_kitty_can_eat: m examples/minitest_5_example_test\.rb:19}, output
35
35
  assert_match %r{test_that_it_will_not_blend: m examples/minitest_5_example_test\.rb:23}, output
36
36
  end
37
+
38
+ def test_run_with_after_run_block
39
+ output = m('examples/minitest_5_example_test.rb')
40
+
41
+ assert_output(/ran after run block/, output)
42
+ end
37
43
  end
38
44
  end
@@ -1,5 +1,9 @@
1
- require 'coveralls'
2
- Coveralls.wear_merged!
1
+ begin
2
+ require 'coveralls'
3
+ Coveralls.wear_merged!
4
+ rescue LoadError
5
+ warn "gem 'coveralls' not available, proceeding without it"
6
+ end
3
7
 
4
8
  module Testable
5
9
  def m(arguments)
@@ -15,10 +19,25 @@ module Testable
15
19
  end
16
20
 
17
21
  require 'm'
18
- require 'minitest/autorun'
22
+
23
+ def try_loading(gem)
24
+ begin
25
+ require gem
26
+ rescue LoadError
27
+ return false
28
+ end
29
+ end
30
+
31
+ try_loading('test-unit') ||
32
+ try_loading('minitest/autorun') ||
33
+ try_loading('test/unit')
34
+
19
35
  if M::Frameworks.test_unit?
20
- require 'test/unit'
21
- require 'active_support/test_case'
36
+ begin
37
+ require 'test-unit'
38
+ rescue LoadError
39
+ require('active_support/test_case')
40
+ end
22
41
 
23
42
  class MTest < Test::Unit::TestCase
24
43
  include ::Testable
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  if M::Frameworks.test_unit?
4
4
  class TestUnitTest < MTest
5
5
  def test_run_simple_test_by_line_number
6
- output = m('examples/test_unit_example_test.rb:7')
6
+ output = m('examples/test_unit_example_test.rb:9')
7
7
  assert_output(/1 tests, 1 assertions/, output)
8
8
  end
9
9
 
@@ -13,27 +13,27 @@ if M::Frameworks.test_unit?
13
13
  end
14
14
 
15
15
  def test_run_inside_of_test
16
- output = m('examples/test_unit_example_test.rb:8')
16
+ output = m('examples/test_unit_example_test.rb:10')
17
17
  assert_output(/1 tests, 1 assertions/, output)
18
18
  end
19
19
 
20
20
  def test_run_on_end_of_test
21
- output = m('examples/test_unit_example_test.rb:9')
21
+ output = m('examples/test_unit_example_test.rb:11')
22
22
  assert_output(/1 tests, 1 assertions/, output)
23
23
  end
24
24
 
25
25
  def test_run_inside_big_test
26
- output = m('examples/test_unit_example_test.rb:14')
26
+ output = m('examples/test_unit_example_test.rb:15')
27
27
  assert_output(/1 tests, 3 assertions/, output)
28
28
  end
29
29
 
30
30
  def test_run_on_blank_line
31
- output = m('examples/test_unit_example_test.rb:2')
31
+ output = m('examples/test_unit_example_test.rb:8')
32
32
 
33
33
  assert !$?.success?
34
- assert_match(/No tests found on line 2. Valid tests to run:/, output)
35
- assert_match(%r{ test_apple: m examples/test_unit_example_test\.rb:7}, output)
36
- assert_match(%r{test_banana: m examples/test_unit_example_test\.rb:11}, output)
34
+ assert_match(/No tests found on line 8. Valid tests to run:/, output)
35
+ assert_match(%r{ test_apple: m examples/test_unit_example_test\.rb:9}, output)
36
+ assert_match(%r{test_banana: m examples/test_unit_example_test\.rb:13}, output)
37
37
  end
38
38
  end
39
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: m
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Quaranto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-02 00:00:00.000000000 Z
11
+ date: 2015-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description:
97
+ description: Run test/unit tests by line number. Metal!
98
98
  email:
99
99
  - nick@quaran.to
100
100
  executables:
@@ -111,11 +111,15 @@ files:
111
111
  - README.md
112
112
  - Rakefile
113
113
  - benchmarks/20150430-benchmark.log
114
+ - benchmarks/20150505-benchmark.log
115
+ - benchmarks/20150927-benchmark.log
114
116
  - bin/m
115
117
  - gemfiles/minitest4.gemfile
116
118
  - gemfiles/minitest4.gemfile.lock
117
119
  - gemfiles/minitest5.gemfile
118
120
  - gemfiles/minitest5.gemfile.lock
121
+ - gemfiles/test_unit_gem.gemfile
122
+ - gemfiles/test_unit_gem.gemfile.lock
119
123
  - lib/m.rb
120
124
  - lib/m/executor.rb
121
125
  - lib/m/frameworks.rb
@@ -134,6 +138,7 @@ files:
134
138
  - rush.jpg
135
139
  - test/Rakefile
136
140
  - test/active_support_test.rb
141
+ - test/allocations.rb
137
142
  - test/bench.rb
138
143
  - test/empty_test.rb
139
144
  - test/everything_test.rb
@@ -173,8 +178,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
178
  version: '0'
174
179
  requirements: []
175
180
  rubyforge_project:
176
- rubygems_version: 2.4.5
181
+ rubygems_version: 2.4.8
177
182
  signing_key:
178
183
  specification_version: 4
179
184
  summary: Run test/unit tests by line number. Metal!
180
- test_files: []
185
+ test_files:
186
+ - test/Rakefile
187
+ - test/active_support_test.rb
188
+ - test/allocations.rb
189
+ - test/bench.rb
190
+ - test/empty_test.rb
191
+ - test/everything_test.rb
192
+ - test/examples/active_support_example_test.rb
193
+ - test/examples/active_support_unescaped_example_test.rb
194
+ - test/examples/empty_example_test.rb
195
+ - test/examples/minitest_4_example_test.rb
196
+ - test/examples/minitest_5_example_test.rb
197
+ - test/examples/multiple_example_test.rb
198
+ - test/examples/subdir/a_test.rb
199
+ - test/examples/subdir/b_test.rb
200
+ - test/examples/subdir/c_test.rb
201
+ - test/examples/subdir_with_failures/a_test.rb
202
+ - test/examples/test_unit_example_test.rb
203
+ - test/minitest_4_test.rb
204
+ - test/minitest_5_test.rb
205
+ - test/multiple_test.rb
206
+ - test/options_test.rb
207
+ - test/test_helper.rb
208
+ - test/test_unit_test.rb