ruby_memcheck 2.0.1 → 2.1.1
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 +4 -4
- data/README.md +13 -3
- data/exe/ruby_memcheck +9 -0
- data/lib/ruby_memcheck/ruby_runner.rb +32 -0
- data/lib/ruby_memcheck/version.rb +1 -1
- data/lib/ruby_memcheck.rb +3 -0
- data/suppressions/ruby.supp +9 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0228bfb7a5cb25e9186f0e2702d4ce746b401ce580d8dfaa83af218a513fca8e'
|
4
|
+
data.tar.gz: 35e58e193c25c4d27aecdf46b962b115f443c52d1431c39deb53cb5ddc7c3e6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8fc3da2b1795fd7bde1a0e91b75c918540d194d875cbd9e8633de442859ac0d3c1eb10d70d1cb6d97655eba5c8262d8ec01e9d9dd8003ba75852bfa4e22314d
|
7
|
+
data.tar.gz: 936e627d62f56650fa074cd904922d154631bc08047ea8c6e1516481e895fa2c40001db02b1335feb287d919b6c06ce119d17bca7533af4ed8f25d12be437692
|
data/README.md
CHANGED
@@ -9,7 +9,8 @@ This gem provides a sane way to use Valgrind's memcheck on your native extension
|
|
9
9
|
1. [How does it work?](#how-does-it-work)
|
10
10
|
1. [Limitations](#limitations)
|
11
11
|
1. [Installation](#installation)
|
12
|
-
1. [
|
12
|
+
1. [Running a Ruby script](#running-a-ruby-script)
|
13
|
+
1. [Setup for test suites](#setup-for-test-suites)
|
13
14
|
1. [Configuration](#configuration)
|
14
15
|
1. [Suppression files](#suppression-files)
|
15
16
|
1. [License](#license)
|
@@ -48,7 +49,16 @@ Because of the aggressive heuristics used to filter out false positives, there a
|
|
48
49
|
gem install ruby_memcheck
|
49
50
|
```
|
50
51
|
|
51
|
-
##
|
52
|
+
## Running a Ruby script
|
53
|
+
|
54
|
+
You can run a Ruby script under ruby_memcheck. This will report all memory leaks in all native extensions found in your Ruby script. Simply replace the `ruby` part of your command with `ruby_memcheck`. For example:
|
55
|
+
|
56
|
+
```sh
|
57
|
+
$ ruby_memcheck -e "puts 'Hello world'"
|
58
|
+
Hello world
|
59
|
+
```
|
60
|
+
|
61
|
+
## Setup for test suites
|
52
62
|
|
53
63
|
> **Note**
|
54
64
|
> If you encounter errors from Valgrind that looks like this:
|
@@ -69,7 +79,7 @@ gem install ruby_memcheck
|
|
69
79
|
> sudo make install
|
70
80
|
> ```
|
71
81
|
|
72
|
-
|
82
|
+
You can use ruby_memcheck on your test suite (Minitest or RSpec) using rake.
|
73
83
|
|
74
84
|
0. Install Valgrind.
|
75
85
|
1. In your Rakefile, require this gem.
|
data/exe/ruby_memcheck
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyMemcheck
|
4
|
+
class RubyRunner
|
5
|
+
attr_reader :configuration
|
6
|
+
attr_reader :reporter
|
7
|
+
|
8
|
+
def initialize(*args)
|
9
|
+
@configuration =
|
10
|
+
if !args.empty? && args[0].is_a?(Configuration)
|
11
|
+
args.shift
|
12
|
+
else
|
13
|
+
RubyMemcheck.default_configuration
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def run(*args, **options)
|
18
|
+
command = configuration.command(args.map { |a| Shellwords.escape(a) })
|
19
|
+
|
20
|
+
@reporter = TestTaskReporter.new(configuration)
|
21
|
+
|
22
|
+
@reporter.setup
|
23
|
+
|
24
|
+
system(command, options)
|
25
|
+
exit_code = $CHILD_STATUS.exitstatus
|
26
|
+
|
27
|
+
@reporter.report_valgrind_errors
|
28
|
+
|
29
|
+
exit_code
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/ruby_memcheck.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "English"
|
4
|
+
require "shellwords"
|
3
5
|
require "tempfile"
|
4
6
|
require "rake/testtask"
|
5
7
|
|
6
8
|
require "ruby_memcheck/configuration"
|
7
9
|
require "ruby_memcheck/frame"
|
10
|
+
require "ruby_memcheck/ruby_runner"
|
8
11
|
require "ruby_memcheck/stack"
|
9
12
|
require "ruby_memcheck/test_task_reporter"
|
10
13
|
require "ruby_memcheck/test_task"
|
data/suppressions/ruby.supp
CHANGED
@@ -60,3 +60,12 @@
|
|
60
60
|
fun:rb_callable_method_entry
|
61
61
|
...
|
62
62
|
}
|
63
|
+
{
|
64
|
+
The date library lazily initializes Regexps using static local variables through the function `regcomp`. The Regexp will end up being reported as a memory leak.
|
65
|
+
Memcheck:Leak
|
66
|
+
...
|
67
|
+
fun:rb_enc_reg_new
|
68
|
+
...
|
69
|
+
fun:date__parse
|
70
|
+
...
|
71
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_memcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Zhu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -125,7 +125,8 @@ dependencies:
|
|
125
125
|
description:
|
126
126
|
email:
|
127
127
|
- peter@peterzhu.ca
|
128
|
-
executables:
|
128
|
+
executables:
|
129
|
+
- ruby_memcheck
|
129
130
|
extensions: []
|
130
131
|
extra_rdoc_files: []
|
131
132
|
files:
|
@@ -138,10 +139,12 @@ files:
|
|
138
139
|
- LICENSE.txt
|
139
140
|
- README.md
|
140
141
|
- Rakefile
|
142
|
+
- exe/ruby_memcheck
|
141
143
|
- lib/ruby_memcheck.rb
|
142
144
|
- lib/ruby_memcheck/configuration.rb
|
143
145
|
- lib/ruby_memcheck/frame.rb
|
144
146
|
- lib/ruby_memcheck/rspec/rake_task.rb
|
147
|
+
- lib/ruby_memcheck/ruby_runner.rb
|
145
148
|
- lib/ruby_memcheck/stack.rb
|
146
149
|
- lib/ruby_memcheck/suppression.rb
|
147
150
|
- lib/ruby_memcheck/test_helper.rb
|