minitest-gcstats 1.1.0 → 1.2.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: e934b4bc7ea0b03bf24a93a559b430fedded0684
4
- data.tar.gz: 10a52ed10df4f64515867a4174b5d7901af26060
3
+ metadata.gz: e87bd43826e6d8e881bc71592e3c2f4473f8256f
4
+ data.tar.gz: 57507bcf17539fa5983d830812bd5a5ea27a01cf
5
5
  SHA512:
6
- metadata.gz: c8bbd313972599e4c742574f6e4a8ebcdfd026f506f81c5d2cf8e2e8fa0494991f7d3a99827f391e0d32b1225f2b28e0c7d99b7f9cf2484e5d959047a894a476
7
- data.tar.gz: 46229689d74458d2e28b0a6c733dc9b7f090f890a592fde75fb1b54edb192ad1456e94df427c9bef2ca9da8a44836b74736ed3d32237ef8ce85222c825bc2cb7
6
+ metadata.gz: 13759e48f90e6c5c1e7a1c98ef27693ae684f9f49006ecd4642c32b3586d8402b68250267e6e2566845af427a70122abe185575832d0e9f0a6af151a981b9fb4
7
+ data.tar.gz: a585ed6cceb82cc4e982ae1bea1003b6907f955f475c2369a0be5b027091b2fa1beea7c9e7df5e852003a25ba6cabd400307a720222cb5a406ee3f109754b975
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,13 @@
1
+ === 1.2.0 / 2015-05-06
2
+
3
+ * 1 minor enhancement:
4
+
5
+ * Added assert_allocations to verify the number of objects allocated in tests.
6
+
7
+ * 1 bug fix:
8
+
9
+ * Fixed dependencies
10
+
1
11
  === 1.1.0 / 2014-09-26
2
12
 
3
13
  * 1 minor enhancement:
data/Rakefile CHANGED
@@ -3,15 +3,20 @@
3
3
  require "rubygems"
4
4
  require "hoe"
5
5
 
6
- Hoe.plugin :isolate
7
6
  Hoe.plugin :seattlerb
8
7
  Hoe.plugin :rdoc
8
+ Hoe.plugin :isolate
9
9
 
10
10
  Hoe.add_include_dirs "../../minitest/dev/lib"
11
11
 
12
12
  Hoe.spec "minitest-gcstats" do
13
13
  developer "Ryan Davis", "ryand-ruby@zenspider.com"
14
14
  license "MIT"
15
+
16
+ dependency "minitest", "~> 5.0"
17
+ dependency "rake", "< 11", :developer
18
+
19
+ multiruby_skip << '1.8'
15
20
  end
16
21
 
17
22
  # vim: syntax=ruby
@@ -1,7 +1,7 @@
1
1
  require "minitest"
2
2
 
3
3
  module Minitest::GCStats
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
 
6
6
  attr_accessor :gc_stats
7
7
 
@@ -30,6 +30,33 @@ module Minitest::GCStats
30
30
  end
31
31
  end
32
32
 
33
+ module Minitest::Assertions
34
+ ##
35
+ # Assert that the number of object allocations during block
36
+ # execution is what you think it is. Uses +assert_operator+ so +op+
37
+ # should be something like :== or :<=. Defaults to :==.
38
+ #
39
+ # assert_allocations 3 do ... end
40
+ #
41
+ # is equivalent to:
42
+ #
43
+ # assert_allocations :==, 3 do ... end
44
+
45
+ def assert_allocations op_or_exp, exp = nil, msg = nil
46
+ m0 = Minitest::GCStats.current
47
+ yield
48
+ m1 = Minitest::GCStats.current
49
+
50
+ op = op_or_exp
51
+ op, exp, msg = :==, op, exp if Integer === op
52
+
53
+ act = m1 - m0
54
+ msg ||= "Object allocations"
55
+
56
+ assert_operator act, op, exp, msg
57
+ end
58
+ end
59
+
33
60
  class Minitest::GCStatsReporter < Minitest::AbstractReporter
34
61
  attr_accessor :stats, :max
35
62
 
@@ -1,4 +1,5 @@
1
1
  require "minitest/autorun"
2
+ require "minitest/gcstats"
2
3
 
