chicanery 0.0.4 → 0.0.5
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.
- data/.gitignore +1 -0
- data/.travis.yml +2 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +10 -1
- data/README.md +14 -1
- data/bin/chicanery +1 -1
- data/chicanery.gemspec +3 -1
- data/examples/evil.rb +24 -0
- data/examples/github.rb +11 -0
- data/examples/travis.rb +21 -6
- data/lib/chicanery.rb +34 -19
- data/lib/chicanery/collections.rb +15 -0
- data/lib/chicanery/git.rb +58 -0
- data/lib/chicanery/handlers.rb +1 -1
- data/lib/chicanery/state_comparison.rb +9 -2
- data/spec/chicanery/collections_spec.rb +14 -0
- data/spec/chicanery/persistence_spec.rb +27 -0
- data/spec/chicanery/state_comparison_spec.rb +55 -12
- data/spec/chicanery_spec.rb +21 -3
- metadata +44 -9
- data/lib/chicanery/servers.rb +0 -11
- data/spec/broken.xml +0 -18
- data/spec/building.xml +0 -9
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
chicanery (0.0.
|
4
|
+
chicanery (0.0.5)
|
5
5
|
nokogiri (~> 1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.1.3)
|
11
|
+
multi_json (1.3.7)
|
11
12
|
nokogiri (1.5.5)
|
12
13
|
rake (0.9.2.2)
|
13
14
|
rspec (2.11.0)
|
@@ -18,6 +19,12 @@ GEM
|
|
18
19
|
rspec-expectations (2.11.3)
|
19
20
|
diff-lcs (~> 1.1.3)
|
20
21
|
rspec-mocks (2.11.3)
|
22
|
+
simplecov (0.7.1)
|
23
|
+
multi_json (~> 1.0)
|
24
|
+
simplecov-html (~> 0.7.1)
|
25
|
+
simplecov-gem-adapter (1.0.1)
|
26
|
+
simplecov
|
27
|
+
simplecov-html (0.7.1)
|
21
28
|
|
22
29
|
PLATFORMS
|
23
30
|
ruby
|
@@ -26,3 +33,5 @@ DEPENDENCIES
|
|
26
33
|
chicanery!
|
27
34
|
rake (~> 0)
|
28
35
|
rspec (~> 2)
|
36
|
+
simplecov
|
37
|
+
simplecov-gem-adapter
|
data/README.md
CHANGED
@@ -17,9 +17,23 @@ State is persisted between executions so that it be scheduled to run regularly w
|
|
17
17
|
Create a configuration file. This file is just a ruby file that can make use of a few configuration and callback methods:
|
18
18
|
|
19
19
|
require 'chicanery/cctray'
|
20
|
+
require 'chicanery/git'
|
20
21
|
|
22
|
+
include Chicanery::Git
|
23
|
+
|
24
|
+
git_repo 'chicanery', '/tmp/chicanery', remotes: {
|
25
|
+
github: { url: 'git://github.com/markryall/chicanery.git' }
|
26
|
+
}
|
21
27
|
server Chicanery::Cctray.new 'tddium', 'https://cihost.com/cctray.xml'
|
22
28
|
|
29
|
+
when_run do |state|
|
30
|
+
puts 'checked state'
|
31
|
+
end
|
32
|
+
|
33
|
+
when_commit do |repo, commit, previous|
|
34
|
+
puts "commit #{previous}..#{commit} detected in repo #{repo}"
|
35
|
+
end
|
36
|
+
|
23
37
|
when_succeeded do |job_name, job|
|
24
38
|
puts "#{job_name} has succeeded"
|
25
39
|
end
|
@@ -66,7 +80,6 @@ Basic authentication is supported by passing :user => 'user', :password => 'pass
|
|
66
80
|
|
67
81
|
## Plans for world domination
|
68
82
|
|
69
|
-
* monitoring a git repository for push notifications
|
70
83
|
* monitoring a mercurial repository for push notifications
|
71
84
|
* monitoring a subversion repository for commit notifications
|
72
85
|
* monitoring heroku for deployment event notification
|
data/bin/chicanery
CHANGED
data/chicanery.gemspec
CHANGED
data/examples/evil.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'chicanery/git'
|
2
|
+
|
3
|
+
include Chicanery::Git
|
4
|
+
|
5
|
+
git_repo 'chicanery', '.', branches: [:master]
|
6
|
+
|
7
|
+
start = Time.now.to_i
|
8
|
+
maximum = ARGV.shift.to_i
|
9
|
+
|
10
|
+
puts "Uncommitted changes will be automatically reverted after #{maximum} seconds"
|
11
|
+
|
12
|
+
when_run do |state|
|
13
|
+
elapsed = Time.now.to_i - start
|
14
|
+
if elapsed >= maximum
|
15
|
+
puts "no commits detected in #{elapsed} seconds - reverting all uncommitted changes"
|
16
|
+
`git reset --hard`
|
17
|
+
start = Time.now.to_i
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
when_commit do |branch, commit, previous|
|
22
|
+
puts "commit detected - resetting timer"
|
23
|
+
start = Time.now.to_i
|
24
|
+
end
|
data/examples/github.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'chicanery/git'
|
2
|
+
|
3
|
+
include Chicanery::Git
|
4
|
+
|
5
|
+
git_repo 'chicanery', '.', branches: [:master], remotes: {
|
6
|
+
github: { url: 'git://github.com/markryall/chicanery.git' }
|
7
|
+
}
|
8
|
+
|
9
|
+
when_commit do |branch, commit, previous|
|
10
|
+
puts "commit #{previous}..#{commit} detected in #{branch}"
|
11
|
+
end
|
data/examples/travis.rb
CHANGED
@@ -1,26 +1,41 @@
|
|
1
1
|
require 'chicanery/cctray'
|
2
|
+
require 'chicanery/git'
|
3
|
+
|
4
|
+
include Chicanery::Git
|
5
|
+
|
6
|
+
git_repo 'chicanery', '.', remotes: {
|
7
|
+
github: { url: 'git://github.com/markryall/chicanery.git' }
|
8
|
+
}
|
2
9
|
|
3
10
|
server Chicanery::Cctray.new 'travis', 'https://api.travis-ci.org/repositories/markryall/chicanery/cc.xml'
|
4
11
|
|
12
|
+
def growlnotify message
|
13
|
+
`growlnotify -t "some new chicanery ..." --image ~/icons/chicanery.png -m \"#{message}\"`
|
14
|
+
end
|
15
|
+
|
16
|
+
when_commit do |repo, commit, previous|
|
17
|
+
growlnotify "commit #{previous}..#{commit} detected in repo #{repo}"
|
18
|
+
end
|
19
|
+
|
5
20
|
when_started do |job_name, job|
|
6
|
-
|
7
|
-
|
21
|
+
growlnotify "job #{job_name} has started"
|
22
|
+
`afplay ~/build_sounds/ticktock.mp3`
|
8
23
|
end
|
9
24
|
|
10
25
|
when_succeeded do |job_name, job|
|
11
|
-
|
26
|
+
growlnotify "job #{job_name} #{job[:last_label]} has succeeded"
|
12
27
|
end
|
13
28
|
|
14
29
|
when_failed do |job_name, job|
|
15
|
-
|
30
|
+
growlnotify "job #{job_name} #{job[:last_label]} has failed"
|
16
31
|
end
|
17
32
|
|
18
33
|
when_broken do |job_name, job|
|
34
|
+
growlnotify "job #{job_name} is broken"
|
19
35
|
`afplay ~/build_sounds/ambulance.mp3`
|
20
|
-
puts "job #{job_name} is broken"
|
21
36
|
end
|
22
37
|
|
23
38
|
when_fixed do |job_name, job|
|
39
|
+
growlnotify "job #{job_name} is fixed"
|
24
40
|
`afplay ~/build_sounds/applause.mp3`
|
25
|
-
puts "job #{job_name} is fixed"
|
26
41
|
end
|
data/lib/chicanery.rb
CHANGED
@@ -1,33 +1,48 @@
|
|
1
|
+
if ENV['COVERAGE']
|
2
|
+
require 'simplecov'
|
3
|
+
require 'simplecov-gem-adapter'
|
4
|
+
SimpleCov.start 'gem'
|
5
|
+
end
|
6
|
+
|
1
7
|
require 'chicanery/persistence'
|
2
|
-
require 'chicanery/
|
8
|
+
require 'chicanery/collections'
|
3
9
|
require 'chicanery/handlers'
|
4
10
|
require 'chicanery/state_comparison'
|
5
11
|
|
6
12
|
module Chicanery
|
7
13
|
include Persistence
|
8
|
-
include
|
14
|
+
include Collections
|
9
15
|
include Handlers
|
10
16
|
include StateComparison
|
11
17
|
|
12
|
-
VERSION = "0.0.
|
18
|
+
VERSION = "0.0.5"
|
13
19
|
|
14
|
-
def execute
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
def execute args
|
21
|
+
begin
|
22
|
+
load args.shift
|
23
|
+
poll_period = args.shift
|
24
|
+
loop do
|
25
|
+
previous_state = restore
|
26
|
+
current_state = {
|
27
|
+
servers: {},
|
28
|
+
repos: {}
|
29
|
+
}
|
30
|
+
repos.each do |repo|
|
31
|
+
repo_state = repo.state
|
32
|
+
compare_repo_state repo.name, repo_state, previous_state[:repos][repo.name] if previous_state[:repos]
|
33
|
+
current_state[:repos][repo.name] = repo_state
|
34
|
+
end
|
35
|
+
servers.each do |server|
|
36
|
+
current_jobs = server.jobs
|
37
|
+
compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
|
38
|
+
current_state[:servers][server.name] = current_jobs
|
39
|
+
end
|
40
|
+
run_handlers.each {|handler| handler.call current_state }
|
41
|
+
persist current_state
|
42
|
+
break unless poll_period
|
43
|
+
sleep poll_period.to_i
|
26
44
|
end
|
27
|
-
|
28
|
-
persist current_state
|
29
|
-
break unless poll_period
|
30
|
-
sleep poll_period.to_i
|
45
|
+
rescue Interrupt
|
31
46
|
end
|
32
47
|
end
|
33
48
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Chicanery
|
4
|
+
module Git
|
5
|
+
class Repo
|
6
|
+
include FileUtils
|
7
|
+
|
8
|
+
attr_reader :name, :path, :branches, :remotes
|
9
|
+
|
10
|
+
def initialize name, path, params={}
|
11
|
+
@name, @path = name, path
|
12
|
+
@branches = params[:branches] || []
|
13
|
+
@remotes = params[:remotes] || {}
|
14
|
+
end
|
15
|
+
|
16
|
+
def in_repo
|
17
|
+
Dir.chdir(path) { yield }
|
18
|
+
end
|
19
|
+
|
20
|
+
def prepare
|
21
|
+
return if File.exists? path
|
22
|
+
mkdir_p path
|
23
|
+
in_repo { git 'init' }
|
24
|
+
end
|
25
|
+
|
26
|
+
def state
|
27
|
+
prepare
|
28
|
+
response = {}
|
29
|
+
in_repo do
|
30
|
+
remotes.each do |name, remote|
|
31
|
+
git "remote add #{name} #{remote[:url]}" unless git("remote | grep #{name}") == name.to_s
|
32
|
+
git "fetch -q #{name}"
|
33
|
+
(remote[:branches] || ['master']).each do |branch|
|
34
|
+
response["#{name}/#{branch}"] = head "#{name}/#{branch}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
branches.each do |branch|
|
38
|
+
response[branch] = head branch
|
39
|
+
end
|
40
|
+
end
|
41
|
+
response
|
42
|
+
end
|
43
|
+
|
44
|
+
def head branch
|
45
|
+
match = /^([^ ]*) /.match git "log -n 1 #{branch} --pretty=oneline"
|
46
|
+
match[1] if match
|
47
|
+
end
|
48
|
+
|
49
|
+
def git command
|
50
|
+
`git #{command}`.chomp
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def git_repo *args
|
55
|
+
repo Repo.new *args
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/chicanery/handlers.rb
CHANGED
@@ -8,15 +8,22 @@ module Chicanery
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def compare_job name, current, previous
|
11
|
-
return unless current[:last_build_time] != previous[:last_build_time]
|
12
11
|
if current[:activity] == :building and previous[:activity] == :sleeping
|
13
12
|
notify_started_handlers name, current
|
14
|
-
return
|
15
13
|
end
|
14
|
+
return unless current[:last_build_time] != previous[:last_build_time]
|
16
15
|
notify_succeeded_handlers name, current if current[:last_build_status] == :success
|
17
16
|
notify_failed_handlers name, current if current[:last_build_status] == :failure
|
18
17
|
notify_broken_handlers name, current if current[:last_build_status] == :failure and previous[:last_build_status] == :success
|
19
18
|
notify_fixed_handlers name, current if current[:last_build_status] == :success and previous[:last_build_status] == :failure
|
20
19
|
end
|
20
|
+
|
21
|
+
def compare_repo_state name, current, previous
|
22
|
+
return unless previous
|
23
|
+
current.each do |branch, state|
|
24
|
+
next unless previous[branch]
|
25
|
+
notify_commit_handlers "#{name}/#{branch}", state, previous[branch] if state != previous[branch]
|
26
|
+
end
|
27
|
+
end
|
21
28
|
end
|
22
29
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
describe Chicanery::Collections do
|
2
|
+
include Chicanery::Collections
|
3
|
+
|
4
|
+
%w{server repo}.each do |entity|
|
5
|
+
it "should default to an empty list of #{entity}s" do
|
6
|
+
send("#{entity}s").should == []
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should append to #{entity}s list" do
|
10
|
+
send entity, :entity
|
11
|
+
send("#{entity}s").should == [:entity]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
describe Chicanery::Persistence do
|
2
|
+
include Chicanery::Persistence
|
3
|
+
|
4
|
+
describe '#persist' do
|
5
|
+
it 'should write state to disk as yaml' do
|
6
|
+
file = stub 'file'
|
7
|
+
state = stub 'state', to_yaml: :yaml
|
8
|
+
File.should_receive(:open).with('state', 'w').and_yield file
|
9
|
+
file.should_receive(:puts).with :yaml
|
10
|
+
persist state
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#restore' do
|
15
|
+
it 'should return empty hash if state file does not exist' do
|
16
|
+
File.should_receive(:exist?).with('state').and_return false
|
17
|
+
restore.should == {}
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should read yaml from disk' do
|
21
|
+
state = stub 'state'
|
22
|
+
File.should_receive(:exist?).with('state').and_return true
|
23
|
+
YAML.should_receive(:load_file).with('state').and_return state
|
24
|
+
restore.should == state
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,20 +1,63 @@
|
|
1
|
-
require 'chicanery/state_comparison'
|
2
|
-
|
3
1
|
describe Chicanery::StateComparison do
|
4
2
|
include Chicanery::StateComparison
|
5
3
|
|
6
|
-
|
7
|
-
|
4
|
+
describe '#compare_jobs' do
|
5
|
+
let(:current_jobs) { {} }
|
6
|
+
let(:previous_jobs) { {} }
|
7
|
+
|
8
|
+
after { compare_jobs current_jobs, previous_jobs }
|
9
|
+
|
10
|
+
it 'should do nothing when there are no jobs in current state' do
|
11
|
+
should_not_receive :compare_job
|
12
|
+
previous_jobs[:job] = {}
|
13
|
+
end
|
8
14
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
15
|
+
it 'should do nothing when there is no previous state' do
|
16
|
+
should_not_receive :compare_job
|
17
|
+
current_jobs[:job] = {}
|
18
|
+
end
|
13
19
|
end
|
14
20
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
21
|
+
describe '#compare_job' do
|
22
|
+
let(:current_job) { { activity: :sleeping, last_build_time: Time.now, } }
|
23
|
+
let(:previous_job) { { activity: :sleeping, last_build_time: (Time.now-1) } }
|
24
|
+
|
25
|
+
before {
|
26
|
+
stub! :notify_failed_handlers
|
27
|
+
stub! :notify_succeeded_handlers
|
28
|
+
}
|
29
|
+
|
30
|
+
after { compare_job 'name', current_job, previous_job }
|
31
|
+
|
32
|
+
it 'should do nothing when build times are equal' do
|
33
|
+
current_job[:last_build_time] = previous_job[:last_build_time] = Time.now
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should notify started handlers when activity changes to building' do
|
37
|
+
current_job[:activity] = :building
|
38
|
+
should_receive(:notify_started_handlers).with 'name', current_job
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should notify succeeded handlers when a build is successful' do
|
42
|
+
current_job[:last_build_status] = :success
|
43
|
+
should_receive(:notify_succeeded_handlers).with 'name', current_job
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should notify failed handlers when a build fails' do
|
47
|
+
current_job[:last_build_status] = :failure
|
48
|
+
should_receive(:notify_failed_handlers).with 'name', current_job
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should notify broken handlers when a build is broken' do
|
52
|
+
previous_job[:last_build_status] = :success
|
53
|
+
current_job[:last_build_status] = :failure
|
54
|
+
should_receive(:notify_broken_handlers).with 'name', current_job
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should notify fixed handlers when a build is fixed' do
|
58
|
+
previous_job[:last_build_status] = :failure
|
59
|
+
current_job[:last_build_status] = :success
|
60
|
+
should_receive(:notify_fixed_handlers).with 'name', current_job
|
61
|
+
end
|
19
62
|
end
|
20
63
|
end
|
data/spec/chicanery_spec.rb
CHANGED
@@ -1,12 +1,30 @@
|
|
1
|
-
require 'chicanery'
|
2
|
-
|
3
1
|
describe Chicanery do
|
4
2
|
include Chicanery
|
5
3
|
|
6
4
|
describe '#execute' do
|
5
|
+
before { %w{load restore persist}.each {|m| stub! m } }
|
6
|
+
|
7
7
|
it 'should load configuration and exit immediately when nothing is configured no poll period is provided' do
|
8
8
|
should_receive(:load).with 'configuration'
|
9
|
-
execute
|
9
|
+
execute %w{configuration}
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should restore previous state' do
|
13
|
+
should_receive(:restore)
|
14
|
+
execute %w{configuration}
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should persist new state' do
|
18
|
+
should_receive(:persist).with({
|
19
|
+
servers: {},
|
20
|
+
repos: {}
|
21
|
+
})
|
22
|
+
execute %w{configuration}
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should sleep for specified time when poll period is provided' do
|
26
|
+
should_receive(:sleep).with(10).and_raise Interrupt
|
27
|
+
execute %w{configuration 10}
|
10
28
|
end
|
11
29
|
end
|
12
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicanery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
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: 2012-
|
12
|
+
date: 2012-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -59,6 +59,38 @@ dependencies:
|
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '2'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: simplecov
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov-gem-adapter
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
62
94
|
description: trigger various events related to a continuous integration environment
|
63
95
|
email:
|
64
96
|
- mark@ryall.name
|
@@ -76,15 +108,18 @@ files:
|
|
76
108
|
- Rakefile
|
77
109
|
- bin/chicanery
|
78
110
|
- chicanery.gemspec
|
111
|
+
- examples/evil.rb
|
112
|
+
- examples/github.rb
|
79
113
|
- examples/travis.rb
|
80
114
|
- lib/chicanery.rb
|
81
115
|
- lib/chicanery/cctray.rb
|
116
|
+
- lib/chicanery/collections.rb
|
117
|
+
- lib/chicanery/git.rb
|
82
118
|
- lib/chicanery/handlers.rb
|
83
119
|
- lib/chicanery/persistence.rb
|
84
|
-
- lib/chicanery/servers.rb
|
85
120
|
- lib/chicanery/state_comparison.rb
|
86
|
-
- spec/
|
87
|
-
- spec/
|
121
|
+
- spec/chicanery/collections_spec.rb
|
122
|
+
- spec/chicanery/persistence_spec.rb
|
88
123
|
- spec/chicanery/state_comparison_spec.rb
|
89
124
|
- spec/chicanery_spec.rb
|
90
125
|
homepage: http://github.com/markryall/chicanery
|
@@ -101,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
136
|
version: '0'
|
102
137
|
segments:
|
103
138
|
- 0
|
104
|
-
hash: -
|
139
|
+
hash: -2101217152092119930
|
105
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
141
|
none: false
|
107
142
|
requirements:
|
@@ -110,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
145
|
version: '0'
|
111
146
|
segments:
|
112
147
|
- 0
|
113
|
-
hash: -
|
148
|
+
hash: -2101217152092119930
|
114
149
|
requirements: []
|
115
150
|
rubyforge_project:
|
116
151
|
rubygems_version: 1.8.23
|
@@ -118,7 +153,7 @@ signing_key:
|
|
118
153
|
specification_version: 3
|
119
154
|
summary: polls various resources related to a ci environment and performs custom notifications
|
120
155
|
test_files:
|
121
|
-
- spec/
|
122
|
-
- spec/
|
156
|
+
- spec/chicanery/collections_spec.rb
|
157
|
+
- spec/chicanery/persistence_spec.rb
|
123
158
|
- spec/chicanery/state_comparison_spec.rb
|
124
159
|
- spec/chicanery_spec.rb
|
data/lib/chicanery/servers.rb
DELETED
data/spec/broken.xml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
|
2
|
-
<?xml version="1.0" encoding="utf-8"?>
|
3
|
-
<Projects>
|
4
|
-
<Project name="sampleproject :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/specs/1" />
|
5
|
-
<Project name="sampleproject :: specs :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/specs/1/specs" />
|
6
|
-
<Project name="sampleproject :: features" activity="Sleeping" lastBuildStatus="Failure" lastBuildLabel="55" lastBuildTime="2012-11-10T13:06:00" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/features/1">
|
7
|
-
<messages>
|
8
|
-
<message text="build breaker <buildbreaker@sampleproject.com>" kind="Breakers" />
|
9
|
-
</messages>
|
10
|
-
</Project>
|
11
|
-
<Project name="sampleproject :: features :: features" activity="Sleeping" lastBuildStatus="Failure" lastBuildLabel="55" lastBuildTime="2012-11-10T13:06:00" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/features/1/features">
|
12
|
-
<messages>
|
13
|
-
<message text="build breaker <buildbreaker@sampleproject.com>" kind="Breakers" />
|
14
|
-
</messages>
|
15
|
-
</Project>
|
16
|
-
<Project name="sampleproject :: staging" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/51/staging/1" />
|
17
|
-
<Project name="sampleproject :: staging :: deploy" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/51/staging/1/deploy" />
|
18
|
-
</Projects>
|
data/spec/building.xml
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<Projects>
|
3
|
-
<Project name="sampleproject :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/specs/1" />
|
4
|
-
<Project name="sampleproject :: specs :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/specs/1/specs" />
|
5
|
-
<Project name="sampleproject :: features" activity="Building" lastBuildStatus="Success" lastBuildLabel="1" lastBuildTime="2012-11-10T12:31:53" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/features/1" />
|
6
|
-
<Project name="sampleproject :: features :: features" activity="Building" lastBuildStatus="Success" lastBuildLabel="1" lastBuildTime="2012-11-10T12:31:53" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/features/1/features" />
|
7
|
-
<Project name="sampleproject :: staging" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/51/staging/1" />
|
8
|
-
<Project name="sampleproject :: staging :: deploy" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/51/staging/1/deploy" />
|
9
|
-
</Projects>
|