jenkins-plugin-runtime 0.1.6 → 0.1.7

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.
@@ -1,9 +1,9 @@
1
+ require 'jenkins/model/action'
1
2
 
2
3
  module Jenkins
3
4
  module Model
4
- class RootAction
5
- include Jenkins::Model::Action
6
-
5
+ class RootAction < Action
6
+ include Model
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -157,17 +157,36 @@ module Jenkins
157
157
  end
158
158
 
159
159
  def load_models
160
- p = @java.getModelsPath().getPath()
160
+ path = @java.getModelsPath().getPath()
161
161
  # TODO: can we access to Jenkins console logger?
162
- puts "Trying to load models from #{p}"
163
- for filename in Dir["#{p}/**/*.rb"]
164
- puts "Loading "+filename
165
- begin
166
- load filename
167
- rescue Exception => e
168
- puts "#{e.message} (#{e.class})\n" << (e.backtrace || []).join("\n")
162
+ puts "Trying to load models from #{path}"
163
+ load_file_in_dir(path)
164
+ end
165
+
166
+ private
167
+
168
+ # Loads files in the specified directory.
169
+ # It seaches directories in depth first with loading files for each directory.
170
+ def load_file_in_dir(dirpath)
171
+ dirs = []
172
+ Dir.new(dirpath).each do |entry|
173
+ next if entry == '.' || entry == '..'
174
+ path = File.join(dirpath, entry)
175
+ if File.directory?(path)
176
+ dirs << path
177
+ elsif /\.rb\z/ =~ path
178
+ puts "Loading " + path
179
+ begin
180
+ load path
181
+ rescue Exception => e
182
+ puts "#{e.message} (#{e.class})\n" << (e.backtrace || []).join("\n")
183
+ end
184
+ nil
169
185
  end
170
186
  end
187
+ dirs.each do |dir|
188
+ load_file_in_dir(dir)
189
+ end
171
190
  end
172
191
  end
173
192
  end
@@ -5,6 +5,7 @@ module Jenkins
5
5
 
6
6
  ExportError = Class.new(StandardError)
7
7
  ImportError = Class.new(StandardError)
8
+ NativeJavaObject = Struct.new(:native)
8
9
 
9
10
  # Maps JRuby objects part of the idomatic Ruby API
10
11
  # to a plain Java object representation and vice-versa.
@@ -60,7 +61,9 @@ module Jenkins
60
61
  end
61
62
  cls = cls.superclass
62
63
  end
63
- raise ImportError, "unable to find suitable representation for #{object.inspect}"
64
+ internal = NativeJavaObject.new(object)
65
+ link(internal, object)
66
+ return internal
64
67
  end
65
68
 
66
69
  # Reflect a native Ruby object into its External Java form.
@@ -126,6 +129,6 @@ module Jenkins
126
129
  end
127
130
 
128
131
  require 'jenkins/model/describable'
129
- ["build_wrapper", "builder"].each do |proxy|
132
+ ["action", "build_wrapper", "builder", "publisher", "root_action"].each do |proxy|
130
133
  require "jenkins/plugin/proxies/#{proxy}"
131
134
  end
@@ -0,0 +1,31 @@
1
+ require 'jenkins/model/action'
2
+
3
+ module Jenkins
4
+ class Plugin
5
+ class Proxies
6
+ class Action
7
+ include Java.hudson.model.Action
8
+ include Java.jenkins.ruby.Get
9
+ include Jenkins::Plugin::Proxy
10
+
11
+ def getIconFileName
12
+ @object.icon
13
+ end
14
+
15
+ def getUrlName
16
+ @object.url_path
17
+ end
18
+
19
+ def getDescriptor
20
+ @plugin.descriptors[@object.class]
21
+ end
22
+
23
+ def get(name)
24
+ @object.respond_to?(name) ? @object.send(name) : nil
25
+ end
26
+ end
27
+
28
+ register Jenkins::Model::Action, Action
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ module Jenkins
2
+ class Plugin
3
+ class Proxies
4
+ module BuildStep
5
+ def prebuild(build, listener)
6
+ boolean_result(listener) do
7
+ @object.prebuild(import(build), import(listener))
8
+ end
9
+ end
10
+
11
+ def perform(build, launcher, listener)
12
+ boolean_result(listener) do
13
+ @object.perform(import(build), import(launcher), import(listener))
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def boolean_result(listener, &block)
20
+ begin
21
+ yield
22
+ true
23
+ rescue Exception => e
24
+ msg = "#{e.message} (#{e.class})\n" << (e.backtrace || []).join("\n")
25
+ listener.error(msg + "\n")
26
+ false
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
-
2
1
  require 'jenkins/tasks/builder'
2
+ require 'jenkins/plugin/proxies/build_step'
3
3
 
4
4
  module Jenkins
5
5
  class Plugin
@@ -8,13 +8,7 @@ module Jenkins
8
8
  include Java.jenkins.ruby.Get
