hoe-debugging 1.4.2 → 1.5.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
- SHA1:
3
- metadata.gz: 9752b85471af7fb7b0cfb93374468f9363caed64
4
- data.tar.gz: c8d2e617c71b3146a2edd80eb2c0183dcbde74bb
2
+ SHA256:
3
+ metadata.gz: d39769e054a2227a063051c68b0599af45f585371f75cccd36410f573d512923
4
+ data.tar.gz: 47c2207158e4ed4968d7c221c8536bfe29f962506e7c7705830bfd765d6bfbdf
5
5
  SHA512:
6
- metadata.gz: aa0e8ae03198b52b4a8be27773a97f86a1aa6e9a1a7095d5a9f94604d3c571d60166caf7812b59eab0fb8dc36edea5c89a86eb87d59fc468f5bc4080e982ba49
7
- data.tar.gz: 6cf3f10113efa0d8204742000dfb3d515bdb8c9f53a0196e67457b34ba44f71db6b08392bcfdd4c61198d136fa1fa0a1287ca658d15bf7879a8d03ae5bb63cb0
6
+ metadata.gz: 29f3d8e7cf2944169832cb7f7189baf525c16790b2dc77a49916ba36117ee50d0a5d2c726c40c9cb6ec6a3d41154e4fa704cb7465b02f8503e3fa2da35b1762d
7
+ data.tar.gz: 22f26dd9e758470f71f891d0cf719e173c1bec60e5c7e56709d46b46a8f645daa70483cc83ecd1fc4cb2f73a60caf765ea8081b8563be06d595f105a4a5c40c2
@@ -1,3 +1,13 @@
1
+ == Changelog for `hoe-debugging`
2
+
3
+ === 1.5.0 / 2018-11-02
4
+
5
+ Features:
6
+
7
+ * Suppression metadata is always logged when warnings are generated
8
+ * Rake task `valgrind:suppression` can generate a suppression file from a previous run's log file. Great for when CI finds things that are hard to reproduce!
9
+
10
+
1
11
  === 1.4.2 / 2017-06-19
2
12
 
3
13
  Features:
data/README.md CHANGED
@@ -5,26 +5,58 @@
5
5
 
6
6
  ## Description
7
7
 
8
- A Hoe plugin to help you debug your C extensions. This plugin provides `test:gdb` and `test:valgrind` tasks (plus a few variants).
8
+ A Hoe plugin to help you debug your C extensions. This plugin provides `test:gdb` and `test:valgrind` tasks (plus a few variants). As of v1.5 it also can generate a valgrind suppression from a previous test suite's log file.
9
9
 
10
10
  See the `Hoe::Debugging` module for a few configuration options.
11
11
 
12
12
  This plugin expects you to have `gdb` and `valgrind` available in your `PATH`.
13
13
 
14
14
 
15
+ ## Summary
16
+
17
+ In your Rakefile:
18
+
19
+ ``` ruby
20
+ Hoe.plugin :debugging
21
+ ```
22
+
23
+ Then you'll get the following rake tasks:
24
+
25
+ ```
26
+ rake test:valgrind # debugging # Run the test suite under Valgrind
27
+ rake test:valgrind:mem # debugging # Run the test suite under Valgrind with memory-fill
28
+ rake test:valgrind:mem0 # debugging # Run the test suite under Valgrind with memory-zero
29
+ rake test:valgrind:suppression # debugging # Generate a valgrind suppression file for your test suite
30
+ rake valgrind:suppression[file] # debugging # Generate a valgrind suppression file from a previous run's log file
31
+ ```
32
+
33
+
15
34
  ## Examples
16
35
 
36
+ Run your test suite under gdb:
37
+
38
+ ``` sh
39
+ rake test:gdb
40
+ ```
41
+
42
+ Run your test suite with valgrind's memcheck:
43
+
44
+ ``` sh
45
+ rake test:valgrind
46
+ ```
47
+
48
+ If you have repeatable valgrind warnings that you've decided it's OK to suppress:
49
+
50
+ ``` sh
51
+ rake test:valgrind:suppression
52
+ rake test:valgrind # when this runs, the previous run's errors will be suppressed
17
53
  ```
