ruby_memcheck 2.0.1 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|