heidi 0.3.1 → 0.4.0

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.
Files changed (72) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +3 -0
  3. data/README.rdoc +20 -0
  4. data/VERSION +1 -1
  5. data/bin/heidi +8 -82
  6. data/heidi.gemspec +49 -10
  7. data/lib/heidi.rb +4 -0
  8. data/lib/heidi/build.rb +42 -10
  9. data/lib/heidi/builder.rb +7 -2
  10. data/lib/heidi/hook.rb +2 -0
  11. data/lib/heidi/integrator.rb +11 -5
  12. data/lib/heidi/project.rb +37 -24
  13. data/lib/heidi/shell.rb +119 -0
  14. data/lib/heidi/tester.rb +6 -5
  15. data/lib/heidi/web.rb +65 -4
  16. data/lib/heidi/web/assets/css/bootstrap-responsive.css +643 -0
  17. data/lib/heidi/web/assets/css/bootstrap.css +3682 -0
  18. data/lib/heidi/web/{public/css/screen.css → assets/css/colors.css} +1 -75
  19. data/lib/heidi/web/assets/css/docs.css +772 -0
  20. data/lib/heidi/web/{public → assets}/images/HeidiBlue-480.png +0 -0
  21. data/lib/heidi/web/{public → assets}/images/HeidiBlue.gif +0 -0
  22. data/lib/heidi/web/{public → assets}/images/OrganisedMinds.png +0 -0
  23. data/lib/heidi/web/{public → assets}/images/heidi.jpeg +0 -0
  24. data/lib/heidi/web/assets/img/glyphicons-halflings-white.png +0 -0
  25. data/lib/heidi/web/assets/img/glyphicons-halflings.png +0 -0
  26. data/lib/heidi/web/assets/img/glyphicons/glyphicons_009_magic.png +0 -0
  27. data/lib/heidi/web/assets/img/glyphicons/glyphicons_042_group.png +0 -0
  28. data/lib/heidi/web/assets/img/glyphicons/glyphicons_079_podium.png +0 -0
  29. data/lib/heidi/web/assets/img/glyphicons/glyphicons_082_roundabout.png +0 -0
  30. data/lib/heidi/web/assets/img/glyphicons/glyphicons_155_show_thumbnails.png +0 -0
  31. data/lib/heidi/web/assets/img/glyphicons/glyphicons_163_iphone.png +0 -0
  32. data/lib/heidi/web/assets/img/glyphicons/glyphicons_214_resize_small.png +0 -0
  33. data/lib/heidi/web/assets/img/glyphicons/glyphicons_266_book_open.png +0 -0
  34. data/lib/heidi/web/assets/js/README.md +106 -0
  35. data/lib/heidi/web/assets/js/application.js +180 -0
  36. data/lib/heidi/web/assets/js/bootstrap-alert.js +94 -0
  37. data/lib/heidi/web/assets/js/bootstrap-button.js +100 -0
  38. data/lib/heidi/web/assets/js/bootstrap-carousel.js +157 -0
  39. data/lib/heidi/web/assets/js/bootstrap-collapse.js +136 -0
  40. data/lib/heidi/web/assets/js/bootstrap-dropdown.js +92 -0
  41. data/lib/heidi/web/assets/js/bootstrap-modal.js +210 -0
  42. data/lib/heidi/web/assets/js/bootstrap-popover.js +95 -0
  43. data/lib/heidi/web/assets/js/bootstrap-scrollspy.js +125 -0
  44. data/lib/heidi/web/assets/js/bootstrap-tab.js +130 -0
  45. data/lib/heidi/web/assets/js/bootstrap-tooltip.js +270 -0
  46. data/lib/heidi/web/assets/js/bootstrap-transition.js +51 -0
  47. data/lib/heidi/web/assets/js/bootstrap-typeahead.js +271 -0
  48. data/lib/heidi/web/assets/js/google-code-prettify/prettify.css +30 -0
  49. data/lib/heidi/web/assets/js/google-code-prettify/prettify.js +28 -0
  50. data/lib/heidi/web/assets/js/jquery.js +9252 -0
  51. data/lib/heidi/web/views/build.erb +40 -24
  52. data/lib/heidi/web/views/commit.erb +10 -7
  53. data/lib/heidi/web/views/config.erb +34 -18
  54. data/lib/heidi/web/views/home.erb +44 -25
  55. data/lib/heidi/web/views/layout.erb +57 -4
  56. data/lib/heidi/web/views/new_project.erb +56 -0
  57. data/lib/heidi/web/views/project.erb +114 -32
  58. data/lib/heidi/web/views/project_header.erb +20 -0
  59. data/spec/heidi/build_spec.rb +163 -2
  60. data/spec/heidi/builder_spec.rb +61 -1
  61. data/spec/heidi/hook_spec.rb +47 -1
  62. data/spec/heidi/integrator_spec.rb +96 -1
  63. data/spec/heidi/project_spec.rb +177 -2
  64. data/spec/heidi/shell_spec.rb +67 -0
  65. data/spec/heidi/web_spec.rb +78 -2
  66. data/spec/heidi_spec.rb +16 -5
  67. data/spec/spec_helper.rb +1 -1
  68. data/spec/support/01_rworld.rb +9 -0
  69. data/spec/support/mock_project.rb +39 -0
  70. data/spec/support/survivable.rb +10 -0
  71. metadata +131 -79
  72. data/spec/heidi/tester_spec.rb +0 -5
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ require 'heidi/shell'
3
+
4
+ require 'tmpdir'
5
+ require 'fileutils'
6
+
7
+ describe Heidi::Shell do
8
+ before(:all) do
9
+ @here = Dir.pwd
10
+ @dir = Dir.mktmpdir(nil, "/tmp")
11
+ FileUtils.chdir(@dir)
12
+ end
13
+
14
+ after(:all) do
15
+ FileUtils.remove_entry_secure @dir
16
+ FileUtils.chdir(@here)
17
+ end
18
+
19
+ before(:each) do
20
+ @shell = Class.new
21
+ @shell.extend(Heidi::Shell)
22
+ end
23
+
24
+ it "should create a root directory" do
25
+ @shell.new_heidi_root("test")
26
+ File.exists?(File.join(@dir, "test")).should be_true
27
+ File.directory?(File.join(@dir, "test", "projects")).should be_true
28
+ File.exists?(File.join(@dir, "test", "Gemfile")).should be_true
29
+ end
30
+
31
+ it "should create a project directory" do
32
+ FileUtils.chdir(File.join(@dir, "test"))
33
+ @shell.new_project("test", "git://github.com/OrganisedMinds/heidi.git")
34
+ File.directory?(File.join(@dir, "test", "projects", "test")).should be_true
35
+ File.directory?(File.join(@dir, "test", "projects", "test", "cached")).should be_true
36
+ File.directory?(File.join(@dir, "test", "projects", "test", "cached", ".git")).should be_true
37
+ end
38
+
39
+ it "should perform integration" do
40
+ FileUtils.chdir(File.join(@dir, "test"))
41
+
42
+ # Patch the default test so it will write a random file.
43
+ # Then we can test the existance of the file
44
+ rndm = "#{rand(1000)}.#{rand(1000)}"
45
+ File.exists?(File.join(@dir, "test", "projects", "test", ".test_#{rndm}")).should be_false
46
+
47
+ File.open(File.join(@dir, "test", "projects", "test", "hooks", "tests", "01_rspec"), File::TRUNC|File::WRONLY) do |f|
48
+ f.puts %Q{#!/bin/sh
49
+
50
+ touch $HEIDI_DIR/.test_#{rndm}
51
+ }
52
+ end
53
+
54
+ # do the integration
55
+ @shell.integrate("test")
56
+
57
+ # and now it should be true
58
+ File.exists?(File.join(@dir, "test", "projects", "test", ".test_#{rndm}")).should be_true
59
+ end
60
+
61
+ it "should remove a project directory" do
62
+ FileUtils.chdir(File.join(@dir, "test"))
63
+ @shell.remove_project("test")
64
+ File.directory?(File.join(@dir, "test", "projects", "test", "cached")).should be_false
65
+ File.directory?(File.join(@dir, "test", "projects", "test")).should be_true
66
+ end
67
+ end
@@ -1,6 +1,82 @@
1
1
  require 'spec_helper'
2
+ require 'rack/test'
2
3
  require 'heidi/web'
3
4
 
4
5
  describe Heidi::Web do
5
- pending "more tests please!"
6
- end
6
+ before :all do
7
+ fake_me_a_heidi
8
+ end
9
+
10
+ before :each do
11
+ Heidi::Web.stub(:project_path).and_return(@fake)
12
+ @project = @heidi[:heidi_test]
13
+ @project.name = "Heidi Test Project on the web"
14
+ end
15
+
16
+ after :all do
17
+ FileUtils.remove_entry_secure @fake
18
+ end
19
+
20
+ include Rack::Test::Methods
21
+
22
+ def app
23
+ Heidi::Web
24
+ end
25
+
26
+ it "should show a homepage" do
27
+ get '/'
28
+ last_response.status.should == 200
29
+ last_response.body.should =~ /Heidi/
30
+ end
31
+
32
+ it "should display the projects on the homepage" do
33
+ get '/'
34
+ last_response.status.should == 200
35
+ last_response.body.should =~ /heidi_test/
36
+ end
37
+
38
+ it "should display a project creation form" do
39
+ get '/projects/'
40
+ last_response.status.should == 200
41
+ end
42
+
43
+ it "should display the project page" do
44
+ get '/projects/heidi_test'
45
+ last_response.status.should == 200
46
+ last_response.body.should =~ /<h1>Heidi Test Project on the web<\/h1>/
47
+ end
48
+
49
+ it "should display the configuration page" do
50
+ get '/projects/heidi_test/configure'
51
+ last_response.status.should == 200
52
+ last_response.body.should =~ /Configuration/
53
+ end
54
+
55
+ describe "Project internals" do
56
+ before :each do
57
+ @project.integrate
58
+ end
59
+
60
+ it "should display a build" do
61
+ get "/projects/heidi_test/build/#{@project.builds.last.commit}"
62
+ last_response.status.should == 200
63
+
64
+ title = Regexp.new("<h2 class=[^>]+>build #{@project.builds.last.commit}</h2>", true)
65
+ last_response.body.should =~ title
66
+ end
67
+
68
+ it "should display a commit" do
69
+ get "/projects/heidi_test/commit/#{@project.commit}"
70
+ last_response.status.should == 200
71
+ last_response.body.should =~ Regexp.new("<h2>#{@project.commit}</h2>")
72
+
73
+ author = @project.author.gsub("<", "&lt;")
74
+ author.gsub!(">", "&gt;")
75
+ check = Regexp.new("Author: #{author}")
76
+ last_response.body.should =~ check
77
+ end
78
+
79
+ it "should be able to lock the project" do
80
+ end
81
+ end
82
+ end
@@ -2,13 +2,24 @@ require 'spec_helper'
2
2
 
3
3
  describe Heidi do
4
4
  before(:all) do
5
- shell = SimpleShell.new("/")
6
- shell.mkdir("-p", "/tmp/heidi_spec/projects/one")
5
+ fake_me_a_heidi
6
+ end
7
+
8
+ after(:all) do
9
+ FileUtils.remove_entry_secure @fake
7
10
  end
8
11
 
9
12
  it "should gather projects on load" do
10
- h = Heidi.new("/tmp/heidi_spec")
11
- h.projects.should be_kind_of(Array)
12
- h.projects.count.should == 1
13
+ @heidi.projects.should be_kind_of(Array)
14
+ @heidi.projects.count.should == 1
15
+ end
16
+
17
+ it "should return projects" do
18
+ @heidi.projects.first.should be_kind_of(Heidi::Project)
19
+ end
20
+
21
+ it "should respond to [] syntax" do
22
+ @heidi[:heidi_test].should be_kind_of(Heidi::Project)
23
+ @heidi["heidi_test"].should == @heidi.projects.first
13
24
  end
14
25
  end
@@ -5,7 +5,7 @@ require 'heidi'
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
8
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each {|f| require f}
9
9
 
10
10
  RSpec.configure do |config|
11
11
  config.tty = true
@@ -0,0 +1,9 @@
1
+ module RSpecWorldHelper
2
+ def RWorld(constant)
3
+ RSpec.configure do |config|
4
+ config.include constant
5
+ end
6
+ end
7
+ end
8
+
9
+ include RSpecWorldHelper
@@ -0,0 +1,39 @@
1
+ require 'simple_shell'
2
+ require 'tmpdir'
3
+
4
+ module MockProject
5
+ def fake_me_a_heidi
6
+ this_repo = Dir.pwd rescue ENV['PWD']
7
+
8
+ # create a heidi dir with the bare minimum
9
+ @fake = Dir.mktmpdir(nil, '/tmp')
10
+
11
+ shell = SimpleShell.new(@fake)
12
+ shell.mkdir "-p", "projects/heidi_test"
13
+ shell.in "projects/heidi_test" do |sh|
14
+ sh.git %W(clone #{this_repo} cached)
15
+ sh.mkdir "logs"
16
+ %w(build tests failure success before).each do |hook|
17
+ sh.mkdir %W(-p hooks/#{hook})
18
+ end
19
+ end
20
+
21
+ spec = File.join(@fake, "projects/heidi_test/hooks/tests", "01_rspec")
22
+
23
+ # this test hook touches a file so we can test if it did touch a file :-)
24
+ File.open(spec, File::CREAT|File::WRONLY) do |f|
25
+ f.puts %Q(#!/bin/sh
26
+
27
+ touch #{@fake}/#{File.basename(@fake)})
28
+ end
29
+
30
+ shell.chmod %W(+x #{spec})
31
+
32
+ @heidi = Heidi.new(@fake)
33
+ rescue Exception => ex
34
+ $stderr.puts "Faking heidi failed... #{ex.message}"
35
+ $stderr.puts ex.backtrace.join("\n")
36
+ end
37
+ end
38
+
39
+ RWorld(MockProject)
@@ -0,0 +1,10 @@
1
+ module Survivable
2
+ def survivable(&block)
3
+ begin
4
+ yield
5
+ rescue Exception => ex
6
+ end
7
+ end
8
+ end
9
+
10
+ RWorld(Survivable)
metadata CHANGED
@@ -1,114 +1,127 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: heidi
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.1
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.4.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Hartog C. de Mik
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-15 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2012-03-01 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: thin
16
- requirement: &88439510 !ruby/object:Gem::Requirement
17
+ requirement: &id001 !ruby/object:Gem::Requirement
17
18
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *88439510
25
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
26
27
  name: sinatra
27
- requirement: &88439190 !ruby/object:Gem::Requirement
28
+ requirement: &id002 !ruby/object:Gem::Requirement
28
29
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *88439190
36
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
37
38
  name: simple_shell
38
- requirement: &88438880 !ruby/object:Gem::Requirement
39
+ requirement: &id003 !ruby/object:Gem::Requirement
39
40
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
44
45
  type: :runtime
45
46
  prerelease: false
46
- version_requirements: *88438880
47
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
48
49
  name: rspec
49
- requirement: &88438590 !ruby/object:Gem::Requirement
50
+ requirement: &id004 !ruby/object:Gem::Requirement
50
51
  none: false
51
- requirements:
52
+ requirements:
52
53
  - - ~>
53
- - !ruby/object:Gem::Version
54
+ - !ruby/object:Gem::Version
54
55
  version: 2.8.0
55
56
  type: :development
56
57
  prerelease: false
57
- version_requirements: *88438590
58
- - !ruby/object:Gem::Dependency
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: rack-test
61
+ requirement: &id005 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
59
71
  name: rdoc
60
- requirement: &88438290 !ruby/object:Gem::Requirement
72
+ requirement: &id006 !ruby/object:Gem::Requirement
61
73
  none: false
62
- requirements:
74
+ requirements:
63
75
  - - ~>
64
- - !ruby/object:Gem::Version
65
- version: '3.12'
76
+ - !ruby/object:Gem::Version
77
+ version: "3.12"
66
78
  type: :development
67
79
  prerelease: false
68
- version_requirements: *88438290
69
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
70
82
  name: bundler
71
- requirement: &88438000 !ruby/object:Gem::Requirement
83
+ requirement: &id007 !ruby/object:Gem::Requirement
72
84
  none: false
73
- requirements:
85
+ requirements:
74
86
  - - ~>
75
- - !ruby/object:Gem::Version
87
+ - !ruby/object:Gem::Version
76
88
  version: 1.0.0
77
89
  type: :development
78
90
  prerelease: false
79
- version_requirements: *88438000
80
- - !ruby/object:Gem::Dependency
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
81
93
  name: jeweler
82
- requirement: &88437700 !ruby/object:Gem::Requirement
94
+ requirement: &id008 !ruby/object:Gem::Requirement
83
95
  none: false
84
- requirements:
96
+ requirements:
85
97
  - - ~>
86
- - !ruby/object:Gem::Version
98
+ - !ruby/object:Gem::Version
87
99
  version: 1.8.3
88
100
  type: :development
89
101
  prerelease: false
90
- version_requirements: *88437700
91
- - !ruby/object:Gem::Dependency
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
92
104
  name: rcov
93
- requirement: &88437390 !ruby/object:Gem::Requirement
105
+ requirement: &id009 !ruby/object:Gem::Requirement
94
106
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
99
111
  type: :development
100
112
  prerelease: false
101
- version_requirements: *88437390
113
+ version_requirements: *id009
102
114
  description: CI-Joe alike CI system called Heidi.
103
115
  email: hartog@organisedminds.com
104
- executables:
116
+ executables:
105
117
  - heidi
106
118
  - heidi_web
107
119
  extensions: []
108
- extra_rdoc_files:
120
+
121
+ extra_rdoc_files:
109
122
  - LICENSE.txt
110
123
  - README.rdoc
111
- files:
124
+ files:
112
125
  - .document
113
126
  - .rspec
114
127
  - Gemfile
@@ -127,55 +140,94 @@ files:
127
140
  - lib/heidi/hook.rb
128
141
  - lib/heidi/integrator.rb
129
142
  - lib/heidi/project.rb
143
+ - lib/heidi/shell.rb
130
144
  - lib/heidi/tester.rb
131
145
  - lib/heidi/web.rb
132
- - lib/heidi/web/public/css/screen.css
133
- - lib/heidi/web/public/images/HeidiBlue-480.png
134
- - lib/heidi/web/public/images/HeidiBlue.gif
135
- - lib/heidi/web/public/images/OrganisedMinds.png
136
- - lib/heidi/web/public/images/heidi.jpeg
146
+ - lib/heidi/web/assets/css/bootstrap-responsive.css
147
+ - lib/heidi/web/assets/css/bootstrap.css
148
+ - lib/heidi/web/assets/css/colors.css
149
+ - lib/heidi/web/assets/css/docs.css
150
+ - lib/heidi/web/assets/images/HeidiBlue-480.png
151
+ - lib/heidi/web/assets/images/HeidiBlue.gif
152
+ - lib/heidi/web/assets/images/OrganisedMinds.png
153
+ - lib/heidi/web/assets/images/heidi.jpeg
154
+ - lib/heidi/web/assets/img/glyphicons-halflings-white.png
155
+ - lib/heidi/web/assets/img/glyphicons-halflings.png
156
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_009_magic.png
157
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_042_group.png
158
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_079_podium.png
159
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_082_roundabout.png
160
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_155_show_thumbnails.png
161
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_163_iphone.png
162
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_214_resize_small.png
163
+ - lib/heidi/web/assets/img/glyphicons/glyphicons_266_book_open.png
164
+ - lib/heidi/web/assets/js/README.md
165
+ - lib/heidi/web/assets/js/application.js
166
+ - lib/heidi/web/assets/js/bootstrap-alert.js
167
+ - lib/heidi/web/assets/js/bootstrap-button.js
168
+ - lib/heidi/web/assets/js/bootstrap-carousel.js
169
+ - lib/heidi/web/assets/js/bootstrap-collapse.js
170
+ - lib/heidi/web/assets/js/bootstrap-dropdown.js
171
+ - lib/heidi/web/assets/js/bootstrap-modal.js
172
+ - lib/heidi/web/assets/js/bootstrap-popover.js
173
+ - lib/heidi/web/assets/js/bootstrap-scrollspy.js
174
+ - lib/heidi/web/assets/js/bootstrap-tab.js
175
+ - lib/heidi/web/assets/js/bootstrap-tooltip.js
176
+ - lib/heidi/web/assets/js/bootstrap-transition.js
177
+ - lib/heidi/web/assets/js/bootstrap-typeahead.js
178
+ - lib/heidi/web/assets/js/google-code-prettify/prettify.css
179
+ - lib/heidi/web/assets/js/google-code-prettify/prettify.js
180
+ - lib/heidi/web/assets/js/jquery.js
137
181
  - lib/heidi/web/views/build.erb
138
182
  - lib/heidi/web/views/commit.erb
139
183
  - lib/heidi/web/views/config.erb
140
184
  - lib/heidi/web/views/home.erb
141
185
  - lib/heidi/web/views/layout.erb
186
+ - lib/heidi/web/views/new_project.erb
142
187
  - lib/heidi/web/views/project.erb
188
+ - lib/heidi/web/views/project_header.erb
143
189
  - spec/heidi/build_spec.rb
144
190
  - spec/heidi/builder_spec.rb
145
191
  - spec/heidi/git_spec.rb
146
192
  - spec/heidi/hook_spec.rb
147
193
  - spec/heidi/integrator_spec.rb
148
194
  - spec/heidi/project_spec.rb
149
- - spec/heidi/tester_spec.rb
195
+ - spec/heidi/shell_spec.rb
150
196
  - spec/heidi/web_spec.rb
151
197
  - spec/heidi_spec.rb
152
198
  - spec/spec_helper.rb
199
+ - spec/support/01_rworld.rb
200
+ - spec/support/mock_project.rb
201
+ - spec/support/survivable.rb
153
202
  homepage: http://github.com/coffeeaddict/heid
154
- licenses:
203
+ licenses:
155
204
  - MIT
156
205
  post_install_message:
157
206
  rdoc_options: []
158
- require_paths:
207
+
208
+ require_paths:
159
209
  - lib
160
- required_ruby_version: !ruby/object:Gem::Requirement
210
+ required_ruby_version: !ruby/object:Gem::Requirement
161
211
  none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: '0'
166
- segments:
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ hash: -4420829798417389444
216
+ segments:
167
217
  - 0
168
- hash: 1033029007
169
- required_rubygems_version: !ruby/object:Gem::Requirement
218
+ version: "0"
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
220
  none: false
171
- requirements:
172
- - - ! '>='
173
- - !ruby/object:Gem::Version
174
- version: '0'
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: "0"
175
225
  requirements: []
226
+
176
227
  rubyforge_project:
177
- rubygems_version: 1.8.10
228
+ rubygems_version: 1.8.16
178
229
  signing_key:
179
230
  specification_version: 3
180
231
  summary: A naive CI system
181
232
  test_files: []
233
+