18
- # in your Rakefile
19
- Hoe.plugin :debugging
20
54
 
21
- # in your shell
22
- $ rake test:gdb
23
- $ rake test:valgrind
55
+ If you have a log file containing hard-to-reproduce valgrind warnings (e.g., from CI) that you've decided it's OK to suppress:
24
56
 
25
- # if you've got valgrind warnings you've deemed OK to suppress
26
- $ rake test:valgrind:suppression
27
- $ rake test:valgrind # this runs, suppressing the errors previously emitted by valgrind
57
+ ``` sh
58
+ rake valgrind:suppression[path/to/file]
59
+ rake test:valgrind # when this runs, the errors from that log file will be suppressed
28
60
  ```
29
61
 
30
62
 
data/Rakefile CHANGED
@@ -16,7 +16,7 @@ Hoe.spec "hoe-debugging" do
16
16
 
17
17
  license "MIT"
18
18
 
19
- extra_dev_deps << ["bundler", ">= 0"]
19
+ extra_dev_deps << ["bundler", "~> 1.16"]
20
20
  extra_dev_deps << ["hoe", "~> 3.1"]
21
21
  extra_dev_deps << ["hoe-bundler", ">= 0"]
22
22
  extra_dev_deps << ["hoe-gemspec", ">= 0"]
@@ -11,7 +11,7 @@ class Hoe #:nodoc:
11
11
  # * <tt>test:valgrind:mem0</tt>
12
12
 
13
13
  module Debugging
14
- VERSION = "1.4.2" #:nodoc:
14
+ VERSION = "1.5.0" #:nodoc:
15
15
 
16
16
  ##
17
17
  # The exit code of valgrind when it detects an error.
@@ -37,6 +37,7 @@ class Hoe #:nodoc:
37
37
  "--partial-loads-ok=yes",
38
38
  "--undef-value-errors=no",
39
39
  "--error-exitcode=#{ERROR_EXITCODE}",
40
+ "--gen-suppressions=all",
40
41
  ]
41
42
  end
42
43
 
@@ -104,7 +105,7 @@ class Hoe #:nodoc:
104
105
 
105
106
  desc "Generate a valgrind suppression file for your test suite."
106
107
  task "test:valgrind:suppression" do
107
- vopts = valgrind_options + ["--gen-suppressions=all"]
108
+ vopts = valgrind_options
108
109
  generated_suppression_file = false
109
110
  ::Tempfile.open "hoe_debugging_valgrind_suppression_log" do |logfile|
110
111
  begin
@@ -119,6 +120,14 @@ class Hoe #:nodoc:
119
120
  puts "WARNING: no valgrind warnings detected, no suppressions file generated"
120
121
  end
121
122
  end
123
+
124
+ desc "Generate a valgrind suppression file from a previous run's log file"
125
+ task "valgrind:suppression", [:file] do |task, args|
126
+ file_path = args[:file]
127
+ raise "Please specify the path to your log file" unless file
128
+ suppfile = hoe_debugging_valgrind_helper.save_suppressions_from file_path
129
+ puts "NOTICE: saved suppressions to #{suppfile}"
130
+ end
122
131
  end
123
132
 
124
133
  class ValgrindHelper
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "bundler"
3
+ gem "bundler", "~> 1.16"
4
4
  gem "hoe"
5
5
  gem "hoe-debugging", path: "../../.."
6
6
  gem "minitest"
@@ -23,6 +23,8 @@ HOE = Hoe.spec "test_project" do |spec|
23
23
  spec.version = "1.0.0"
24
24
  end
25
25
 
26
+ raise "ERROR: failed to load gem under test" if ::Hoe.bad_plugins.include?(:debugging)
27
+
26
28
  Rake::ExtensionTask.new("test_project")
27
29
 
28
30
  # vim: syntax=ruby
@@ -5,14 +5,30 @@ describe "exit code" do
5
5
  Rake.sh command, verbose: false
6
6
  end
7
7
 
