tddium-preview 0.0.8 → 0.1.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.
data/CHANGELOG CHANGED
@@ -2,4 +2,5 @@
2
2
  Copyright (c) 2011 Solano Labs All Rights Reserved
3
3
  =end
4
4
 
5
- v0.0.1 - Initial Version
5
+ v0.0.1 - Initial version
6
+ v0.0.8 - First preview version
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tddium-preview (0.0.7)
4
+ tddium-preview (0.0.8)
5
+ bundler
5
6
  highline
6
7
  json
7
8
  tddium_client (>= 0.0.6)
data/README.rdoc CHANGED
@@ -3,58 +3,23 @@
3
3
  tddium takes the pain out of running Selenium testing in cloud.
4
4
 
5
5
  It automatically starts private Amazon EC2 Instances, runs your test,
6
- collect results, and cleans up the EC2 resources it used so you only pay for
7
- what you use.
6
+ collect results, and cleans up the EC2 resources it used so you only
7
+ pay for what you use.
8
8
 
9
9
  == Getting Started
10
10
 
11
- 1. Sign up for an EC2 account, by going here:
12
-
13
- https://aws-portal.amazon.com/gp/aws/developer/registration/index.html
11
+ 1. Install rvm (https://rvm.beginrescueend.com). As of this writing,
12
+ version 1.2.x is supported but version 1.5.x is not.
14
13
 
15
- Note that if you have a personal Amazon account, you'll want to make a new one
16
- for Amazon Web Services.
14
+ 2. Install ruby into your rvm and create a gemset
17
15
 
18
- The registration process generates a variety of certificates and keys. Please
19
- keep track of them.
16
+ 3. Install the tddium-preview gem into your new gemset
20
17
 
21
- 2. Note your AWS Access Key and AWS Secret. You can find them by the following
22
- steps:
18
+ 4. In your GIT repo run tddium suite to create a new suite
23
19
 
24
- - go to the AWS Management Console
25
- - click on the "Account" link in the upper navigation menu
26
- - click on "Security Credentials"
27
- - scroll down to the first section "Access Credentials"
28
- - the Access Key is a 20-character alphabetic string. The Secret is hidden. Click the 'show' link to reveal it.
29
-
30
- 3. In the AWS Management Console, create a selenium-grid security group, and
31
- create rules for:
32
-
33
- * allow dest port 4444 (Selenium-Grid)
34
- * allow dest port 5900 (Windows Remote Desktop)
35
- * allow http
36
- * allow https
37
- * allow vnc
38
- * allow ssh
39
-
40
- 4. In the AWS Management Console, create a keypair called sg-keypair.
41
-
42
- 3. Subscribe to tddium:
43
-
44
- Subscribe your Amazon EC2 account to tddium here:
45
-
46
- https://aws-portal.amazon.com/gp/aws/user/subscription/index.html?ie=UTF8&offeringCode=FA429DE5
47
-
48
- 4. Start using tddium:
49
-
50
- <tt>$ tddium config:init</tt>
51
-
52
- # Asks you for the AWS Access Key and AWS Secret
53
-
54
- <tt>$ tddium test:sequential</tt>
55
-
56
- # Starts an EC2 Instance, sets SELENIUM_RC_HOST to it, and runs **/*_spec.rb in sequence
20
+ 4. Run tddium spec to run your hosted tests
57
21
 
58
22
  == Copyright
59
23
 
60
- Copyright (c) 2011 Solano Labs All Rights Reserved. See LICENSE.txt for further details.
24
+ Copyright (c) 2011 Solano Labs All Rights Reserved. See LICENSE.txt for
25
+ further details.
data/lib/tddium.rb CHANGED
@@ -107,7 +107,11 @@ class Tddium < Thor
107
107
  return unless git_repo? && tddium_settings && suite_for_current_branch?
108
108
 
109
109
  test_execution_params = {}
110
- if user_data_file_path = options[:user_data_file]
110
+
111
+ # Set the user data for spec
112
+ if user_data_file_path = options[:user_data_file] || current_suite_options["user_data_file"]
113
+ say Text::Process::USING_PREVIOUS_USER_DATA_FILE % user_data_file_path if user_data_file_path == current_suite_options["user_data_file"]
114
+
111
115
  if File.exists?(user_data_file_path)
112
116
  user_data = File.open(user_data_file_path) { |file| file.read }
113
117
  test_execution_params[:user_data_text] = Base64.encode64(user_data)
@@ -119,7 +123,10 @@ class Tddium < Thor
119
123
  end
120
124
 
121
125
  # Set max parallelism param
122
- test_execution_params[:max_parallelism] = options[:max_parallelism] if options[:max_parallelism]
126
+ if max_parallelism = options[:max_parallelism] || current_suite_options["max_parallelism"]
127
+ say Text::Process::USING_PREVIOUS_MAX_PARALLELISM % max_parallelism if max_parallelism == current_suite_options["max_parallelism"]
128
+ test_execution_params[:max_parallelism] = max_parallelism
129
+ end
123
130
 
124
131
  start_time = Time.now
125
132
 
@@ -164,7 +171,7 @@ class Tddium < Thor
164
171
  # Print out the progress of running tests
165
172
  current_test_executions["tests"].each do |test_name, result_params|
166
173
  test_status = result_params["status"]
167
- if result_params["end_time"] && !finished_tests[test_name]
174
+ if result_params["finished"] && !finished_tests[test_name]
168
175
  message = case test_status
169
176
  when "passed" then [".", :green, false]
170
177
  when "failed" then ["F", :red, false]
@@ -185,6 +192,9 @@ class Tddium < Thor
185
192
  say ""
186
193
  say Text::Process::FINISHED_TEST % (Time.now - start_time)
187
194
  say "#{finished_tests.size} examples, #{test_statuses["failed"]} failures, #{test_statuses["error"]} errors, #{test_statuses["pending"]} pending"
195
+
196
+ # Save the spec options
197
+ write_suite(current_suite_id, {"user_data_file" => user_data_file_path, "max_parallelism" => max_parallelism})
188
198
  rescue TddiumClient::Error::Base
189
199
  end
190
200
  end
@@ -214,6 +224,9 @@ class Tddium < Thor
214
224
  say Text::Status::CURRENT_SUITE_UNAVAILABLE
215
225
  end
216
226
  end
227
+
228
+ account_usage = call_api(:get, Api::Path::ACCOUNT_USAGE)
229
+ say account_usage["usage"]
217
230
  rescue TddiumClient::Error::Base
218
231
  end
219
232
  end
@@ -313,7 +326,13 @@ class Tddium < Thor
313
326
  end
314
327
 
315
328
  def current_suite_id
316
- tddium_settings["branches"][current_git_branch] if tddium_settings["branches"]
329
+ tddium_settings["branches"][current_git_branch]["id"] if tddium_settings["branches"] && tddium_settings["branches"][current_git_branch]
330
+ end
331
+
332
+ def current_suite_options
333
+ if tddium_settings["branches"] && tddium_settings["branches"][current_git_branch]
334
+ tddium_settings["branches"][current_git_branch]["options"]
335
+ end || {}
317
336
  end
318
337
 
319
338
  def current_suite_path
@@ -351,7 +370,7 @@ class Tddium < Thor
351
370
  end
352
371
 
353
372
  def git_push
354
- system("git push #{Git::REMOTE_NAME} #{current_git_branch}")
373
+ system("git push -f #{Git::REMOTE_NAME} #{current_git_branch}")
355
374
  end
356
375
 
357
376
  def git_repo?
@@ -450,7 +469,7 @@ class Tddium < Thor
450
469
  def update_git_remote_and_push(suite_details)
451
470
  git_repo_uri = suite_details["suite"]["git_repo_uri"]
452
471
  unless `git remote show -n #{Git::REMOTE_NAME}` =~ /#{git_repo_uri}/
453
- `git remote rm #{Git::REMOTE_NAME}`
472
+ `git remote rm #{Git::REMOTE_NAME} > /dev/null 2>&1`
454
473
  `git remote add #{Git::REMOTE_NAME} #{git_repo_uri}`
455
474
  end
456
475
  git_push
@@ -466,13 +485,24 @@ class Tddium < Thor
466
485
  File.open(tddium_file_name, "w") do |file|
467
486
  file.write(settings.merge({"api_key" => api_key}).to_json)
468
487
  end
488
+ write_tddium_to_gitignore
469
489
  end
470
490
 
471
- def write_suite(suite_id)
491
+ def write_suite(suite_id, options = {})
472
492
  branches = tddium_settings["branches"] || {}
473
- branches.merge!({current_git_branch => suite_id})
493
+ branches.merge!({current_git_branch => {"id" => suite_id, "options" => options}})
474
494
  File.open(tddium_file_name, "w") do |file|
475
495
  file.write(tddium_settings.merge({"branches" => branches}).to_json)
476
496
  end
497
+ write_tddium_to_gitignore
498
+ end
499
+
500
+ def write_tddium_to_gitignore
501
+ content = File.read(Git::GITIGNORE)
502
+ unless content.include?("#{tddium_file_name}\n")
503
+ File.open(Git::GITIGNORE, "a") do |file|
504
+ file.write("#{tddium_file_name}\n")
505
+ end
506
+ end
477
507
  end
478
508
  end
@@ -8,7 +8,6 @@ module TddiumConstant
8
8
  VERSION_REGEXP = /([\d\.]+)/
9
9
  end
10
10
 
11
-
12
11
  module Default
13
12
  SLEEP_TIME_BETWEEN_POLLS = 2
14
13
  ENVIRONMENT = "production"
@@ -18,6 +17,7 @@ module TddiumConstant
18
17
 
19
18
  module Git
20
19
  REMOTE_NAME = "tddium"
20
+ GITIGNORE = ".gitignore"
21
21
  end
22
22
 
23
23
  module Api
@@ -30,6 +30,7 @@ module TddiumConstant
30
30
  REGISTER_TEST_EXECUTIONS = "#{TEST_EXECUTIONS}/register"
31
31
  START_TEST_EXECUTIONS = "#{TEST_EXECUTIONS}/start"
32
32
  REPORT_TEST_EXECUTIONS = "#{TEST_EXECUTIONS}/report"
33
+ ACCOUNT_USAGE = "accounts/usage"
33
34
  end
34
35
  module ErrorCode
35
36
  INVALID_INVITATION = 2
@@ -84,6 +85,8 @@ tddium spec
84
85
  ALREADY_LOGGED_IN = "You're already logged in"
85
86
  LOGGED_IN_SUCCESSFULLY = "Logged in successfully"
86
87
  LOGGED_OUT_SUCCESSFULLY = "Logged out successfully"
88
+ USING_PREVIOUS_USER_DATA_FILE = "Using the previous user data file '%s'"
89
+ USING_PREVIOUS_MAX_PARALLELISM = "Using the previous value of max_parallelism = %s"
87
90
  end
88
91
 
89
92
  module Status
@@ -3,5 +3,5 @@ Copyright (c) 2011 Solano Labs All Rights Reserved
3
3
  =end
4
4
 
5
5
  module TddiumVersion
6
- VERSION = "0.0.8"
6
+ VERSION = "0.1.0"
7
7
  end
data/spec/tddium_spec.rb CHANGED
@@ -16,6 +16,7 @@ describe Tddium do
16
16
  SAMPLE_DATE_TIME = "2011-03-11T08:43:02Z"
17
17
  SAMPLE_EMAIL = "someone@example.com"
18
18
  SAMPLE_FILE_PATH = "./my_user_file.png"
19
+ SAMPLE_FILE_PATH2 = "./my_user_file2.png"
19
20
  SAMPLE_INVITATION_TOKEN = "TZce3NueiXp2lMTmaeRr"
20
21
  SAMPLE_GIT_REPO_URI = "ssh://git@api.tddium.com/home/git/repo/#{SAMPLE_APP_NAME}"
21
22
  SAMPLE_LICENSE_TEXT = "LICENSE"
@@ -91,7 +92,7 @@ describe Tddium do
91
92
 
92
93
  def stub_config_file(options = {})
93
94
  params = {}
94
- params.merge!(:branches => (options[:branches].is_a?(Hash)) ? options[:branches] : {SAMPLE_BRANCH_NAME => SAMPLE_SUITE_ID}) if options[:branches]
95
+ params.merge!(:branches => (options[:branches].is_a?(Hash)) ? options[:branches] : {SAMPLE_BRANCH_NAME => {"id" => SAMPLE_SUITE_ID}}) if options[:branches]
95
96
  params.merge!(:api_key => (options[:api_key].is_a?(String)) ? options[:api_key] : SAMPLE_API_KEY) if options[:api_key]
96
97
  json = params.to_json unless params.empty?
97
98
  create_file(SAMPLE_TDDIUM_CONFIG_FILE, json)
@@ -106,6 +107,7 @@ describe Tddium do
106
107
  stub_git_branch(tddium)
107
108
  stub_tddium_client
108
109
  create_file(File.join(".git", "something"), "something")
110
+ create_file(Tddium::Git::GITIGNORE, "something")
109
111
  end
110
112
 
111
113
  def stub_git_branch(tddium, default_branch_name = SAMPLE_BRANCH_NAME)
@@ -269,7 +271,7 @@ describe Tddium do
269
271
  end
270
272
 
271
273
  it "should remove all existing remotes called '#{Tddium::Git::REMOTE_NAME}'" do
272
- tddium.should_receive(:`).with("git remote rm #{Tddium::Git::REMOTE_NAME}")
274
+ tddium.should_receive(:`).with("git remote rm #{Tddium::Git::REMOTE_NAME} > /dev/null 2>&1")
273
275
  run(tddium)
274
276
  end
275
277
 
@@ -297,7 +299,7 @@ describe Tddium do
297
299
  end
298
300
 
299
301
  it "should push the latest code to '#{Tddium::Git::REMOTE_NAME}'" do
300
- tddium.should_receive(:system).with("git push #{Tddium::Git::REMOTE_NAME} #{SAMPLE_BRANCH_NAME}")
302
+ tddium.should_receive(:system).with("git push -f #{Tddium::Git::REMOTE_NAME} #{SAMPLE_BRANCH_NAME}")
301
303
  run(tddium)
302
304
  end
303
305
  end
@@ -561,11 +563,22 @@ describe Tddium do
561
563
  it_should_behave_like ".tddium file is missing or corrupt"
562
564
  it_should_behave_like "suite has not been initialized"
563
565
 
564
- context "--user-data-file=#{SAMPLE_FILE_PATH}" do
566
+ context "user-data-file" do
565
567
  context "does not exist" do
566
- it "should show the user: #{Tddium::Text::Error::NO_USER_DATA_FILE % SAMPLE_FILE_PATH}" do
567
- tddium.should_receive(:say).with(Tddium::Text::Error::NO_USER_DATA_FILE % SAMPLE_FILE_PATH)
568
- run_spec(tddium, :user_data_file => SAMPLE_FILE_PATH)
568
+ context "from command line option" do
569
+ it "should be picked first" do
570
+ tddium.should_receive(:say).with(Tddium::Text::Error::NO_USER_DATA_FILE % SAMPLE_FILE_PATH)
571
+ run_spec(tddium, :user_data_file => SAMPLE_FILE_PATH)
572
+ end
573
+ end
574
+
575
+ context "from the previous option" do
576
+ before { stub_config_file(:branches => {SAMPLE_BRANCH_NAME => {"id" => SAMPLE_SUITE_ID, "options" => {"user_data_file" => SAMPLE_FILE_PATH2}}}) }
577
+
578
+ it "should be picked if no command line option" do
579
+ tddium.should_receive(:say).with(Tddium::Text::Error::NO_USER_DATA_FILE % SAMPLE_FILE_PATH2)
580
+ run_spec(tddium)
581
+ end
569
582
  end
570
583
 
571
584
  it "should not try to git push" do
@@ -656,17 +669,28 @@ describe Tddium do
656
669
  end
657
670
  end
658
671
 
659
- context "--max_parallelism=5" do
660
- it "should send max_parallelism=5 to '#{Tddium::Api::Path::START_TEST_EXECUTIONS}'" do
661
- call_api_should_receive(:method => :post, :path => /#{Tddium::Api::Path::START_TEST_EXECUTIONS}$/, :params => hash_including(:max_parallelism => 5))
662
- run_spec(tddium, :max_parallelism => 5)
672
+ context "max_parallelism" do
673
+ context "from command line option" do
674
+ it "should be picked first" do
675
+ call_api_should_receive(:method => :post, :path => /#{Tddium::Api::Path::START_TEST_EXECUTIONS}$/, :params => hash_including(:max_parallelism => 5))
676
+ run_spec(tddium, :max_parallelism => 5)
677
+ end
678
+ end
679
+
680
+ context "from the previous option" do
681
+ before { stub_config_file(:branches => {SAMPLE_BRANCH_NAME => {"id" => SAMPLE_SUITE_ID, "options" => {"max_parallelism" => 10}}}) }
682
+
683
+ it "should be picked if no command line option" do
684
+ call_api_should_receive(:method => :post, :path => /#{Tddium::Api::Path::START_TEST_EXECUTIONS}$/, :params => hash_including(:max_parallelism => 10))
685
+ run_spec(tddium)
686
+ end
663
687
  end
664
688
  end
665
689
 
666
690
  it_should_behave_like "sending the api key"
667
691
 
668
692
  context "'POST #{Tddium::Api::Path::START_TEST_EXECUTIONS}' is successful" do
669
- let(:get_test_executions_response) { {"report"=>SAMPLE_REPORT_URL, "tests"=>{"spec/mouse_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"pending"}, "spec/pig_spec.rb"=>{"end_time"=>nil, "status"=>"started"}, "spec/dog_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"failed"}, "spec/cat_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"passed"}}} }
693
+ let(:get_test_executions_response) { {"report"=>SAMPLE_REPORT_URL, "tests"=>{"spec/mouse_spec.rb"=>{"finished" => true, "status"=>"pending"}, "spec/pig_spec.rb"=>{"finished" => false, "status"=>"started"}, "spec/dog_spec.rb"=>{"finished" => true, "status"=>"failed"}, "spec/cat_spec.rb"=>{"finished" => true, "status"=>"passed"}}} }
670
694
  before {stub_call_api_response(:post, "#{Tddium::Api::Path::SESSIONS}/#{SAMPLE_SESSION_ID}/#{Tddium::Api::Path::START_TEST_EXECUTIONS}", {"started"=>1, "status"=>0, "report" => SAMPLE_REPORT_URL})}
671
695
 
672
696
  it "should show the user: '#{Tddium::Text::Process::CHECK_TEST_REPORT % SAMPLE_REPORT_URL}'" do
@@ -730,7 +754,7 @@ describe Tddium do
730
754
 
731
755
  context "'GET #{Tddium::Api::Path::TEST_EXECUTIONS}' is successful" do
732
756
  before do
733
- get_test_executions_response_all_finished = {"report"=>SAMPLE_REPORT_URL, "tests"=>{"spec/mouse_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"pending"}, "spec/pig_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"error"}, "spec/dog_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"failed"}, "spec/cat_spec.rb"=>{"end_time"=>SAMPLE_DATE_TIME, "status"=>"passed"}}}
757
+ get_test_executions_response_all_finished = {"report"=>SAMPLE_REPORT_URL, "tests"=>{"spec/mouse_spec.rb"=>{"finished" => true, "status"=>"pending"}, "spec/pig_spec.rb"=>{"finished" => true, "status"=>"error"}, "spec/dog_spec.rb"=>{"finished" => true, "status"=>"failed"}, "spec/cat_spec.rb"=>{"finished" => true, "status"=>"passed"}}}
734
758
  stub_call_api_response(:get, "#{Tddium::Api::Path::SESSIONS}/#{SAMPLE_SESSION_ID}/#{Tddium::Api::Path::TEST_EXECUTIONS}", get_test_executions_response, get_test_executions_response_all_finished)
735
759
  stub_sleep(tddium)
736
760
  end
@@ -765,6 +789,11 @@ describe Tddium do
765
789
  run_spec(tddium)
766
790
  end
767
791
 
792
+ it "should save the spec options" do
793
+ tddium.should_receive(:write_suite).with(SAMPLE_SUITE_ID, {"user_data_file" => nil, "max_parallelism" => 3})
794
+ run_spec(tddium, {:max_parallelism => 3})
795
+ end
796
+
768
797
  it_should_behave_like("test output summary")
769
798
  end
770
799
 
@@ -821,7 +850,7 @@ describe Tddium do
821
850
  end
822
851
 
823
852
  context "without current suite" do
824
- before { stub_config_file(:branches => {SAMPLE_BRANCH_NAME => 0}) }
853
+ before { stub_config_file(:branches => {SAMPLE_BRANCH_NAME => {"id" => 0}}) }
825
854
  it "should show the user '#{Tddium::Text::Status::CURRENT_SUITE_UNAVAILABLE}'" do
826
855
  tddium.should_receive(:say).with(Tddium::Text::Status::CURRENT_SUITE_UNAVAILABLE)
827
856
  run_status(tddium)
@@ -901,8 +930,23 @@ describe Tddium do
901
930
  end
902
931
  end
903
932
  end
933
+
934
+ it "should send a 'GET' request to '#{Tddium::Api::Path::ACCOUNT_USAGE}'" do
935
+ call_api_should_receive(:method => :get, :path => Tddium::Api::Path::ACCOUNT_USAGE)
936
+ run_status(tddium)
937
+ end
938
+
939
+ context "'GET #{Tddium::Api::Path::SUITES}' is successful" do
940
+ before { stub_call_api_response(:get, Tddium::Api::Path::ACCOUNT_USAGE, {"usage" => "something"}) }
941
+
942
+ it "should display the account usage" do
943
+ tddium.should_receive(:say).with("something")
944
+ run_status(tddium)
945
+ end
946
+ end
904
947
  end
905
948
  end
949
+
906
950
  it_should_behave_like "an unsuccessful api call"
907
951
  end
908
952
 
@@ -979,7 +1023,14 @@ describe Tddium do
979
1023
  it "should write the suite id and branch name to the .tddium file" do
980
1024
  run_suite(tddium)
981
1025
  tddium_file = File.open(SAMPLE_TDDIUM_CONFIG_FILE) { |file| file.read }
982
- JSON.parse(tddium_file)["branches"][SAMPLE_BRANCH_NAME].should == SAMPLE_SUITE_ID
1026
+ JSON.parse(tddium_file)["branches"][SAMPLE_BRANCH_NAME]["id"].should == SAMPLE_SUITE_ID
1027
+ end
1028
+
1029
+ it "should update the gitignore file with tddium" do
1030
+ run_suite(tddium)
1031
+ gitignore_file = File.open(Tddium::Git::GITIGNORE) { |file| file.read }
1032
+ gitignore_file.should include(".tddium.test")
1033
+ gitignore_file.should include("something")
983
1034
  end
984
1035
  end
985
1036
 
data/tddium.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.name = "tddium-preview"
11
11
  s.version = TddiumVersion::VERSION
12
12
  s.platform = Gem::Platform::RUBY
13
- s.authors = ["Jay Moorthi"]
13
+ s.authors = ["Solano Labs"]
14
14
  s.email = ["info@tddium.com"]
15
15
  s.homepage = "http://www.tddium.com/"
16
16
  s.summary = %q{tddium Hosted Testing}
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  s.add_runtime_dependency("highline")
28
28
  s.add_runtime_dependency("json")
29
29
  s.add_runtime_dependency("tddium_client", ">=0.0.6")
30
+ s.add_runtime_dependency("bundler")
30
31
 
31
32
  s.add_development_dependency("rspec")
32
33
  s.add_development_dependency("fakefs")
metadata CHANGED
@@ -2,15 +2,15 @@
2
2
  name: tddium-preview
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.8
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
- - Jay Moorthi
8
+ - Solano Labs
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-13 00:00:00 -07:00
13
+ date: 2011-04-15 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -58,7 +58,7 @@ dependencies:
58
58
  type: :runtime
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
61
- name: rspec
61
+ name: bundler
62
62
  prerelease: false
63
63
  requirement: &id005 !ruby/object:Gem::Requirement
64
64
  none: false
@@ -66,10 +66,10 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: "0"
69
- type: :development
69
+ type: :runtime
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
- name: fakefs
72
+ name: rspec
73
73
  prerelease: false
74
74
  requirement: &id006 !ruby/object:Gem::Requirement
75
75
  none: false
@@ -80,7 +80,7 @@ dependencies:
80
80
  type: :development
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
- name: simplecov
83
+ name: fakefs
84
84
  prerelease: false
85
85
  requirement: &id007 !ruby/object:Gem::Requirement
86
86
  none: false
@@ -91,7 +91,7 @@ dependencies:
91
91
  type: :development
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
- name: rake
94
+ name: simplecov
95
95
  prerelease: false
96
96
  requirement: &id008 !ruby/object:Gem::Requirement
97
97
  none: false
@@ -101,6 +101,17 @@ dependencies:
101
101
  version: "0"
102
102
  type: :development
103
103
  version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ prerelease: false
107
+ requirement: &id009 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: "0"
113
+ type: :development
114
+ version_requirements: *id009
104
115
  description: tddium runs your rspec (and Selenium) tests in the cloud, in parallel!
105
116
  email:
106
117
  - info@tddium.com