relevance-github_hook 0.5.8 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,4 @@
1
- v0.0.6. Update for latest Github json spec
1
+ v0.0.6. Update for latest Github json spec; maintain backwards compatibility to avoid breaking stuff
2
2
 
3
3
  v0.5.8. Prep for release
4
4
 
data/Rakefile CHANGED
@@ -12,4 +12,5 @@ Echoe.new('github_hook', GithubHook::VERSION) do |p|
12
12
  rdoc_template = `allison --path`.strip << ".rb"
13
13
  p.rdoc_template = rdoc_template
14
14
  p.test_pattern = 'spec/**/*_spec.rb'
15
+ p.dependencies = "json"
15
16
  end
data/github_hook.gemspec CHANGED
@@ -1,10 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{github_hook}
3
- s.version = "0.5.8"
3
+ s.version = "0.6.0"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new("= 1.2") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["Rob Sanheim"]
7
- s.date = %q{2008-07-30}
7
+ s.date = %q{2008-08-05}
8
8
  s.description = %q{Wrapper around the github post receive JSON payload.}
9
9
  s.email = %q{opensource@thinkrelevance.com}
10
10
  s.extra_rdoc_files = ["CHANGELOG", "lib/github_hook.rb", "README.txt"]
@@ -23,11 +23,14 @@ Gem::Specification.new do |s|
23
23
  s.specification_version = 2
24
24
 
25
25
  if current_version >= 3 then
26
+ s.add_runtime_dependency(%q<json>, [">= 0"])
26
27
  s.add_development_dependency(%q<echoe>, [">= 0"])
27
28
  else
29
+ s.add_dependency(%q<json>, [">= 0"])
28
30
  s.add_dependency(%q<echoe>, [">= 0"])
29
31
  end
30
32
  else
33
+ s.add_dependency(%q<json>, [">= 0"])
31
34
  s.add_dependency(%q<echoe>, [">= 0"])
32
35
  end
33
36
  end
data/lib/github_hook.rb CHANGED
@@ -1,8 +1,9 @@
1
+ require 'rubygems'
1
2
  require 'json'
2
3
  require 'ostruct'
3
4
 
4
5
  class GithubHook
5
- VERSION = '0.5.8'
6
+ VERSION = '0.6.0'
6
7
  attr_reader :before, :after, :ref, :repository, :owner, :commits
7
8
 
8
9
  def initialize(json)
@@ -10,17 +11,27 @@ class GithubHook
10
11
  @before, @after, @ref = payload["before"], payload["after"], payload["ref"]
11
12
  @repository = OpenStruct.new(payload["repository"])
12
13
  @owner = OpenStruct.new(payload["repository"]["owner"])
13
- @commits = payload['commits'].map do |hash|
14
+ @commits = create_commits(payload)
15
+ end
16
+
17
+ def create_commits(payload)
18
+ payload['commits'].map do |hash|
14
19
  commit_ostruct = OpenStruct.new(hash)
15
20
  commit_ostruct.sha = hash["id"]
16
21
  commit_ostruct.author = OpenStruct.new(hash["author"])
17
22
  commit_ostruct
18
23
  end
24
+ rescue NoMethodError
25
+ payload['commits'].map do |sha, hash|
26
+ commit_ostruct = OpenStruct.new(hash)
27
+ commit_ostruct.sha = sha
28
+ commit_ostruct.author = OpenStruct.new(hash["author"])
29
+ commit_ostruct
30
+ end
19
31
  end
20
32
 
21
- # just the most recent commit
22
33
  def last_commit
23
- @commits.first
34
+ @commits.sort_by { |commit| commit.timestamp }.last
24
35
  end
25
36
 
26
37
  end
@@ -1,51 +1,82 @@
1
1
  require File.join(File.dirname(__FILE__), *%w[helper])
2
2
 
3
3
  describe GithubHook do
4
- before { @pc = GithubHook.new(PayloadAfterJuly30)}
5
4
 
6
- it "should have repo" do
7
- repository = @pc.repository
8
- repository.url.should == "http://github.com/defunkt/github"
9
- repository.name.should == "github"
10
- end
5
+ describe "old format" do
6
+ before { @pc = GithubHook.new(PayloadBeforeJuly30)}
7
+
8
+ it "has an array of commit objects" do
9
+ commits = @pc.commits
10
+ commits[0].sha.should == "de8251ff97ee194a289832576287d6f8ad74e3d0"
11
+ commits[1].sha.should == "41a212ee83ca127e3c8cf465891ab7216a705f59"
12
+ end
11
13
 
