nonnative 1.16.0 → 1.21.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 +4 -4
- data/.rubocop.yml +11 -2
- data/Gemfile.lock +13 -12
- data/Makefile +1 -1
- data/README.md +6 -4
- data/lib/nonnative.rb +3 -2
- data/lib/nonnative/chaos_proxy.rb +32 -2
- data/lib/nonnative/configuration.rb +5 -5
- data/lib/nonnative/configuration_process.rb +1 -6
- data/lib/nonnative/configuration_proxy.rb +1 -2
- data/lib/nonnative/configuration_server.rb +9 -6
- data/lib/nonnative/grpc_server.rb +1 -6
- data/lib/nonnative/pool.rb +8 -5
- data/lib/nonnative/server.rb +5 -8
- data/lib/nonnative/version.rb +1 -1
- data/nonnative.gemspec +5 -4
- metadata +50 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f32a99fc33eb1c0fd62360648c9b1de943c500ae674ae713b7c2ec56693ff165
|
4
|
+
data.tar.gz: c46a33b6451b3f69c4ae226106eaf58d2f54683627cde12217859179a396bc0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 965c0c84a1be47fd5d9cf05cf887ec9572dbdddf5ec579a29519800891b68727152d0f4559bb90e20870beaa7b27f3052ee2ea3edf2e31e40db6d04b46c6ef98
|
7
|
+
data.tar.gz: 583c38fafc5eb0d6b2762b9a23f83319ade0d381c5ab262825e78b1cf9a3b777e1828baf1f1e696bc8f2b2564ce291328c0bce515b92368404c634f776f93d3a
|
data/.rubocop.yml
CHANGED
@@ -6,10 +6,10 @@ Layout/LineLength:
|
|
6
6
|
Max: 120
|
7
7
|
|
8
8
|
Metrics/MethodLength:
|
9
|
-
Max:
|
9
|
+
Max: 20
|
10
10
|
|
11
11
|
Metrics/BlockLength:
|
12
|
-
Max:
|
12
|
+
Max: 60
|
13
13
|
|
14
14
|
Metrics/AbcSize:
|
15
15
|
Max: 20
|
@@ -58,3 +58,12 @@ Style/RedundantRegexpEscape:
|
|
58
58
|
|
59
59
|
Style/RedundantFetchBlock:
|
60
60
|
Enabled: true
|
61
|
+
|
62
|
+
Style/AccessorGrouping:
|
63
|
+
Enabled: true
|
64
|
+
|
65
|
+
Style/BisectedAttrAccessor:
|
66
|
+
Enabled: true
|
67
|
+
|
68
|
+
Style/RedundantAssignment:
|
69
|
+
Enabled: true
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nonnative (1.
|
4
|
+
nonnative (1.21.0)
|
5
|
+
concurrent-ruby (~> 1.0, >= 1.0.5)
|
5
6
|
cucumber (~> 3.1, >= 3.1.2)
|
6
|
-
grpc (
|
7
|
+
grpc (>= 1, < 2)
|
7
8
|
puma (~> 4.3, >= 4.3.3)
|
8
9
|
rest-client (~> 2.1)
|
9
10
|
rspec-benchmark (~> 0.6.0)
|
@@ -57,10 +58,10 @@ GEM
|
|
57
58
|
google-protobuf (3.12.2)
|
58
59
|
googleapis-common-protos-types (1.0.5)
|
59
60
|
google-protobuf (~> 3.11)
|
60
|
-
grpc (1.
|
61
|
-
google-protobuf (~> 3.
|
61
|
+
grpc (1.30.1)
|
62
|
+
google-protobuf (~> 3.12)
|
62
63
|
googleapis-common-protos-types (~> 1.0)
|
63
|
-
grpc-tools (1.
|
64
|
+
grpc-tools (1.30.1)
|
64
65
|
http-accept (1.7.0)
|
65
66
|
http-cookie (1.0.3)
|
66
67
|
domain_name (~> 0.5)
|
@@ -81,7 +82,7 @@ GEM
|
|
81
82
|
ruby2_keywords (~> 0.0.1)
|
82
83
|
netrc (0.11.0)
|
83
84
|
nio4r (2.5.2)
|
84
|
-
nokogiri (1.10.
|
85
|
+
nokogiri (1.10.10)
|
85
86
|
mini_portile2 (~> 2.4.0)
|
86
87
|
parallel (1.19.2)
|
87
88
|
parser (2.7.1.4)
|
@@ -125,13 +126,13 @@ GEM
|
|
125
126
|
diff-lcs (>= 1.2.0, < 2.0)
|
126
127
|
rspec-support (~> 3.9.0)
|
127
128
|
rspec-support (3.9.3)
|
128
|
-
rubocop (0.
|
129
|
+
rubocop (0.87.1)
|
129
130
|
parallel (~> 1.10)
|
130
|
-
parser (>= 2.7.
|
131
|
+
parser (>= 2.7.1.1)
|
131
132
|
rainbow (>= 2.2.2, < 4.0)
|
132
133
|
regexp_parser (>= 1.7)
|
133
134
|
rexml
|
134
|
-
rubocop-ast (>= 0.0
|
135
|
+
rubocop-ast (>= 0.1.0, < 1.0)
|
135
136
|
ruby-progressbar (~> 1.7)
|
136
137
|
unicode-display_width (>= 1.4.0, < 2.0)
|
137
138
|
rubocop-ast (0.1.0)
|
@@ -187,12 +188,12 @@ PLATFORMS
|
|
187
188
|
DEPENDENCIES
|
188
189
|
bundler (~> 2.1, >= 2.1.4)
|
189
190
|
chutney (~> 2.0, >= 2.0.3.1)
|
190
|
-
grpc-tools (
|
191
|
+
grpc-tools (>= 1, < 2)
|
191
192
|
nonnative!
|
192
193
|
rake (~> 13.0, >= 13.0.1)
|
193
|
-
rubocop (~> 0.
|
194
|
+
rubocop (~> 0.87.1)
|
194
195
|
simplecov (~> 0.17.1)
|
195
|
-
solargraph (~> 0.39.
|
196
|
+
solargraph (~> 0.39.11)
|
196
197
|
|
197
198
|
BUNDLED WITH
|
198
199
|
2.1.4
|
data/Makefile
CHANGED
data/README.md
CHANGED
@@ -249,8 +249,8 @@ module Nonnative
|
|
249
249
|
end
|
250
250
|
|
251
251
|
class GRPCServer < Nonnative::GRPCServer
|
252
|
-
def
|
253
|
-
|
252
|
+
def svc
|
253
|
+
GreeterService.new
|
254
254
|
end
|
255
255
|
end
|
256
256
|
end
|
@@ -309,8 +309,10 @@ Nonnative.configure do |config|
|
|
309
309
|
config.strategy = :manual
|
310
310
|
|
311
311
|
config.server do |d|
|
312
|
-
d.proxy
|
313
|
-
|
312
|
+
d.proxy = {
|
313
|
+
type: 'chaos',
|
314
|
+
port: 20_000
|
315
|
+
}
|
314
316
|
end
|
315
317
|
end
|
316
318
|
```
|
data/lib/nonnative.rb
CHANGED
@@ -10,6 +10,7 @@ require 'sinatra'
|
|
10
10
|
require 'rest-client'
|
11
11
|
require 'puma'
|
12
12
|
require 'puma/server'
|
13
|
+
require 'concurrent'
|
13
14
|
|
14
15
|
require 'nonnative/version'
|
15
16
|
require 'nonnative/error'
|
@@ -35,10 +36,10 @@ require 'nonnative/proxy'
|
|
35
36
|
require 'nonnative/no_proxy'
|
36
37
|
require 'nonnative/chaos_proxy'
|
37
38
|
|
38
|
-
Thread.abort_on_exception = true
|
39
|
-
|
40
39
|
module Nonnative
|
41
40
|
class << self
|
41
|
+
attr_reader :pool
|
42
|
+
|
42
43
|
def load_configuration(path)
|
43
44
|
@configuration ||= Nonnative::Configuration.load_file(path) # rubocop:disable Naming/MemoizedInstanceVariableName
|
44
45
|
end
|
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
module Nonnative
|
4
4
|
class ChaosProxy < Nonnative::Proxy
|
5
|
+
def initialize(service)
|
6
|
+
@connections = Concurrent::Hash.new
|
7
|
+
@mutex = Mutex.new
|
8
|
+
@state = :none
|
9
|
+
|
10
|
+
super service
|
11
|
+
end
|
12
|
+
|
5
13
|
def start
|
6
14
|
@tcp_server = ::TCPServer.new('0.0.0.0', service.port)
|
7
15
|
@thread = Thread.new { perform_start }
|
@@ -12,21 +20,32 @@ module Nonnative
|
|
12
20
|
tcp_server.close
|
13
21
|
end
|
14
22
|
|
23
|
+
def close_all
|
24
|
+
apply_state :close_all
|
25
|
+
end
|
26
|
+
|
27
|
+
def reset
|
28
|
+
apply_state :none
|
29
|
+
end
|
30
|
+
|
15
31
|
def port
|
16
32
|
service.proxy.port
|
17
33
|
end
|
18
34
|
|
19
35
|
private
|
20
36
|
|
21
|
-
attr_reader :tcp_server, :thread
|
37
|
+
attr_reader :tcp_server, :thread, :connections, :mutex, :state
|
22
38
|
|
23
39
|
def perform_start
|
24
40
|
loop do
|
25
|
-
Thread.start(tcp_server.accept) { |local_socket| connect(local_socket) }
|
41
|
+
thread = Thread.start(tcp_server.accept) { |local_socket| connect(local_socket) }
|
42
|
+
connections[thread.object_id] = thread
|
26
43
|
end
|
27
44
|
end
|
28
45
|
|
29
46
|
def connect(local_socket)
|
47
|
+
return local_socket.close if state?(:close_all)
|
48
|
+
|
30
49
|
remote_socket = create_remote_socket
|
31
50
|
return unless remote_socket
|
32
51
|
|
@@ -36,9 +55,12 @@ module Nonnative
|
|
36
55
|
break if write(ready, local_socket, remote_socket)
|
37
56
|
break if write(ready, remote_socket, local_socket)
|
38
57
|
end
|
58
|
+
rescue Errno::ECONNRESET
|
59
|
+
# Just ignore it.
|
39
60
|
ensure
|
40
61
|
local_socket.close
|
41
62
|
remote_socket&.close
|
63
|
+
connections.delete(Thread.current.object_id)
|
42
64
|
end
|
43
65
|
|
44
66
|
def create_remote_socket
|
@@ -60,5 +82,13 @@ module Nonnative
|
|
60
82
|
|
61
83
|
false
|
62
84
|
end
|
85
|
+
|
86
|
+
def apply_state(state)
|
87
|
+
mutex.synchronize { @state = state }
|
88
|
+
end
|
89
|
+
|
90
|
+
def state?(state)
|
91
|
+
mutex.synchronize { @state == state }
|
92
|
+
end
|
63
93
|
end
|
64
94
|
end
|
@@ -42,8 +42,10 @@ module Nonnative
|
|
42
42
|
proxy = fd['proxy']
|
43
43
|
|
44
44
|
if proxy
|
45
|
-
s.proxy
|
46
|
-
|
45
|
+
s.proxy = {
|
46
|
+
type: proxy['type'],
|
47
|
+
port: proxy['port']
|
48
|
+
}
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
@@ -56,9 +58,7 @@ module Nonnative
|
|
56
58
|
self.servers = []
|
57
59
|
end
|
58
60
|
|
59
|
-
attr_accessor :strategy
|
60
|
-
attr_accessor :processes
|
61
|
-
attr_accessor :servers
|
61
|
+
attr_accessor :strategy, :processes, :servers
|
62
62
|
|
63
63
|
def process
|
64
64
|
process = Nonnative::ConfigurationProcess.new
|
@@ -2,11 +2,6 @@
|
|
2
2
|
|
3
3
|
module Nonnative
|
4
4
|
class ConfigurationProcess
|
5
|
-
attr_accessor :name
|
6
|
-
attr_accessor :command
|
7
|
-
attr_accessor :timeout
|
8
|
-
attr_accessor :port
|
9
|
-
attr_accessor :file
|
10
|
-
attr_accessor :signal
|
5
|
+
attr_accessor :name, :command, :timeout, :port, :file, :signal
|
11
6
|
end
|
12
7
|
end
|
@@ -2,14 +2,17 @@
|
|
2
2
|
|
3
3
|
module Nonnative
|
4
4
|
class ConfigurationServer
|
5
|
-
attr_accessor :name
|
6
|
-
|
7
|
-
|
8
|
-
attr_accessor :port
|
9
|
-
attr_accessor :proxy
|
5
|
+
attr_accessor :name, :klass, :timeout, :port
|
6
|
+
|
7
|
+
attr_reader :proxy
|
10
8
|
|
11
9
|
def initialize
|
12
|
-
|
10
|
+
@proxy = Nonnative::ConfigurationProxy.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def proxy=(value)
|
14
|
+
proxy.type = value[:type]
|
15
|
+
proxy.port = value[:port]
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
@@ -4,20 +4,15 @@ module Nonnative
|
|
4
4
|
class GRPCServer < Nonnative::Server
|
5
5
|
def initialize(service)
|
6
6
|
@server = GRPC::RpcServer.new
|
7
|
+
server.handle(svc)
|
7
8
|
|
8
9
|
super service
|
9
10
|
end
|
10
11
|
|
11
|
-
def configure(server)
|
12
|
-
# Classes will add configuration
|
13
|
-
end
|
14
|
-
|
15
12
|
protected
|
16
13
|
|
17
14
|
def perform_start
|
18
15
|
server.add_http2_port("0.0.0.0:#{proxy.port}", :this_port_is_insecure)
|
19
|
-
configure server
|
20
|
-
|
21
16
|
server.run
|
22
17
|
end
|
23
18
|
|
data/lib/nonnative/pool.rb
CHANGED
@@ -7,13 +7,16 @@ module Nonnative
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def start(&block)
|
10
|
-
|
11
|
-
process_all(all, :start, :open?, &block)
|
10
|
+
[servers, processes].each { |t| process(t, :start, :open?, &block) }
|
12
11
|
end
|
13
12
|
|
14
13
|
def stop(&block)
|
15
|
-
|
16
|
-
|
14
|
+
[processes, servers].each { |t| process(t, :stop, :closed?, &block) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def server_by_name(name)
|
18
|
+
index = configuration.servers.find_index { |s| s.name == name }
|
19
|
+
servers[index].first
|
17
20
|
end
|
18
21
|
|
19
22
|
private
|
@@ -32,7 +35,7 @@ module Nonnative
|
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
35
|
-
def
|
38
|
+
def process(all, type_method, port_method, &block)
|
36
39
|
types = []
|
37
40
|
pids = []
|
38
41
|
threads = []
|
data/lib/nonnative/server.rb
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
module Nonnative
|
4
4
|
class Server < Nonnative::Service
|
5
|
+
attr_reader :proxy
|
6
|
+
|
5
7
|
def initialize(service)
|
6
|
-
@id = SecureRandom.hex(5)
|
7
8
|
@proxy = Nonnative::ProxyFactory.create(service)
|
8
9
|
|
9
10
|
super service
|
@@ -17,7 +18,7 @@ module Nonnative
|
|
17
18
|
wait_start
|
18
19
|
end
|
19
20
|
|
20
|
-
|
21
|
+
object_id
|
21
22
|
end
|
22
23
|
|
23
24
|
def stop
|
@@ -30,15 +31,11 @@ module Nonnative
|
|
30
31
|
wait_stop
|
31
32
|
end
|
32
33
|
|
33
|
-
|
34
|
+
object_id
|
34
35
|
end
|
35
36
|
|
36
|
-
protected
|
37
|
-
|
38
|
-
attr_reader :id
|
39
|
-
|
40
37
|
private
|
41
38
|
|
42
|
-
attr_reader :
|
39
|
+
attr_reader :thread
|
43
40
|
end
|
44
41
|
end
|
data/lib/nonnative/version.rb
CHANGED
data/nonnative.gemspec
CHANGED
@@ -24,8 +24,9 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
|
27
|
+
spec.add_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.5'
|
27
28
|
spec.add_dependency 'cucumber', '~> 3.1', '>= 3.1.2'
|
28
|
-
spec.add_dependency 'grpc', '
|
29
|
+
spec.add_dependency 'grpc', ['>= 1', '< 2']
|
29
30
|
spec.add_dependency 'puma', '~> 4.3', '>= 4.3.3'
|
30
31
|
spec.add_dependency 'rest-client', '~> 2.1'
|
31
32
|
spec.add_dependency 'rspec-benchmark', '~> 0.6.0'
|
@@ -34,9 +35,9 @@ Gem::Specification.new do |spec|
|
|
34
35
|
|
35
36
|
spec.add_development_dependency 'bundler', '~> 2.1', '>= 2.1.4'
|
36
37
|
spec.add_development_dependency 'chutney', '~> 2.0', '>= 2.0.3.1'
|
37
|
-
spec.add_development_dependency 'grpc-tools', '
|
38
|
+
spec.add_development_dependency 'grpc-tools', ['>= 1', '< 2']
|
38
39
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
|
39
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
40
|
+
spec.add_development_dependency 'rubocop', '~> 0.87.1'
|
40
41
|
spec.add_development_dependency 'simplecov', '~> 0.17.1'
|
41
|
-
spec.add_development_dependency 'solargraph', '~> 0.39.
|
42
|
+
spec.add_development_dependency 'solargraph', '~> 0.39.11'
|
42
43
|
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nonnative
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Falkowski
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: concurrent-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.0.5
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.5
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: cucumber
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -34,16 +54,22 @@ dependencies:
|
|
34
54
|
name: grpc
|
35
55
|
requirement: !ruby/object:Gem::Requirement
|
36
56
|
requirements:
|
37
|
-
- - "
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1'
|
60
|
+
- - "<"
|
38
61
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
62
|
+
version: '2'
|
40
63
|
type: :runtime
|
41
64
|
prerelease: false
|
42
65
|
version_requirements: !ruby/object:Gem::Requirement
|
43
66
|
requirements:
|
44
|
-
- - "
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1'
|
70
|
+
- - "<"
|
45
71
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
72
|
+
version: '2'
|
47
73
|
- !ruby/object:Gem::Dependency
|
48
74
|
name: puma
|
49
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,16 +202,22 @@ dependencies:
|
|
176
202
|
name: grpc-tools
|
177
203
|
requirement: !ruby/object:Gem::Requirement
|
178
204
|
requirements:
|
179
|
-
- - "
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '1'
|
208
|
+
- - "<"
|
180
209
|
- !ruby/object:Gem::Version
|
181
|
-
version: '
|
210
|
+
version: '2'
|
182
211
|
type: :development
|
183
212
|
prerelease: false
|
184
213
|
version_requirements: !ruby/object:Gem::Requirement
|
185
214
|
requirements:
|
186
|
-
- - "
|
215
|
+
- - ">="
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '1'
|
218
|
+
- - "<"
|
187
219
|
- !ruby/object:Gem::Version
|
188
|
-
version: '
|
220
|
+
version: '2'
|
189
221
|
- !ruby/object:Gem::Dependency
|
190
222
|
name: rake
|
191
223
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,14 +244,14 @@ dependencies:
|
|
212
244
|
requirements:
|
213
245
|
- - "~>"
|
214
246
|
- !ruby/object:Gem::Version
|
215
|
-
version: 0.
|
247
|
+
version: 0.87.1
|
216
248
|
type: :development
|
217
249
|
prerelease: false
|
218
250
|
version_requirements: !ruby/object:Gem::Requirement
|
219
251
|
requirements:
|
220
252
|
- - "~>"
|
221
253
|
- !ruby/object:Gem::Version
|
222
|
-
version: 0.
|
254
|
+
version: 0.87.1
|
223
255
|
- !ruby/object:Gem::Dependency
|
224
256
|
name: simplecov
|
225
257
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +272,14 @@ dependencies:
|
|
240
272
|
requirements:
|
241
273
|
- - "~>"
|
242
274
|
- !ruby/object:Gem::Version
|
243
|
-
version: 0.39.
|
275
|
+
version: 0.39.11
|
244
276
|
type: :development
|
245
277
|
prerelease: false
|
246
278
|
version_requirements: !ruby/object:Gem::Requirement
|
247
279
|
requirements:
|
248
280
|
- - "~>"
|
249
281
|
- !ruby/object:Gem::Version
|
250
|
-
version: 0.39.
|
282
|
+
version: 0.39.11
|
251
283
|
description: Allows you to keep using the power of ruby to test other systems
|
252
284
|
email:
|
253
285
|
- alexrfalkowski@gmail.com
|
@@ -301,7 +333,7 @@ homepage: https://github.com/alexfalkowski/nonnative
|
|
301
333
|
licenses:
|
302
334
|
- Unlicense
|
303
335
|
metadata: {}
|
304
|
-
post_install_message:
|
336
|
+
post_install_message:
|
305
337
|
rdoc_options: []
|
306
338
|
require_paths:
|
307
339
|
- lib
|
@@ -316,8 +348,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
348
|
- !ruby/object:Gem::Version
|
317
349
|
version: '0'
|
318
350
|
requirements: []
|
319
|
-
rubygems_version: 3.0.
|
320
|
-
signing_key:
|
351
|
+
rubygems_version: 3.0.3
|
352
|
+
signing_key:
|
321
353
|
specification_version: 4
|
322
354
|
summary: Allows you to keep using the power of ruby to test other systems
|
323
355
|
test_files: []
|