minitest-gcstats 1.1.0 → 1.2.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: 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