12
- it "has reference to branch" do
13
- @pc.ref.should == "refs/heads/master"
14
- end
14
+ it "has commit values" do
15
+ commit = @pc.commits.first
16
+ commit.url.should == "http://github.com/defunkt/github/commit/de8251ff97ee194a289832576287d6f8ad74e3d0"
17
+ commit.message.should == "update pricing a tad"
18
+ commit.timestamp.should == "2008-02-15T14:36:34-08:00"
19
+ end
15
20
 
16
- it "has before and after tag" do
17
- @pc.before.should == "5aef35982fb2d34e9d9d4502f6ede1072793222d"
18
- @pc.after.should == "de8251ff97ee194a289832576287d6f8ad74e3d0"
19
- end
21
+ it "has commit author" do
22
+ author = @pc.commits.first.author
23
+ author.name.should == "Chris Wanstrath"
24
+ author.email.should == "chris@ozmm.org"
25
+ end
20
26
 
21
- it "has owner" do
22
- owner = @pc.owner
23
- owner.email.should == "chris@ozmm.org"
24
- owner.name.should == "defunkt"
27
+ it "has last commit" do
28
+ @pc.last_commit.sha.should == "41a212ee83ca127e3c8cf465891ab7216a705f59"
29
+ end
25
30
  end
31
+
32
+ describe "new format" do
33
+ before { @pc = GithubHook.new(PayloadAfterJuly30)}
34
+
35
+ it "should have repo" do
36
+ repository = @pc.repository
37
+ repository.url.should == "http://github.com/defunkt/github"
38
+ repository.name.should == "github"
39
+ end
26
40
 
27
- it "has an array of commit objects" do
28
- commits = @pc.commits
29
- commits[0].sha.should == "41a212ee83ca127e3c8cf465891ab7216a705f59"
30
- commits[1].sha.should == "de8251ff97ee194a289832576287d6f8ad74e3d0"
31
- end
41
+ it "has reference to branch" do
42
+ @pc.ref.should == "refs/heads/master"
43
+ end
32
44
 
33
- it "has commit values" do
34
- commit = @pc.commits.first
35
- commit.url.should == "http://github.com/defunkt/github/commit/41a212ee83ca127e3c8cf465891ab7216a705f59"
36
- commit.message.should == "okay i give in"
37
- commit.timestamp.should == "2008-02-15T14:57:17-08:00"
38
- end
45
+ it "has before and after tag" do
46
+ @pc.before.should == "5aef35982fb2d34e9d9d4502f6ede1072793222d"
47
+ @pc.after.should == "de8251ff97ee194a289832576287d6f8ad74e3d0"
48
+ end
39
49
 
40
- it "has commit author" do
41
- author = @pc.commits.first.author
42
- author.name.should == "Chris Wanstrath"
43
- author.email.should == "chris@ozmm.org"
44
- end
50
+ it "has owner" do
51
+ owner = @pc.owner
52
+ owner.email.should == "chris@ozmm.org"
53
+ owner.name.should == "defunkt"
54
+ end
45
55
 
46
- it "has last commit" do
47
- @pc.last_commit.should == @pc.commits.first
48
- end
56
+ it "has an array of commit objects" do
57
+ commits = @pc.commits
58
+ commits[0].sha.should == "41a212ee83ca127e3c8cf465891ab7216a705f59"
59
+ commits[1].sha.should == "de8251ff97ee194a289832576287d6f8ad74e3d0"
60
+ end
61
+
62
+ it "has commit values" do
63
+ commit = @pc.commits.first
64
+ commit.url.should == "http://github.com/defunkt/github/commit/41a212ee83ca127e3c8cf465891ab7216a705f59"
65
+ commit.message.should == "okay i give in"
66
+ commit.timestamp.should == "2008-02-15T14:57:17-08:00"
67
+ end
49
68
 
69
+ it "has commit author" do
70
+ author = @pc.commits.first.author
71
+ author.name.should == "Chris Wanstrath"
72
+ author.email.should == "chris@ozmm.org"
73
+ end
74
+
75
+ it "has last commit" do
76
+ @pc.last_commit.sha.should == "41a212ee83ca127e3c8cf465891ab7216a705f59"
77
+ end
78
+
79
+ end
80
+
50
81
  end
51
82
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relevance-github_hook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Sanheim
@@ -9,9 +9,18 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-30 00:00:00 -07:00
12
+ date: 2008-08-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
15
24
  - !ruby/object:Gem::Dependency
16
25
  name: echoe
17
26
  version_requirement: