ruby-cute 0.0.2 → 0.3
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 +6 -3
- data/debian/changelog +3 -3
- data/debian/control +9 -5
- data/debian/copyright +7 -5
- data/debian/ruby-cute.examples +1 -0
- data/debian/ruby-tests.rake +7 -0
- data/debian/rules +1 -1
- data/examples/g5k_exp_virt.rb +9 -3
- data/lib/cute/g5k_api.rb +10 -3
- data/lib/cute/version.rb +1 -1
- data/ruby-cute.gemspec +1 -0
- data/spec/g5k_api_spec.rb +14 -1
- data/test/test_execute.rb +243 -0
- metadata +20 -3
- data/debian/ruby-tests.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f54b6b52751a03c02f575ef8e544f399df99229a
|
4
|
+
data.tar.gz: e2db4b6d5a93a21ec4d19cf238ec05606ee6ab97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a6a3d01f0eb79fa5d66955467529b92bd53add1f597bf88df283f388e53751f2e46980b55a0398f350671b02ae7b68d8f00409fd22defd91dccd9220c2a2e4e
|
7
|
+
data.tar.gz: c4e54ceadd5e0aa271438b195942da1e4cc38bfe97d02db0394d787347c3f6a41be821d173e7cf6c83db2a7caa5b34cbe3d1141d58f6b2cde547a2f3c4f389e7
|
data/README.md
CHANGED
@@ -141,11 +141,14 @@ g5k.release(job) # Frees resources.
|
|
141
141
|
|
142
142
|
Ruby-Cute is maintained by the Algorille team at LORIA/Inria Nancy - Grand Est, and specifically by:
|
143
143
|
|
144
|
-
*
|
145
|
-
* Tomasz Buchert <tomasz.buchert@inria.fr>
|
144
|
+
* Cristian Ruiz <cristian.ruiz@inria.fr>
|
146
145
|
* Emmanuel Jeanvoine <emmanuel.jeanvoine@inria.fr>
|
147
146
|
* Lucas Nussbaum <lucas.nussbaum@loria.fr>
|
147
|
+
|
148
|
+
Past contributors include:
|
149
|
+
|
150
|
+
* Sébastien Badia <sebastien.badia@inria.fr>
|
151
|
+
* Tomasz Buchert <tomasz.buchert@inria.fr>
|
148
152
|
* Luc Sarzyniec <luc.sarzyniec@inria.fr>
|
149
|
-
* Cristian Ruiz <cristian.ruiz@inria.fr>
|
150
153
|
|
151
154
|
Questions/comments should be directed to Lucas Nussbaum and Emmanuel Jeanvoine.
|
data/debian/changelog
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
ruby-cute (0.
|
1
|
+
ruby-cute (0.3) UNRELEASED; urgency=medium
|
2
2
|
|
3
|
-
* Initial release
|
3
|
+
* Initial release.
|
4
4
|
|
5
|
-
-- Lucas Nussbaum <lucas@debian.org>
|
5
|
+
-- Lucas Nussbaum <lucas@debian.org> Tue, 10 Mar 2015 15:13:52 +0100
|
data/debian/control
CHANGED
@@ -2,14 +2,18 @@ Source: ruby-cute
|
|
2
2
|
Section: ruby
|
3
3
|
Priority: optional
|
4
4
|
Maintainer: Lucas Nussbaum <lucas@debian.org>
|
5
|
-
Build-Depends: debhelper (>=
|
6
|
-
Standards-Version: 3.9.
|
7
|
-
|
5
|
+
Build-Depends: debhelper (>= 7.0.50~), gem2deb, ruby-rspec, rake, yard, ruby-webmock, ruby-simplecov, ruby-rest-client, ruby-ipaddress, ruby-net-ssh-multi
|
6
|
+
Standards-Version: 3.9.5
|
7
|
+
Vcs-Git: git://github.com/ruby-cute/ruby-cute
|
8
|
+
Vcs-Browser: https://github.com/ruby-cute/ruby-cute
|
9
|
+
Homepage: http://ruby-cute.github.io/
|
10
|
+
Testsuite: autopkgtest
|
8
11
|
XS-Ruby-Versions: all
|
9
12
|
|
10
13
|
Package: ruby-cute
|
11
14
|
Architecture: all
|
12
15
|
XB-Ruby-Versions: ${ruby:Versions}
|
13
|
-
Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter
|
16
|
+
Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter, ruby-rest-client, ruby-json, ruby-ipaddress, ruby-net-ssh-multi
|
17
|
+
Recommends: pry
|
14
18
|
Description: Critically Useful Tools for Experiments
|
15
|
-
|
19
|
+
Ruby library for controlling experiments
|
data/debian/copyright
CHANGED
@@ -5,6 +5,13 @@ Source: FIXME <http://example.com/>
|
|
5
5
|
Files: *
|
6
6
|
Copyright: <years> <put author's name and email here>
|
7
7
|
<years> <likewise for another author>
|
8
|
+
License: GPL-2+ (FIXME)
|
9
|
+
|
10
|
+
Files: debian/*
|
11
|
+
Copyright: 2015 Lucas Nussbaum <lucas@debian.org>
|
12
|
+
License: GPL-2+ (FIXME)
|
13
|
+
Comment: the Debian packaging is licensed under the same terms as the original package.
|
14
|
+
|
8
15
|
License: GPL-2+ (FIXME)
|
9
16
|
This program is free software; you can redistribute it
|
10
17
|
and/or modify it under the terms of the GNU General Public
|
@@ -26,8 +33,3 @@ License: GPL-2+ (FIXME)
|
|
26
33
|
On Debian systems, the full text of the GNU General Public
|
27
34
|
License version 2 can be found in the file
|
28
35
|
`/usr/share/common-licenses/GPL-2'.
|
29
|
-
|
30
|
-
Files: debian/*
|
31
|
-
Copyright: 2013 Lucas Nussbaum <lucas@debian.org>
|
32
|
-
License:
|
33
|
-
[LICENSE TEXT]
|
@@ -0,0 +1 @@
|
|
1
|
+
examples/*
|
data/debian/rules
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
#
|
7
7
|
# Uncomment to ignore some test failures (but the tests will run anyway).
|
8
8
|
# Valid values:
|
9
|
-
#export DH_RUBY_IGNORE_TESTS=
|
9
|
+
#export DH_RUBY_IGNORE_TESTS=ruby2.1 require-rubygems
|
10
10
|
#
|
11
11
|
# If you need to specify the .gemspec (eg there is more than one)
|
12
12
|
#export DH_RUBY_GEMSPEC=gem.gemspec
|
data/examples/g5k_exp_virt.rb
CHANGED
@@ -26,7 +26,8 @@ G5K_SITES.each{ |site|
|
|
26
26
|
# here, we set wait_time to 200 seconds, like that we would just use the sites that are free.
|
27
27
|
begin
|
28
28
|
jobs[site] = g5k.reserve(:site => site, :resources => "slash_22=1+{virtual!='none'}/nodes=1",
|
29
|
-
:walltime =>"01:00:00",:keys => "~/.ssh/id_rsa", :
|
29
|
+
:walltime =>"01:00:00",:keys => "~/.ssh/id_rsa", :wait => false)
|
30
|
+
jobs[site] = g5k.wait_for_job(jobs[site], :wait_time => 200)
|
30
31
|
rescue Cute::G5K::EventTimeout
|
31
32
|
puts "We waited long enough, releasing job in site #{site}"
|
32
33
|
g5k.release(jobs[site]) # we release the job
|
@@ -40,6 +41,11 @@ G5K_SITES.each{ |site|
|
|
40
41
|
|
41
42
|
threads.each{ |t| t.join}
|
42
43
|
|
44
|
+
if jobs.keys.empty? then
|
45
|
+
puts "no sites available"
|
46
|
+
exit
|
47
|
+
end
|
48
|
+
|
43
49
|
nodes = []
|
44
50
|
jobs.each{ |k,v| nodes+=v["assigned_nodes"]}
|
45
51
|
|
@@ -54,7 +60,7 @@ template = ERB.new(File.read("#{vm_dir}/vm-template.xml"))
|
|
54
60
|
|
55
61
|
vms = []
|
56
62
|
|
57
|
-
|
63
|
+
jobs.keys.each{ |site|
|
58
64
|
subnet = g5k.get_subnets(jobs[site]).first
|
59
65
|
ips = subnet.map{ |ip| ip.to_s }
|
60
66
|
num_vm.times{ |n|
|
@@ -114,7 +120,7 @@ Net::SSH::Multi.start do |session|
|
|
114
120
|
end
|
115
121
|
|
116
122
|
puts("Waiting for the machines to start")
|
117
|
-
sleep
|
123
|
+
sleep 100
|
118
124
|
|
119
125
|
# Executing some commands on the vms
|
120
126
|
|
data/lib/cute/g5k_api.rb
CHANGED
@@ -703,7 +703,11 @@ module Cute
|
|
703
703
|
# @return [Array] all the subnets defined in a given job
|
704
704
|
# @param job [G5KJSON] as described in {Cute::G5K::G5KJSON job}
|
705
705
|
def get_subnets(job)
|
706
|
-
|
706
|
+
if job.resources["subnets"].nil?
|
707
|
+
return nil
|
708
|
+
else
|
709
|
+
subnets = job.resources["subnets"]
|
710
|
+
end
|
707
711
|
subnets.map{|s| IPAddress::IPv4.new s }
|
708
712
|
end
|
709
713
|
|
@@ -725,6 +729,7 @@ module Cute
|
|
725
729
|
# Releases all jobs on a site
|
726
730
|
# @param site [String] a valid Grid'5000 site name
|
727
731
|
def release_all(site)
|
732
|
+
raise ArgumentError, "parameter should be a string" unless site.is_a?(String)
|
728
733
|
Timeout.timeout(20) do
|
729
734
|
jobs = get_my_jobs(site,"running") + get_my_jobs(site,"waiting")
|
730
735
|
break if jobs.empty?
|
@@ -738,9 +743,11 @@ module Cute
|
|
738
743
|
end
|
739
744
|
|
740
745
|
# Releases a resource, it can be a job or a deploy.
|
741
|
-
|
746
|
+
# @param resource [G5KJSON] as described in {Cute::G5K::G5KJSON job}
|
747
|
+
def release(resource)
|
748
|
+
raise ArgumentError, "parameter should be a G5KJSON data type" unless resource.is_a?(Cute::G5K::G5KJSON)
|
742
749
|
begin
|
743
|
-
return @g5k_connection.delete_json(
|
750
|
+
return @g5k_connection.delete_json(resource.rel_self)
|
744
751
|
rescue Cute::G5K::RequestFailed => e
|
745
752
|
raise unless e.response.include?('already killed')
|
746
753
|
end
|
data/lib/cute/version.rb
CHANGED
data/ruby-cute.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency "pry", "~> 0.10"
|
22
22
|
s.add_development_dependency "webmock", "~> 1.20"
|
23
23
|
s.add_development_dependency "yard", "~> 0.8"
|
24
|
+
s.add_development_dependency "simplecov", "~> 0.7"
|
24
25
|
|
25
26
|
s.add_dependency 'rest-client', '1.6.7'
|
26
27
|
s.add_dependency 'json', '~> 1.8'
|
data/spec/g5k_api_spec.rb
CHANGED
@@ -112,8 +112,21 @@ describe Cute::G5K::API do
|
|
112
112
|
expect(subject.get_vlan_nodes(job)).to be_nil
|
113
113
|
end
|
114
114
|
|
115
|
+
it "subnet returns nil" do
|
116
|
+
job = Cute::G5K::G5KJSON.new
|
117
|
+
expect(subject.get_subnets(job)).to be_nil
|
118
|
+
end
|
119
|
+
|
120
|
+
it "raises an argument error in release method" do
|
121
|
+
expect{subject.release("string")}.to raise_error(ArgumentError)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "raises an argument error in release_all method" do
|
125
|
+
expect{subject.release_all(["random"])}.to raise_error(ArgumentError)
|
126
|
+
end
|
127
|
+
|
115
128
|
it "performs an advanced reservation" do
|
116
|
-
time_schedule = Time.now + 60*
|
129
|
+
time_schedule = Time.now + 60*20
|
117
130
|
job =subject.reserve(:site => @rand_site, :nodes => 1, :reservation => time_schedule.strftime("%Y-%m-%d %H:%M:%S"))
|
118
131
|
subject.release(job)
|
119
132
|
end
|
@@ -0,0 +1,243 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'cute'
|
5
|
+
|
6
|
+
class Execute_test < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def prepare_file()
|
9
|
+
@file = Tempfile.new("testons")
|
10
|
+
1.upto(100) {|i| @file.puts i}
|
11
|
+
@file.close()
|
12
|
+
@cmd=['cat',@file.path]
|
13
|
+
@cmd2=['bash','-c',"cat #{@file.path} >&2"]
|
14
|
+
end
|
15
|
+
def test_execute()
|
16
|
+
prepare_file()
|
17
|
+
run = Cute::Execute[*@cmd].run!()
|
18
|
+
res = run.wait()
|
19
|
+
file = File.read(@file.path)
|
20
|
+
assert_equal(file,run.stdout)
|
21
|
+
assert(run.emptypipes,"pipes are empty")
|
22
|
+
assert(res[3],"pipes are empty")
|
23
|
+
end
|
24
|
+
def test_execute2()
|
25
|
+
prepare_file()
|
26
|
+
run = Cute::Execute[*@cmd].run!()
|
27
|
+
res = run.wait()
|
28
|
+
file = File.read(@file.path)
|
29
|
+
assert_equal(file,res[1])
|
30
|
+
assert(res[3],"pipes are empty")
|
31
|
+
end
|
32
|
+
def test_execute_err()
|
33
|
+
prepare_file()
|
34
|
+
run = Cute::Execute[*@cmd2].run!()
|
35
|
+
run.wait()
|
36
|
+
file = File.read(@file.path)
|
37
|
+
assert_equal(file,run.stderr)
|
38
|
+
assert(run.emptypipes,"pipes are empty")
|
39
|
+
end
|
40
|
+
def test_execute2_err()
|
41
|
+
prepare_file()
|
42
|
+
run = Cute::Execute[*@cmd2].run!()
|
43
|
+
res = run.wait()
|
44
|
+
file = File.read(@file.path)
|
45
|
+
assert_equal(file,res[2])
|
46
|
+
assert(res[3],"pipes are empty")
|
47
|
+
end
|
48
|
+
def test_execute_limit_stdout()
|
49
|
+
prepare_file()
|
50
|
+
run = Cute::Execute[*@cmd].run!(:stdout_size=>5)
|
51
|
+
run.wait()
|
52
|
+
assert_equal("1\n2\n3",run.stdout)
|
53
|
+
assert(!run.emptypipes,"pipes are not empty")
|
54
|
+
end
|
55
|
+
def test_execute_limit_stderr()
|
56
|
+
prepare_file()
|
57
|
+
run = Cute::Execute[*@cmd2].run!(:stderr_size=>5)
|
58
|
+
run.wait()
|
59
|
+
assert_equal("1\n2\n3",run.stderr)
|
60
|
+
assert(!run.emptypipes,"pipes are not empty")
|
61
|
+
end
|
62
|
+
def test_stdin()
|
63
|
+
run = Cute::Execute['ruby'].run!({:stdin=>true})
|
64
|
+
run.write_stdin('puts 2+2*2;puts Math.cos(Math::PI)')
|
65
|
+
run.wait()
|
66
|
+
assert_equal("6\n-1.0\n",run.stdout)
|
67
|
+
end
|
68
|
+
def test_signaled()
|
69
|
+
run = Cute::Execute["sleep","10"].run!()
|
70
|
+
sleep(0.2)
|
71
|
+
Process.kill("SIGKILL",run.exec_pid)
|
72
|
+
assert_raise(SignalException) do
|
73
|
+
run.wait()
|
74
|
+
end
|
75
|
+
end
|
76
|
+
def test_signaled_multithread()
|
77
|
+
run = Cute::Execute["sleep","10"].run!()
|
78
|
+
sleep(0.2)
|
79
|
+
Process.kill("SIGKILL",run.exec_pid)
|
80
|
+
t1 = Thread.new do
|
81
|
+
assert_raise(SignalException) do
|
82
|
+
run.wait()
|
83
|
+
end
|
84
|
+
end
|
85
|
+
t2 = Thread.new do
|
86
|
+
assert_raise(SignalException) do
|
87
|
+
run.wait()
|
88
|
+
end
|
89
|
+
end
|
90
|
+
t1.join
|
91
|
+
t2.join
|
92
|
+
end
|
93
|
+
# def test_non_null_exit
|
94
|
+
# run = Cute::Execute["ls","/zoefkzoifjauifhiagier"].run!()
|
95
|
+
# assert_raise(Exception) do
|
96
|
+
# run.wait()
|
97
|
+
# end
|
98
|
+
# assert_equal(2,run.status.exitstatus)
|
99
|
+
# end
|
100
|
+
def test_non_null_exit_ignored
|
101
|
+
run = Cute::Execute["ls","/zoefkzoifjauifhiagier"].run!()
|
102
|
+
assert_nothing_raised do
|
103
|
+
run.wait({})
|
104
|
+
end
|
105
|
+
assert_equal(2,run.status.exitstatus)
|
106
|
+
end
|
107
|
+
def test_non_null_exit_multithread
|
108
|
+
run = Cute::Execute["ls","/zoefkzoifjauifhiagier"].run!()
|
109
|
+
t1 = Thread.new do
|
110
|
+
assert_raise(RuntimeError) do
|
111
|
+
run.wait()
|
112
|
+
end
|
113
|
+
end
|
114
|
+
t2 = Thread.new do
|
115
|
+
assert_raise(RuntimeError) do
|
116
|
+
run.wait()
|
117
|
+
end
|
118
|
+
end
|
119
|
+
t1.join
|
120
|
+
t2.join
|
121
|
+
assert_equal(2,run.status.exitstatus)
|
122
|
+
end
|
123
|
+
def test_kill()
|
124
|
+
run = Cute::Execute["sleep","3"].run!()
|
125
|
+
run.kill
|
126
|
+
assert_nothing_raised(SignalException) do
|
127
|
+
run.wait()
|
128
|
+
end
|
129
|
+
assert(run.status.signaled?,"The process must be killed")
|
130
|
+
end
|
131
|
+
def test_kill2()
|
132
|
+
run = Cute::Execute["sleep","3"].run!()
|
133
|
+
run.kill
|
134
|
+
res = nil
|
135
|
+
assert_nothing_raised(SignalException) do
|
136
|
+
res = run.wait()
|
137
|
+
end
|
138
|
+
assert(res[0].signaled?,"The process must be killed")
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_kill_multithread()
|
142
|
+
run = Cute::Execute["sleep","3"].run!()
|
143
|
+
t1 = Thread.new do
|
144
|
+
assert_nothing_raised(SignalException) do
|
145
|
+
run.wait()
|
146
|
+
end
|
147
|
+
end
|
148
|
+
t2 = Thread.new do
|
149
|
+
assert_nothing_raised(SignalException) do
|
150
|
+
run.wait()
|
151
|
+
end
|
152
|
+
end
|
153
|
+
run.kill
|
154
|
+
t1.join
|
155
|
+
t2.join
|
156
|
+
assert(run.status.signaled?,"The process must be killed")
|
157
|
+
end
|
158
|
+
def test_stderr_after_kill()
|
159
|
+
run = Cute::Execute["bash","-c","echo toto >&2;sleep 5"].run!()
|
160
|
+
t1 = Thread.new do
|
161
|
+
assert_nothing_raised(SignalException) do
|
162
|
+
run.wait()
|
163
|
+
end
|
164
|
+
end
|
165
|
+
sleep(0.2)
|
166
|
+
t1.kill
|
167
|
+
assert_nothing_raised(SignalException) do
|
168
|
+
t1.join
|
169
|
+
end
|
170
|
+
assert_equal("toto\n",run.stderr)
|
171
|
+
assert(run.status.signaled?,"The process must be killed")
|
172
|
+
end
|
173
|
+
def test_output_after_kill()
|
174
|
+
run = Cute::Execute["bash","-c","echo toto;sleep 5"].run!()
|
175
|
+
t1 = Thread.new do
|
176
|
+
assert_nothing_raised(SignalException) do
|
177
|
+
run.wait()
|
178
|
+
end
|
179
|
+
end
|
180
|
+
sleep(0.2)
|
181
|
+
t1.kill
|
182
|
+
assert_nothing_raised(SignalException) do
|
183
|
+
t1.join
|
184
|
+
end
|
185
|
+
assert_equal("toto\n",run.stdout)
|
186
|
+
assert(run.status.signaled?,"The process must be killed")
|
187
|
+
end
|
188
|
+
def test_kill_thread()
|
189
|
+
run = Cute::Execute["sleep","3"].run!()
|
190
|
+
t1 = Thread.new do
|
191
|
+
assert_nothing_raised(SignalException) do
|
192
|
+
run.wait()
|
193
|
+
end
|
194
|
+
end
|
195
|
+
sleep(0.2)
|
196
|
+
t1.kill()
|
197
|
+
assert_nothing_raised(SignalException) do
|
198
|
+
t1.join()
|
199
|
+
end
|
200
|
+
assert(run.status.signaled?,"The process must be killed")
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_kill_thread_multithread()
|
204
|
+
run = Cute::Execute["sleep","3"].run!()
|
205
|
+
t1 = Thread.new do
|
206
|
+
assert_nothing_raised(SignalException) do
|
207
|
+
run.wait()
|
208
|
+
end
|
209
|
+
end
|
210
|
+
t2 = Thread.new do
|
211
|
+
assert_nothing_raised(SignalException) do
|
212
|
+
run.wait()
|
213
|
+
end
|
214
|
+
end
|
215
|
+
sleep(0.2)
|
216
|
+
t1.kill()
|
217
|
+
assert_nothing_raised(SignalException) do
|
218
|
+
t1.join()
|
219
|
+
end
|
220
|
+
t2.join()
|
221
|
+
assert(run.status.signaled?,"The process must be killed")
|
222
|
+
end
|
223
|
+
def test_nopipe
|
224
|
+
run = Cute::Execute["sleep","100"].run!(:stdout=>false,:stderr=>false,:stdin=>false)
|
225
|
+
sleep(0.2) #wait for fork finish the job
|
226
|
+
assert_equal("/dev/null",File.readlink("/proc/#{run.exec_pid}/fd/0"),"fd0")
|
227
|
+
assert_equal("/dev/null",File.readlink("/proc/#{run.exec_pid}/fd/1"),"fd1")
|
228
|
+
assert_equal("/dev/null",File.readlink("/proc/#{run.exec_pid}/fd/2"),"fd2")
|
229
|
+
run.kill()
|
230
|
+
run.wait()
|
231
|
+
end
|
232
|
+
def test_fd_leak
|
233
|
+
fd=File.open("/dev/urandom")
|
234
|
+
file=Tempfile.new("testpipeleak")
|
235
|
+
file.puts("#!/usr/bin/env ruby")
|
236
|
+
file.puts("exit(IO.new(#{fd.fileno}).closed? ? 0 : 10) rescue Exception")
|
237
|
+
file.close()
|
238
|
+
assert_nothing_raised do
|
239
|
+
Cute::Execute['ruby',file.path].run!().wait()
|
240
|
+
end
|
241
|
+
fd.close()
|
242
|
+
end
|
243
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-cute
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Algorille team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.8'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.7'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.7'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rest-client
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,7 +185,8 @@ files:
|
|
171
185
|
- debian/control
|
172
186
|
- debian/copyright
|
173
187
|
- debian/ruby-cute.docs
|
174
|
-
- debian/ruby-
|
188
|
+
- debian/ruby-cute.examples
|
189
|
+
- debian/ruby-tests.rake
|
175
190
|
- debian/rules
|
176
191
|
- debian/source/format
|
177
192
|
- debian/watch
|
@@ -195,6 +210,7 @@ files:
|
|
195
210
|
- spec/spec_helper.rb
|
196
211
|
- spec/taktuk_spec.rb
|
197
212
|
- test/test_bash.rb
|
213
|
+
- test/test_execute.rb
|
198
214
|
homepage: http://ruby-cute.gforge.inria.fr/
|
199
215
|
licenses:
|
200
216
|
- CeCILL-B
|
@@ -225,4 +241,5 @@ test_files:
|
|
225
241
|
- spec/spec_helper.rb
|
226
242
|
- spec/taktuk_spec.rb
|
227
243
|
- test/test_bash.rb
|
244
|
+
- test/test_execute.rb
|
228
245
|
has_rdoc:
|
data/debian/ruby-tests.rb
DELETED