3
4
  module TestMinitest; end
4
5
 
@@ -347,3 +348,73 @@ class TestMinitest::TestGcstats < Minitest::Test
347
348
  # do nothing
348
349
  end
349
350
  end
351
+
352
+ class TestAssertObject < Minitest::Test
353
+ def test_assert_allocations
354
+ assert_allocations 1 do
355
+ []
356
+ end
357
+ end
358
+
359
+ def test_assert_allocations_0
360
+ assert_allocations 0 do
361
+ # nothing
362
+ end
363
+ end
364
+
365
+ def test_assert_allocations_multi
366
+ assert_allocations 3 do
367
+ 3.times { Object.new }
368
+ end
369
+ end
370
+
371
+ def test_assert_allocations_multi_eq
372
+ assert_allocations :==, 3 do
373
+ 3.times { Object.new }
374
+ end
375
+ end
376
+
377
+ def test_assert_allocations_neg_lt
378
+ assert_allocations :<=, 3 do
379
+ 2.times { Object.new }
380
+ end
381
+ end
382
+
383
+ def test_assert_allocations_neg_eq
384
+ assert_allocations :<=, 3 do
385
+ 3.times { Object.new }
386
+ end
387
+ end
388
+
389
+ def assert_triggered expected, klass = Minitest::Assertion
390
+ e = assert_raises klass do
391
+ yield
392
+ end
393
+
394
+ msg = e.message.sub(/(---Backtrace---).*/m, '\1')
395
+ msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
396
+ msg.gsub!(/(\d\.\d{6})\d+/, '\1xxx') # normalize: ruby version, impl, platform
397
+
398
+ assert_equal expected, msg
399
+ end
400
+
401
+ def test_assert_allocations_bad
402
+ exp = "Object allocations.\nExpected 2 to be == 1."
403
+
404
+ assert_triggered exp do
405
+ assert_allocations 1 do
406
+ [Object.new]
407
+ end
408
+ end
409
+ end
410
+
411
+ def test_assert_allocations_neg_bad
412
+ exp = "Object allocations.\nExpected 5 to be <= 3."
413
+
414
+ assert_triggered exp do
415
+ assert_allocations :<=, 3 do
416
+ 5.times { Object.new }
417
+ end
418
+ end
419
+ end
420
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-gcstats
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  xJcC6UN6NHMOVMyAXsr2HR0gRRx4ofN1LoP2KhXzSr8UMvQYlwPmE0N5GQv1b5AO
30
30
  VpzF30vNaJK6ZT7xlIsIlwmH
31
31
  -----END CERTIFICATE-----
32
- date: 2014-09-26 00:00:00.000000000 Z
32
+ date: 2015-05-07 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: minitest
@@ -37,14 +37,14 @@ dependencies:
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '5.4'
41
- type: :development
40
+ version: '5.0'
41
+ type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '5.4'
47
+ version: '5.0'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rdoc
50
50
  requirement: !ruby/object:Gem::Requirement
@@ -59,20 +59,34 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '4.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - <
67
+ - !ruby/object:Gem::Version
68
+ version: '11'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - <
74
+ - !ruby/object:Gem::Version
75
+ version: '11'
62
76
  - !ruby/object:Gem::Dependency
63
77
  name: hoe
64
78
  requirement: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ~>
67
81
  - !ruby/object:Gem::Version
68
- version: '3.12'
82
+ version: '3.13'
69
83
  type: :development
70
84
  prerelease: false
71
85
  version_requirements: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ~>
74
88
  - !ruby/object:Gem::Version
75
- version: '3.12'
89
+ version: '3.13'
76
90
  description: |-
77
91
  A minitest plugin that adds a report of the top tests by number of
78
92
  objects allocated.
@@ -116,10 +130,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
130
  version: '0'
117
131
  requirements: []
118
132
  rubyforge_project:
119
- rubygems_version: 2.4.1
133
+ rubygems_version: 2.4.5
120
134
  signing_key:
121
135
  specification_version: 4
122
136
  summary: A minitest plugin that adds a report of the top tests by number of objects
123
137
  allocated.
124
- test_files:
125
- - test/minitest/test_gcstats.rb
138
+ test_files: []
metadata.gz.sig CHANGED
Binary file