9
9
  include Jenkins::Plugin::Proxy
10
10
 
11
- def prebuild(build, listener)
12
- @object.prebuild(import(build), import(listener)) ? true : false
13
- end
14
-
15
- def perform(build, launcher, listener)
16
- @object.perform(import(build), import(launcher), import(listener)) ? true : false
17
- end
11
+ include BuildStep
18
12
 
19
13
  def getDescriptor
20
14
  @plugin.descriptors[@object.class]
@@ -23,7 +17,6 @@ module Jenkins
23
17
  def get(name)
24
18
  @object.respond_to?(name) ? @object.send(name) : nil
25
19
  end
26
-
27
20
  end
28
21
 
29
22
  register Jenkins::Tasks::Builder, Builder
@@ -0,0 +1,25 @@
1
+ require 'jenkins/tasks/publisher'
2
+ require 'jenkins/plugin/proxies/build_step'
3
+
4
+ module Jenkins
5
+ class Plugin
6
+ class Proxies
7
+ class Publisher < Java.hudson.tasks.Publisher
8
+ include Java.jenkins.ruby.Get
9
+ include Jenkins::Plugin::Proxy
10
+
11
+ include BuildStep
12
+
13
+ def getDescriptor
14
+ @plugin.descriptors[@object.class]
15
+ end
16
+
17
+ def get(name)
18
+ @object.respond_to?(name) ? @object.send(name) : nil
19
+ end
20
+ end
21
+
22
+ register Jenkins::Tasks::Publisher, Publisher
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ require 'jenkins/model/root_action'
2
+
3
+ module Jenkins
4
+ class Plugin
5
+ class Proxies
6
+ class RootAction
7
+ include Java.hudson.model.RootAction
8
+ include Java.jenkins.ruby.Get
9
+ include Jenkins::Plugin::Proxy
10
+
11
+ def getDisplayName
12
+ @object.display_name
13
+ end
14
+
15
+ def getIconFileName
16
+ @object.icon
17
+ end
18
+
19
+ def getUrlName
20
+ @object.url_path
21
+ end
22
+
23
+ def getDescriptor
24
+ @plugin.descriptors[@object.class]
25
+ end
26
+
27
+ def get(name)
28
+ @object.respond_to?(name) ? @object.send(name) : nil
29
+ end
30
+ end
31
+
32
+ register Jenkins::Model::RootAction, RootAction
33
+ end
34
+ end
35
+ end
@@ -1,7 +1,7 @@
1
1
  module Jenkins
2
2
  class Plugin
3
3
  module Runtime
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.7"
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,23 @@
1
+ module Jenkins
2
+ module Tasks
3
+ module BuildStep
4
+ ##
5
+ # Runs before the build begins
6
+ #
7
+ # @param [Jenkins::Model::Build] build the build which will begin
8
+ # @param [Jenkins::Launcher] launcher the launcher that can run code on the node running this build
9
+ # @param [Jenkins::Model::Listener] listener the listener for this build.
10
+ def prebuild(build, launcher, listener)
11
+ end
12
+
13
+ ##
14
+ # Runs the step over the given build and reports the progress to the listener.
15
+ #
16
+ # @param [Jenkins::Model::Build] build on which to run this step
17
+ # @param [Jenkins::Launcher] launcher the launcher that can run code on the node running this build
18
+ # @param [Jenkins::Model::Listener] listener the listener for this build.
19
+ def perform(build, launcher, listener)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,37 +1,18 @@
1
+ require 'jenkins/tasks/build_step'
1
2
 
2
3
  module Jenkins
3
4
  module Tasks
4
5
  ##
5
- # A single step in the entire build process
6
+ # A single build step in the entire build process
7
+ #
8
+ # See BuildStep to see interface definitions.
6
9
  class Builder
7
10
  include Jenkins::Model
8
11
  include Jenkins::Model::Describable
9
12
 
10
- describe_as Java.hudson.tasks.Builder
11
-
12
- ##
13
- # Runs before the build begins
14
- #
15
- # @param [Jenkins::Model::Build] build the build which will begin
16
- # @param [Jenkins::Launcher] launcher the launcher that can run code on the node running this build
17
- # @param [Jenkins::Model::Listener] listener the listener for this build.
18
- # @return `true` if this build can continue or `false` if there was an error
19
- # and the build needs to be aborted
20
- def prebuild(build, launcher, listener)
21
-
22
- end
13
+ include BuildStep
23
14
 
24
- ##
25
- # Runs the step over the given build and reports the progress to the listener.
26
- #
27
- # @param [Jenkins::Model::Build] build on which to run this step
28
- # @param [Jenkins::Launcher] launcher the launcher that can run code on the node running this build
29
- # @param [Jenkins::Model::Listener] listener the listener for this build.
30
- # return `true if this build can continue or `false` if there was an error
31
- # and the build needs to be aborted
32
- def perform(build, launcher, listener)
33
-
34
- end
15
+ describe_as Java.hudson.tasks.Builder
35
16
  end
