SimControl 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
SimControl (0.1.
|
4
|
+
SimControl (0.1.2)
|
5
5
|
active_support
|
6
6
|
i18n
|
7
7
|
thor
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
coderay (1.0.9)
|
16
16
|
diff-lcs (1.2.4)
|
17
17
|
fakefs (0.4.2)
|
18
|
-
i18n (0.6.
|
18
|
+
i18n (0.6.5)
|
19
19
|
method_source (0.8.1)
|
20
20
|
pry (0.9.12.2)
|
21
21
|
coderay (~> 1.0.5)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "open3"
|
2
|
+
|
1
3
|
module SimControl
|
2
4
|
class PythonEnvironment < BaseEnvironment
|
3
5
|
def initialize(script, args = {})
|
@@ -7,10 +9,25 @@ module SimControl
|
|
7
9
|
raise "passing a virtualenv requires an interpreter" if @virtualenv and not @interpreter
|
8
10
|
end
|
9
11
|
|
12
|
+
def script
|
13
|
+
@script
|
14
|
+
end
|
15
|
+
|
16
|
+
def args(scenario)
|
17
|
+
scenario.map { |k, v| "--#{ k } #{ v }" }.join " "
|
18
|
+
end
|
19
|
+
|
10
20
|
def execute(scenario)
|
11
|
-
|
12
|
-
|
13
|
-
|
21
|
+
stdin, stout, stderr, thread = Open3.popen3 command(scenario), chdir: basedir
|
22
|
+
thread.join
|
23
|
+
end
|
24
|
+
|
25
|
+
def basedir
|
26
|
+
File.dirname @script
|
27
|
+
end
|
28
|
+
|
29
|
+
def command(scenario)
|
30
|
+
[interpreter, script, args(scenario)].reject(&:nil?).reject(&:empty?).join " "
|
14
31
|
end
|
15
32
|
|
16
33
|
def interpreter
|
data/lib/SimControl/version.rb
CHANGED
@@ -1,30 +1,48 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
+
require "open3"
|
4
|
+
|
3
5
|
describe SimControl::PythonEnvironment do
|
4
6
|
let(:script) { "a-script" }
|
5
7
|
describe "#simulate" do
|
8
|
+
it "uses popen3 to call the command and sets the cwd" do
|
9
|
+
command = "a-command"
|
10
|
+
basedir = "a-basedir"
|
11
|
+
thread = double("Thread")
|
12
|
+
|
13
|
+
simulation = SimControl::PythonEnvironment.new script
|
14
|
+
simulation.stub(:command).and_return(command)
|
15
|
+
simulation.stub(:basedir).and_return(basedir)
|
16
|
+
Open3.should_receive(:popen3).with(command, chdir: basedir).and_return([nil, nil, nil, thread])
|
17
|
+
thread.should_receive(:join)
|
18
|
+
simulation.execute(foo: 1)
|
19
|
+
end
|
20
|
+
|
6
21
|
it "calls the script if nothing is passed in args" do
|
7
22
|
simulation = SimControl::PythonEnvironment.new script
|
8
|
-
simulation.
|
9
|
-
simulation.execute({})
|
23
|
+
expect(simulation.script).to eq("a-script")
|
10
24
|
end
|
11
25
|
|
12
26
|
it "passes args to the script in -- syntax" do
|
13
27
|
simulation = SimControl::PythonEnvironment.new script
|
14
|
-
simulation.
|
15
|
-
simulation.execute({foo: "bar", baz: 1})
|
28
|
+
expect(simulation.args({foo: "bar", baz: 1})).to eq("--foo bar --baz 1")
|
16
29
|
end
|
17
30
|
|
18
31
|
it "uses a given interpreter" do
|
19
32
|
simulation = SimControl::PythonEnvironment.new script, interpreter: "pypy"
|
20
|
-
simulation.
|
21
|
-
simulation.execute({})
|
33
|
+
expect(simulation.interpreter).to eq("pypy")
|
22
34
|
end
|
23
35
|
|
24
36
|
it "uses a given virtualenv and interpreter" do
|
25
37
|
simulation = SimControl::PythonEnvironment.new script, virtualenv: "foo/bar", interpreter: "pypy"
|
26
|
-
simulation.
|
27
|
-
|
38
|
+
expect(simulation.interpreter).to eq("foo/bar/bin/pypy")
|
39
|
+
end
|
40
|
+
|
41
|
+
it "composes the command" do
|
42
|
+
simulation = SimControl::PythonEnvironment.new script
|
43
|
+
simulation.stub(:args).and_return "--args 1"
|
44
|
+
simulation.stub(:interpreter).and_return "/foo/jpython"
|
45
|
+
expect(simulation.command(args: 1)).to eq("/foo/jpython a-script --args 1")
|
28
46
|
end
|
29
47
|
|
30
48
|
it "raised an exception is a virtualenv is passed but no interpreter" do
|
@@ -32,6 +50,11 @@ describe SimControl::PythonEnvironment do
|
|
32
50
|
SimControl::PythonEnvironment.new script, virtualenv: "foo/bar"
|
33
51
|
end.to raise_error /passing a virtualenv requires an interpreter/
|
34
52
|
end
|
53
|
+
|
54
|
+
it "returns the basedir" do
|
55
|
+
simulation = SimControl::PythonEnvironment.new "/foo/bar/sim.py"
|
56
|
+
expect(simulation.basedir).to eq("/foo/bar")
|
57
|
+
end
|
35
58
|
end
|
36
59
|
|
37
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SimControl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|