jenkins-plugin-runtime 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/jenkins/filepath.rb +133 -0
- data/lib/jenkins/launcher.rb +103 -6
- data/lib/jenkins/model/action.rb +11 -17
- data/lib/jenkins/model/build.rb +7 -6
- data/lib/jenkins/model/describable.rb +1 -1
- data/lib/jenkins/model/descriptor.rb +25 -1
- data/lib/jenkins/model/listener.rb +48 -23
- data/lib/jenkins/model/root_action.rb +4 -4
- data/lib/jenkins/plugin.rb +27 -8
- data/lib/jenkins/plugin/proxies.rb +5 -2
- data/lib/jenkins/plugin/proxies/action.rb +31 -0
- data/lib/jenkins/plugin/proxies/build_step.rb +32 -0
- data/lib/jenkins/plugin/proxies/builder.rb +2 -9
- data/lib/jenkins/plugin/proxies/publisher.rb +25 -0
- data/lib/jenkins/plugin/proxies/root_action.rb +35 -0
- data/lib/jenkins/plugin/runtime/version.rb +1 -1
- data/lib/jenkins/tasks/build_step.rb +23 -0
- data/lib/jenkins/tasks/builder.rb +6 -25
- data/lib/jenkins/tasks/publisher.rb +18 -0
- data/spec/jenkins/filepath_spec.rb +123 -0
- data/spec/jenkins/launcher_spec.rb +210 -0
- data/spec/jenkins/model/action_spec.rb +2 -3
- data/spec/jenkins/model/build_spec.rb +22 -3
- data/spec/jenkins/model/listener_spec.rb +9 -7
- data/spec/jenkins/plugin/proxies/builder_spec.rb +11 -0
- data/spec/jenkins/plugin/proxies/publisher_spec.rb +35 -0
- data/spec/jenkins/plugin/proxies/root_action_spec.rb +31 -0
- data/spec/jenkins/plugin/proxies_spec.rb +17 -1
- data/spec/jenkins/plugin_spec.rb +65 -0
- data/spec/spec_helper.rb +34 -0
- metadata +15 -2
@@ -1,8 +1,218 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Jenkins::Launcher do
|
4
|
+
before :each do
|
5
|
+
@native = mock("native")
|
6
|
+
@starter = mock("starter")
|
7
|
+
@cmd_proc = mock("proc")
|
8
|
+
@native.stub(:launch).and_return(@starter)
|
9
|
+
@starter.stub(:start).and_return(@cmd_proc)
|
10
|
+
@launcher = Jenkins::Launcher.new(@native)
|
11
|
+
end
|
4
12
|
|
5
13
|
it "can be instantiated" do
|
6
14
|
Jenkins::Launcher.new
|
7
15
|
end
|
16
|
+
|
17
|
+
describe "execute" do
|
18
|
+
it "passes a simple command to a native launcher" do
|
19
|
+
@starter.should_receive(:envs).with({})
|
20
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
21
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
22
|
+
@launcher.execute("ls").should == 0
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "environment argument" do
|
26
|
+
it "passes env to a native launcher" do
|
27
|
+
@starter.should_receive(:envs).with({"foo" => "bar"})
|
28
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
29
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
30
|
+
@launcher.execute({"foo" => "bar"}, "ls").should == 0
|
31
|
+
end
|
32
|
+
|
33
|
+
it "stringifies env for a native launcher" do
|
34
|
+
@starter.should_receive(:envs).with({"foo" => "bar", "baz" => "1"})
|
35
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
36
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
37
|
+
@launcher.execute({:foo => :bar, :baz => 1}, "ls").should == 0
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "option argument" do
|
42
|
+
it "passes pwd to a native launcher" do
|
43
|
+
@starter.should_receive(:envs).with({})
|
44
|
+
@starter.should_receive(:pwd).with(".")
|
45
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
46
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
47
|
+
@launcher.execute("ls", :chdir => ".").should == 0
|
48
|
+
end
|
49
|
+
|
50
|
+
it "passes an output stream to a native launcher" do
|
51
|
+
ous = mock("OutputStream")
|
52
|
+
ous.should_receive(:to_outputstream).and_return(ous)
|
53
|
+
@starter.should_receive(:envs).with({})
|
54
|
+
@starter.should_receive(:stdout).with(ous)
|
55
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
56
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
57
|
+
@launcher.execute("ls", :out => ous).should == 0
|
58
|
+
end
|
59
|
+
|
60
|
+
it "passes native listener as an output stream to a native launcher" do
|
61
|
+
ous = Jenkins::Model::Listener.new
|
62
|
+
plugin = mock("Plugin")
|
63
|
+
Jenkins::Plugin.should_receive(:instance).and_return(plugin)
|
64
|
+
plugin.should_receive(:export).with(ous).and_return(ous)
|
65
|
+
|
66
|
+
@starter.should_receive(:envs).with({})
|
67
|
+
@starter.should_receive(:stdout).with(ous)
|
68
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
69
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
70
|
+
@launcher.execute("ls", :out => ous).should == 0
|
71
|
+
end
|
72
|
+
|
73
|
+
it "passes an input stream to a native launcher" do
|
74
|
+
ins = mock("InputStream")
|
75
|
+
ins.should_receive(:to_inputstream).and_return(ins)
|
76
|
+
@starter.should_receive(:envs).with({})
|
77
|
+
@starter.should_receive(:stdin).with(ins)
|
78
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
79
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
80
|
+
@launcher.execute("ls", :in => ins).should == 0
|
81
|
+
end
|
82
|
+
|
83
|
+
it "passes an error stream to a native launcher" do
|
84
|
+
ous = mock("InputStream")
|
85
|
+
ous.should_receive(:to_outputstream).and_return(ous)
|
86
|
+
@starter.should_receive(:envs).with({})
|
87
|
+
@starter.should_receive(:stderr).with(ous)
|
88
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
89
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
90
|
+
@launcher.execute("ls", :err => ous).should == 0
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "command argument" do
|
95
|
+
it "passes a command to a native launcher" do
|
96
|
+
@starter.should_receive(:envs).with({})
|
97
|
+
@starter.should_receive(:cmdAsSingleString).with("echo foo bar")
|
98
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
99
|
+
@launcher.execute("echo foo bar").should == 0
|
100
|
+
end
|
101
|
+
|
102
|
+
it "passes a stringified command to a native launcher" do
|
103
|
+
@starter.should_receive(:envs).with({})
|
104
|
+
@starter.should_receive(:cmdAsSingleString).with("ls")
|
105
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
106
|
+
@launcher.execute(:ls).should == 0
|
107
|
+
end
|
108
|
+
|
109
|
+
it "passes a command as Array to a native launcher" do
|
110
|
+
@starter.should_receive(:envs).with({})
|
111
|
+
@starter.should_receive(:cmds).with(["echo", "foo", "bar"])
|
112
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
113
|
+
@launcher.execute("echo", "foo", "bar").should == 0
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe "argument processing" do
|
118
|
+
it "passes env, a command and options to a native launcher" do
|
119
|
+
ins = mock("InputStream")
|
120
|
+
ins.should_receive(:to_inputstream).and_return(ins)
|
121
|
+
ous = mock("OutputStream")
|
122
|
+
ous.should_receive(:to_outputstream).and_return(ous)
|
123
|
+
errs = mock("ErrorOutputStream")
|
124
|
+
errs.should_receive(:to_outputstream).and_return(errs)
|
125
|
+
@starter.should_receive(:envs).with({"FOO" => "BAR"})
|
126
|
+
@starter.should_receive(:cmds).with(["echo", "hello", "world"])
|
127
|
+
@starter.should_receive(:stdin).with(ins)
|
128
|
+
@starter.should_receive(:stdout).with(ous)
|
129
|
+
@starter.should_receive(:stderr).with(errs)
|
130
|
+
|
131
|
+
@cmd_proc.should_receive(:join).and_return(1)
|
132
|
+
@launcher.execute({"FOO" => "BAR"}, "echo", "hello", "world", :in => ins, :out => ous, :err => errs).should == 1
|
133
|
+
end
|
134
|
+
|
135
|
+
it "converts env with to_hash for passing through" do
|
136
|
+
env = mock("hashy")
|
137
|
+
env.should_receive(:to_hash).and_return(:FOO => :BAR)
|
138
|
+
@starter.should_receive(:envs).with({"FOO" => "BAR"})
|
139
|
+
@starter.should_receive(:cmds).with(["echo", "hello", "world"])
|
140
|
+
@cmd_proc.should_receive(:join).and_return(1)
|
141
|
+
@launcher.execute(env, "echo", "hello", "world").should == 1
|
142
|
+
end
|
143
|
+
|
144
|
+
it "converts options with to_hash for processing" do
|
145
|
+
ous = mock("OutputStream")
|
146
|
+
ous.should_receive(:to_outputstream).and_return(ous)
|
147
|
+
env = mock("hashy env")
|
148
|
+
env.should_receive(:to_hash).and_return(:FOO => :BAR)
|
149
|
+
opt = mock("hashy opt")
|
150
|
+
opt.should_receive(:to_hash).and_return(:chdir => ".", :out => ous)
|
151
|
+
@starter.should_receive(:envs).with({"FOO" => "BAR"})
|
152
|
+
@starter.should_receive(:cmds).with(["echo", "hello", "world"])
|
153
|
+
@starter.should_receive(:pwd).with(".")
|
154
|
+
@starter.should_receive(:stdout).with(ous)
|
155
|
+
@cmd_proc.should_receive(:join).and_return(1)
|
156
|
+
@launcher.execute(env, "echo", "hello", "world", opt).should == 1
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "spawn" do
|
162
|
+
it "works like execute without waiting for command execution" do
|
163
|
+
ous = mock("OutputStream")
|
164
|
+
ous.should_receive(:to_outputstream).and_return(ous)
|
165
|
+
env = mock("hashy env")
|
166
|
+
env.should_receive(:to_hash).and_return(:FOO => :BAR)
|
167
|
+
opt = mock("hashy opt")
|
168
|
+
opt.should_receive(:to_hash).and_return(:chdir => ".", :out => ous)
|
169
|
+
@starter.should_receive(:envs).with({"FOO" => "BAR"})
|
170
|
+
@starter.should_receive(:cmds).with(["echo", "hello", "world"])
|
171
|
+
@starter.should_receive(:pwd).with(".")
|
172
|
+
@starter.should_receive(:stdout).with(ous)
|
173
|
+
@cmd_proc.should_receive(:join).and_return(2)
|
174
|
+
@launcher.spawn(env, "echo", "hello", "world", opt).join.should == 2
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe Jenkins::Launcher::Proc do
|
179
|
+
|
180
|
+
subject { Jenkins::Launcher::Proc.new(@cmd_proc) }
|
181
|
+
|
182
|
+
it "passes an alive? call to a native proc" do
|
183
|
+
@cmd_proc.should_receive(:isAlive).and_return(true)
|
184
|
+
subject.alive?.should == true
|
185
|
+
end
|
186
|
+
|
187
|
+
it "passes a join call to a native proc" do
|
188
|
+
@cmd_proc.should_receive(:join).and_return(0)
|
189
|
+
subject.join.should == 0
|
190
|
+
end
|
191
|
+
|
192
|
+
it "passes a kill call to a native proc" do
|
193
|
+
@cmd_proc.should_receive(:kill).and_return(:guard)
|
194
|
+
subject.kill.should be_nil
|
195
|
+
end
|
196
|
+
|
197
|
+
it "passes a stdin call to a native proc" do
|
198
|
+
ins = mock("InputStream")
|
199
|
+
ins.should_receive(:to_io).and_return(ins)
|
200
|
+
@cmd_proc.should_receive(:getStdin).and_return(ins)
|
201
|
+
subject.stdin.should == ins
|
202
|
+
end
|
203
|
+
|
204
|
+
it "passes a stdout call to a native proc" do
|
205
|
+
ous = mock("OutputStream")
|
206
|
+
ous.should_receive(:to_io).and_return(ous)
|
207
|
+
@cmd_proc.should_receive(:getStdout).and_return(ous)
|
208
|
+
subject.stdout.should == ous
|
209
|
+
end
|
210
|
+
|
211
|
+
it "passes a stderr call to a native proc" do
|
212
|
+
errs = mock("OutputStream")
|
213
|
+
errs.should_receive(:to_io).and_return(errs)
|
214
|
+
@cmd_proc.should_receive(:getStderr).and_return(errs)
|
215
|
+
subject.stderr.should == errs
|
216
|
+
end
|
217
|
+
end
|
8
218
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
2
|
+
|
3
3
|
describe Jenkins::Model::Action do
|
4
4
|
|
5
5
|
it "has the same display_name semantics as Model" do
|
@@ -35,8 +35,7 @@ describe Jenkins::Model::Action do
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def new_action(&body)
|
38
|
-
action = Class.new
|
39
|
-
action.send(:include, Jenkins::Model::Action)
|
38
|
+
action = Class.new(Jenkins::Model::Action)
|
40
39
|
action.class_eval(&body) if block_given?
|
41
40
|
return action
|
42
41
|
end
|
@@ -2,10 +2,29 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Jenkins::Model::Build do
|
4
4
|
|
5
|
+
before :each do
|
6
|
+
@native = mock("AbstractBuild")
|
7
|
+
@subject = Jenkins::Model::Build.new(@native)
|
8
|
+
end
|
9
|
+
|
5
10
|
it "can be instantiated" do
|
6
|
-
Jenkins::Model::Build.new
|
11
|
+
Jenkins::Model::Build.new
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns workspace path" do
|
15
|
+
fs = Jenkins::FilePath.new(nil)
|
16
|
+
fs.should_receive(:getRemote).and_return(".")
|
17
|
+
@native.should_receive(:getWorkspace).and_return(fs)
|
18
|
+
@subject.workspace.to_s.should == "."
|
7
19
|
end
|
8
20
|
|
9
|
-
|
10
|
-
|
21
|
+
it "returns build variables as Hash-like" do
|
22
|
+
@native.should_receive(:getBuildVariables).and_return("FOO" => "BAR")
|
23
|
+
@subject.build_var.should == {"FOO" => "BAR"}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns environment variables as Hash-like" do
|
27
|
+
@native.should_receive(:getEnvironment).with(nil).and_return("FOO" => "BAR")
|
28
|
+
@subject.env.should == {"FOO" => "BAR"}
|
29
|
+
end
|
11
30
|
end
|
@@ -9,23 +9,25 @@ describe Jenkins::Model::Listener do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "logs messages" do
|
12
|
-
@listener.
|
13
|
-
@output.toString.should eql "Hi"
|
12
|
+
@listener.info('Hi')
|
13
|
+
@output.toString.should eql "Hi\n"
|
14
14
|
end
|
15
15
|
|
16
16
|
it "logs errors" do
|
17
17
|
@listener.error('Oh no!')
|
18
|
-
@output.toString.should match /^ERROR: Oh no
|
18
|
+
@output.toString.should match /^ERROR: Oh no/
|
19
19
|
end
|
20
20
|
|
21
21
|
it "logs fatal errors" do
|
22
22
|
@listener.fatal('boom!')
|
23
|
-
@output.toString.should match /^FATAL: boom
|
23
|
+
@output.toString.should match /^FATAL: boom/
|
24
24
|
end
|
25
25
|
|
26
|
-
it "logs
|
27
|
-
@
|
28
|
-
@listener.
|
26
|
+
it "logs if only severe" do
|
27
|
+
@listener.level = Logger::INFO
|
28
|
+
@listener.debug "debug"
|
29
|
+
@listener.info "info"
|
30
|
+
@output.toString.should == "info\n"
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
@@ -13,6 +13,17 @@ describe Jenkins::Plugin::Proxies::Builder do
|
|
13
13
|
@object.should_receive(:prebuild).with(@build, @listener)
|
14
14
|
@builder.prebuild(@jBuild, @jListener)
|
15
15
|
end
|
16
|
+
|
17
|
+
it "returns true whatever Ruby side impl returns" do
|
18
|
+
@object.should_receive(:prebuild).and_return(false)
|
19
|
+
@builder.prebuild(@jBuild, @jListener).should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns false when Ruby side impl raise an Error" do
|
23
|
+
@object.should_receive(:prebuild).and_raise(NoMethodError)
|
24
|
+
@jListener.should_receive(:error)
|
25
|
+
@builder.prebuild(@jBuild, @jListener).should == false
|
26
|
+
end
|
16
27
|
end
|
17
28
|
|
18
29
|
describe "perform" do
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jenkins::Plugin::Proxies::Publisher do
|
4
|
+
include ProxyHelper
|
5
|
+
|
6
|
+
before do
|
7
|
+
@object = mock(Jenkins::Tasks::Publisher)
|
8
|
+
@builder = Jenkins::Plugin::Proxies::Publisher.new(@plugin, @object)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "prebuild" do
|
12
|
+
it "calls through to its implementation" do
|
13
|
+
@object.should_receive(:prebuild).with(@build, @listener)
|
14
|
+
@builder.prebuild(@jBuild, @jListener)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns true whatever Ruby side impl returns" do
|
18
|
+
@object.should_receive(:prebuild).and_return(false)
|
19
|
+
@builder.prebuild(@jBuild, @jListener).should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns false when Ruby side impl raise an Error" do
|
23
|
+
@object.should_receive(:prebuild).and_raise(NoMethodError)
|
24
|
+
@jListener.should_receive(:error)
|
25
|
+
@builder.prebuild(@jBuild, @jListener).should == false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "perform" do
|
30
|
+
it "calls through to its implementation" do
|
31
|
+
@object.should_receive(:perform).with(@build, @launcher, @listener)
|
32
|
+
@builder.perform(@jBuild, @jLauncher, @jListener)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jenkins::Plugin::Proxies::RootAction do
|
4
|
+
include ProxyHelper
|
5
|
+
|
6
|
+
before do
|
7
|
+
@object = mock(Jenkins::Model::RootAction)
|
8
|
+
@root_action = Jenkins::Plugin::Proxies::RootAction.new(@plugin, @object)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "getDisplayName" do
|
12
|
+
it "calls through to its implementation" do
|
13
|
+
@object.should_receive(:display_name)
|
14
|
+
@root_action.getDisplayName
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "getIconFileName" do
|
19
|
+
it "calls through to its implementation" do
|
20
|
+
@object.should_receive(:icon)
|
21
|
+
@root_action.getIconFileName
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "getUrlName" do
|
26
|
+
it "calls through to its implementation" do
|
27
|
+
@object.should_receive(:url_path)
|
28
|
+
@root_action.getUrlName
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -41,7 +41,7 @@ describe Jenkins::Plugin::Proxies do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
describe "and there is not an appropriate proxy class registered for it" do
|
44
|
-
it "raises an exception on
|
44
|
+
it "raises an exception on export" do
|
45
45
|
expect {@proxies.export(@object)}.should raise_error
|
46
46
|
end
|
47
47
|
end
|
@@ -133,6 +133,22 @@ describe Jenkins::Plugin::Proxies do
|
|
133
133
|
|
134
134
|
end
|
135
135
|
|
136
|
+
describe "importing an unmapped native java object" do
|
137
|
+
before do
|
138
|
+
@umappable = java.lang.Object.new
|
139
|
+
@import = @proxies.import(@umappable)
|
140
|
+
end
|
141
|
+
it "maps it do an opaque native java object structure" do
|
142
|
+
@import.native.should be @umappable
|
143
|
+
end
|
144
|
+
it "reuses the same opaque proxy on subsequent imports" do
|
145
|
+
@proxies.import(@umappable).should be @import
|
146
|
+
end
|
147
|
+
it "exports the object as the original java value" do
|
148
|
+
@proxies.export(@import).should be @umappable
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
136
152
|
private
|
137
153
|
|
138
154
|
def proxy_class
|
data/spec/jenkins/plugin_spec.rb
CHANGED
@@ -1,7 +1,72 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'tmpdir'
|
2
3
|
|
3
4
|
describe Jenkins::Plugin do
|
4
5
|
it "is unbelievable that I don't have a spec for this class" do
|
5
6
|
Jenkins::Plugin.instance_method(:initialize).should_not be_nil
|
6
7
|
end
|
8
|
+
|
9
|
+
describe "when plugin loads models" do
|
10
|
+
include SpecHelper
|
11
|
+
|
12
|
+
it "only loads *.rb file" do
|
13
|
+
mktmpdir do |dir|
|
14
|
+
# - foo.rb
|
15
|
+
# - bar/
|
16
|
+
# - bar1.rb
|
17
|
+
# - bar2.rb
|
18
|
+
# - baz/
|
19
|
+
# - baz1.rb
|
20
|
+
# - baz2.rb
|
21
|
+
# - qux.rb
|
22
|
+
# - quux.rb
|
23
|
+
create_file(File.join(dir, "foo.rb"), "$T << :foo")
|
24
|
+
Dir.mkdir(File.join(dir, "bar"))
|
25
|
+
create_file(File.join(dir, "bar", "bar1.rb"), "$T << :bar1")
|
26
|
+
create_file(File.join(dir, "bar", "bar2.rb"), "$T << :bar2")
|
27
|
+
Dir.mkdir(File.join(dir, "bar", "baz"))
|
28
|
+
create_file(File.join(dir, "bar", "baz", "baz1.rb"), "$T << :baz1")
|
29
|
+
create_file(File.join(dir, "bar", "baz", "baz2.rb"), "$T << :baz2")
|
30
|
+
create_file(File.join(dir, "bar", "qux.rb"), "$T << :qux")
|
31
|
+
create_file(File.join(dir, "quux.rb"), "$T << :quux")
|
32
|
+
file = mock(:name => 'java.io.File')
|
33
|
+
file.stub(:getPath).and_return(dir)
|
34
|
+
peer = mock(:name => 'org.jenkinsci.ruby.RubyPlugin')
|
35
|
+
peer.stub(:getModelsPath).and_return(file)
|
36
|
+
plugin = Jenkins::Plugin.new(peer)
|
37
|
+
|
38
|
+
$T = []
|
39
|
+
plugin.load_models
|
40
|
+
foo = $T.index(:foo)
|
41
|
+
bar1 = $T.index(:bar1)
|
42
|
+
bar2 = $T.index(:bar2)
|
43
|
+
baz1 = $T.index(:baz1)
|
44
|
+
baz2 = $T.index(:baz2)
|
45
|
+
qux = $T.index(:qux)
|
46
|
+
quux = $T.index(:quux)
|
47
|
+
|
48
|
+
bar1.should > foo
|
49
|
+
bar1.should > quux
|
50
|
+
|
51
|
+
bar2.should > foo
|
52
|
+
bar2.should > quux
|
53
|
+
|
54
|
+
baz1.should > foo
|
55
|
+
baz1.should > bar1
|
56
|
+
baz1.should > bar2
|
57
|
+
baz1.should > qux
|
58
|
+
baz1.should > quux
|
59
|
+
|
60
|
+
baz2.should > foo
|
61
|
+
baz2.should > bar1
|
62
|
+
baz2.should > bar2
|
63
|
+
baz2.should > qux
|
64
|
+
baz2.should > quux
|
65
|
+
|
66
|
+
qux.should > foo
|
67
|
+
qux.should > quux
|
68
|
+
[foo, bar1, bar2, baz1, baz2, qux, quux].should_not include(-1)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
7
72
|
end
|