8
+ def do_in_test_dir
9
+ Bundler.with_clean_env do
10
+ Dir.chdir test_dir do
11
+ saved_gemfile = ENV['BUNDLE_GEMFILE']
12
+ ENV['BUNDLE_GEMFILE'] = "./Gemfile"
13
+ begin
14
+ yield
15
+ ensure
16
+ ENV['BUNDLE_GEMFILE'] = saved_gemfile
17
+ end
18
+ end
19
+ end
20
+ end
21
+
8
22
  let(:test_dir) { File.join(File.dirname(__FILE__), "files/test_project") }
9
23
 
10
24
  before do
11
- Bundler.with_clean_env do
12
- Dir.chdir test_dir do
13
- sh "gem install bundler > #{logfile} 2>&1"
14
- sh "bundle install >> #{logfile} 2>&1"
25
+ do_in_test_dir do
26
+ begin
27
+ sh "bundle install > #{logfile} 2>&1"
15
28
  sh "bundle exec rake compile >> #{logfile} 2>&1"
29
+ rescue RuntimeError => e
30
+ puts "SETUP FAILED:\n#{File.read(logfile)}"
31
+ raise
16
32
  end
17
33
  end
18
34
  end
@@ -20,25 +36,21 @@ describe "exit code" do
20
36
  context "from a good run" do
21
37
  let(:logfile) { "good-run.log" }
22
38
  it "is zero" do
23
- Bundler.with_clean_env do
24
- Dir.chdir test_dir do
25
- system "bundle exec rake test:valgrind TESTOPTS='--name /notexist/' >> #{logfile} 2>&1"
26
- exitcode = $?
27
- expect(exitcode.success?).to(be_truthy, File.read(logfile))
28
- end
39
+ do_in_test_dir do
40
+ system "bundle exec rake test:valgrind TESTOPTS='--name /notexist/' >> #{logfile} 2>&1"
41
+ exitcode = $?
42
+ expect(exitcode.success?).to(be_truthy, File.read(logfile))
29
43
  end
30
44
  end
31
45
  end
32
46
 
33
47
  context "from a bad run" do
34
- let(:logfile) { "good-run.log" }
48
+ let(:logfile) { "bad-run.log" }
35
49
  it "is nonzero" do
36
- Bundler.with_clean_env do
37
- Dir.chdir test_dir do
38
- system "bundle exec rake test:valgrind >> #{logfile} 2>&1"
39
- exitcode = $?
40
- expect(exitcode.success?).to(be_falsey, File.read(logfile))
41
- end
50
+ do_in_test_dir do
51
+ system "bundle exec rake test:valgrind >> #{logfile} 2>&1"
52
+ exitcode = $?
53
+ expect(exitcode.success?).to(be_falsey, File.read(logfile))
42
54
  end
43
55
  end
44
56
  end
@@ -27,7 +27,7 @@ describe Hoe::Debugging::ValgrindHelper do
27
27
  it "returns possible suppression file matches in order of specificity" do
28
28
  helper = klass.new "myproj"
29
29
  allow(helper).to receive(:formatted_ruby_version) { "ruby-1.9.3.194" }
30
- expect(helper.version_matches).to eq %w[ruby-1.9.3.194 ruby-1.9.3 ruby-1.9]
30
+ expect(helper.version_matches).to eq %w[ruby-1.9.3.194 ruby-1.9.3 ruby-1.9 ruby-1]
31
31
  end
32
32
  end
33
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoe-debugging
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Barnette
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-19 00:00:00.000000000 Z
12
+ date: 2018-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '1.16'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '1.16'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: hoe
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +138,7 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '4.0'
140
140
  description: |-
141
- A Hoe plugin to help you debug your C extensions. This plugin provides `test:gdb` and `test:valgrind` tasks (plus a few variants).
141
+ A Hoe plugin to help you debug your C extensions. This plugin provides `test:gdb` and `test:valgrind` tasks (plus a few variants). As of v1.5 it also can generate a valgrind suppression from a previous test suite's log file.
142
142
 
143
143
  See the `Hoe::Debugging` module for a few configuration options.
144
144
 
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  version: '0'
196
196
  requirements: []
197
197
  rubyforge_project:
198
- rubygems_version: 2.6.12
198
+ rubygems_version: 2.7.7
199
199
  signing_key:
200
200
  specification_version: 4
201
201
  summary: A Hoe plugin to help you debug your C extensions