36
17
  end
37
18
  end
@@ -0,0 +1,18 @@
1
+ require 'jenkins/tasks/build_step'
2
+
3
+ module Jenkins
4
+ module Tasks
5
+ ##
6
+ # A single build step that run after the build is complete
7
+ #
8
+ # See BuildStep to see interface definitions.
9
+ class Publisher
10
+ include Jenkins::Model
11
+ include Jenkins::Model::Describable
12
+
13
+ include BuildStep
14
+
15
+ describe_as Java.hudson.tasks.Publisher
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,123 @@
1
+ require 'spec_helper'
2
+
3
+ describe Jenkins::FilePath do
4
+ include SpecHelper
5
+
6
+ def create(str)
7
+ native = Java.hudson.FilePath.new(Java.java.io.File.new(str))
8
+ Jenkins::FilePath.new(native)
9
+ end
10
+
11
+ it "can be instantiated" do
12
+ Jenkins::FilePath.new(mock(Java.hudson.FilePath))
13
+ end
14
+
15
+ it "returns child for +" do
16
+ (create(".") + "foo").to_s.should == "foo"
17
+ (create(".") + "foo" + "bar").to_s.should == "foo/bar"
18
+ end
19
+
20
+ it "returns path for to_s" do
21
+ create(".").to_s.should == "."
22
+ end
23
+
24
+ it "returns realpath" do
25
+ create(".").realpath.should match /\A\//
26
+ end
27
+
28
+ it "reads file" do
29
+ create(__FILE__).read.should match /MATCH EXACTLY THIS REGEX STRING IN FILE/
30
+ end
31
+
32
+ it "returns Time as mtime" do
33
+ create(__FILE__).mtime.should be_an_instance_of Time
34
+ end
35
+
36
+ it "returns stat" do
37
+ stat = create(__FILE__).stat
38
+ rstat = File.stat(__FILE__)
39
+ stat.size.should == rstat.size
40
+ stat.mode.should == rstat.mode
41
+ stat.mtime.should == rstat.mtime
42
+ end
43
+
44
+ it "returns basename" do
45
+ create(__FILE__).basename.should be_an_instance_of Jenkins::FilePath
46
+ create(__FILE__).basename.to_s.should == __FILE__.split("/").last
47
+ end
48
+
49
+ it "checks existence" do
50
+ create(".").exist?.should == true
51
+ create("__NOSUCHFILE__").exist?.should == false
52
+ end
53
+
54
+ it "checks directory or not" do
55
+ create(".").directory?.should == true
56
+ create(__FILE__).directory?.should == false
57
+ end
58
+
59
+ it "checks file or not" do
60
+ create(".").file?.should == false
61
+ create(__FILE__).file?.should == true
62
+ end
63
+
64
+ it "returns size" do
65
+ create(__FILE__).size.should == File.size(__FILE__)
66
+ end
67
+
68
+ it "returns entries in directory" do
69
+ create(".").entries.each do |e|
70
+ e.should be_an_instance_of Jenkins::FilePath
71
+ end
72
+ end
73
+
74
+ it "iterates entries in directory" do
75
+ create(".").each_entry do |e|
76
+ e.should be_an_instance_of Jenkins::FilePath
77
+ end
78
+ end
79
+
80
+ it "returns parent directory" do
81
+ create("/").parent.to_s.should == "/"
82
+ create(".").parent.to_s.should == ".."
83
+ create(".").parent.parent.to_s.should == "../.."
84
+ create(__FILE__).parent.to_s.should == File.dirname(__FILE__)
85
+ end
86
+
87
+ it "can touch the file" do
88
+ mktmpdir do |dir|
89
+ t = Time.now
90
+ (create(dir) + "foo").touch(t)
91
+ (create(dir) + "foo").mtime.to_i.should == t.to_i
92
+ end
93
+ end
94
+
95
+ it "can check remote or not" do
96
+ create(".").remote?.should == false
97
+ end
98
+
99
+ it "can create directory" do
100
+ mktmpdir do |dir|
101
+ (create(dir) + "foo").mkdir
102
+ create(File.join(dir, "foo")).exist?.should == true
103
+ create(File.join(dir, "foo")).directory?.should == true
104
+ end
105
+ end
106
+
107
+ it "can delete file" do
108
+ mktmpdir do |dir|
109
+ (create(dir) + "foo").touch(Time.now)
110
+ (create(dir) + "foo").delete
111
+ create(File.join(dir, "foo")).exist?.should == false
112
+ end
113
+ end
114
+
115
+ it "can delete directory" do
116
+ mktmpdir do |dir|
117
+ (create(dir) + "foo").mkdir
118
+ (create(dir) + "foo").rmtree
119
+ create(File.join(dir, "foo")).exist?.should == false
120
+ end
121
+ end
122
+ end
123
+