cap-util 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,11 +1,10 @@
1
1
  *.gem
2
2
  *.log
3
3
  *.rbc
4
+ .rbx/
4
5
  .bundle
5
6
  .config
6
7
  .yardoc
7
- .rvmrc
8
- .rbenv-version
9
8
  Gemfile.lock
10
9
  InstalledFiles
11
10
  _yardoc
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'bundler', '~>1.1'
6
- gem 'rake', '~>0.9.2'
5
+ gem 'rake'
6
+ gem 'pry'
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 <TODO: copyright holders>
1
+ Copyright (c) 2012-Present Kelly Redding and Collin Redding
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,23 +2,9 @@
2
2
 
3
3
  A set of utilities for writing cap tasks. Use these to help extract business logic from your tasks and test them.
4
4
 
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'cap-util'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install cap-util
18
-
19
5
  ## The Mixin
20
6
 
21
- The main `CapUtil` mixin can be used to make any class a cap utility. All the cap util requires is that your class define a `cap` method that returns an instance of a cap invocations.
7
+ The main `CapUtil` mixin can be used to make any class a cap utility. All the cap util requires is that your class define a `cap` method that returns an instance of a cap invocations. The mixin provides a default `attr_accessor :cap` for you; set an `@cap` instance variable to use it or override it with a custom `def cap` method.
22
8
 
23
9
  ```ruby
24
10
  # in some_great_util.rb
@@ -166,6 +152,20 @@ class MyServerRolesYaml < CapUtil::ServerRolesYaml
166
152
  end
167
153
  ```
168
154
 
155
+ ## Installation
156
+
157
+ Add this line to your application's Gemfile:
158
+
159
+ gem 'cap-util'
160
+
161
+ And then execute:
162
+
163
+ $ bundle
164
+
165
+ Or install it yourself as:
166
+
167
+ $ gem install cap-util
168
+
169
169
  ## Contributing
170
170
 
171
171
  1. Fork it
data/Rakefile CHANGED
@@ -1,8 +1 @@
1
- #!/usr/bin/env rake
2
-
3
- require 'assert/rake_tasks'
4
- Assert::RakeTasks.install
5
-
6
1
  require 'bundler/gem_tasks'
7
-
8
- task :default => :build
@@ -1,23 +1,25 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/cap-util/version', __FILE__)
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "cap-util/version"
3
5
 
4
6
  Gem::Specification.new do |gem|
5
7
  gem.name = "cap-util"
6
8
  gem.version = CapUtil::VERSION
7
- gem.description = %q{A set of utilities for writing cap tasks.}
8
- gem.summary = %q{A set of utilities for writing cap tasks.}
9
-
10
9
  gem.authors = ["Kelly Redding", "Collin Redding"]
11
10
  gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
11
+ gem.description = %q{A set of utilities for writing cap tasks.}
12
+ gem.summary = %q{A set of utilities for writing cap tasks.}
12
13
  gem.homepage = "http://github.com/redding/cap-util"
13
14
 
14
- gem.files = `git ls-files`.split("\n")
15
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
18
  gem.require_paths = ["lib"]
18
19
 
19
- gem.add_development_dependency("assert", ["~>1.0"])
20
+ gem.add_development_dependency("assert", ["~> 2.0"])
21
+
22
+ gem.add_dependency("scmd", ["~> 2.0"])
20
23
  gem.add_dependency("capistrano")
21
- gem.add_dependency("scmd", ["~>2.0"])
22
24
 
23
25
  end
@@ -1,8 +1,8 @@
1
+ require 'cap-util/version'
1
2
  require 'cap-util/say'
2
- require 'cap-util/run'
3
3
  require 'cap-util/halt'
4
+ require 'cap-util/run'
4
5
  require 'cap-util/time'
5
-
6
6
  require 'cap-util/unset_var'
7
7
 
8
8
  module CapUtil
@@ -61,8 +61,8 @@ module CapUtil
61
61
 
62
62
  attr_reader :hostname, :options
63
63
 
64
- def initialize(name, options_list=[])
65
- @hostname = "#{name}.reelfx.com"
64
+ def initialize(hostname, options_list=nil)
65
+ @hostname = hostname
66
66
  @options = {}
67
67
 
68
68
  # so, weird cap bug. options have to match type when using them in
@@ -72,7 +72,7 @@ module CapUtil
72
72
  # so, I'm just defining each option, both in string (how it comes from
73
73
  # the configs) and symbol form.
74
74
 
75
- options_list.each do |option|
75
+ (options_list || []).each do |option|
76
76
  @options[option.to_s] = true
77
77
  @options[option.to_sym] = true
78
78
  end
@@ -1,4 +1,4 @@
1
- require 'cap-util'
1
+ require 'cap-util/say'
2
2
 
3
3
  module CapUtil
4
4
  class Timer
@@ -1,3 +1,5 @@
1
+ require 'cap-util/halt'
2
+
1
3
  module CapUtil
2
4
  module UnsetVar
3
5
 
@@ -1,3 +1,3 @@
1
1
  module CapUtil
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -1,22 +1,13 @@
1
- # this file is automatically required in when you require 'assert' in your tests
2
- # put test helpers here
3
- ENV['CAPUTIL_SILENCE_SAY'] = 'yes'
1
+ # this file is automatically required when you run `assert`
2
+ # put any test helpers here
4
3
 
5
- # add root dir to the load path
4
+ # add the root dir to the load path
6
5
  $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
7
6
 
8
- require 'cap-util'
9
- require 'cap-util/fake_cap'
10
-
11
- module TestHelpers
12
-
13
- class AnCapUtil
14
- include CapUtil
7
+ # require pry for debugging (`binding.pry`)
8
+ require 'pry'
15
9
 
16
- def initialize(cap)
17
- @cap = cap
18
- end
19
-
20
- end
10
+ ENV['CAPUTIL_SILENCE_SAY'] = 'yes'
21
11
 
22
- end
12
+ require 'cap-util'
13
+ require 'cap-util/fake_cap'
@@ -0,0 +1,14 @@
1
+ require 'cap-util'
2
+
3
+ module TestHelpers
4
+
5
+ class AnCapUtil
6
+ include CapUtil
7
+
8
+ def initialize(cap)
9
+ @cap = cap
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -1,6 +1,7 @@
1
1
  require 'assert'
2
+ require 'test/support/an_cap_util'
2
3
 
3
- module CapUtil
4
+ module CapUtilSysTests
4
5
 
5
6
  class CapUtilTests < Assert::Context
6
7
  desc "the CapUtil module"
@@ -26,7 +27,7 @@ module CapUtil
26
27
  class CapUtilMixinTests < Assert::Context
27
28
  desc "the CapUtil mixin"
28
29
  setup do
29
- @cap_util = TestHelpers::AnCapUtil.new(FakeCap.new)
30
+ @cap_util = TestHelpers::AnCapUtil.new(CapUtil::FakeCap.new)
30
31
  end
31
32
  subject { @cap_util }
32
33
 
@@ -1,13 +1,12 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/fake_cap'
4
3
 
5
- module CapUtil
4
+ class CapUtil::FakeCap
6
5
 
7
- class FakeCapTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the fake cap helper"
9
8
  setup do
10
- @fc = FakeCap.new
9
+ @fc = CapUtil::FakeCap.new
11
10
  end
12
11
  subject { @fc }
13
12
 
@@ -1,12 +1,11 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/git_branch'
4
3
 
5
- module CapUtil
4
+ class CapUtil::GitBranch
6
5
 
7
- class GitBranchTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the GitBranch util"
9
- subject { GitBranch }
8
+ subject { CapUtil::GitBranch }
10
9
 
11
10
  should have_imeth :current
12
11
 
@@ -1,13 +1,12 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/run'
4
3
 
5
- module CapUtil
4
+ class CapUtil::LocalCmdRunner
6
5
 
7
- class LocalCmdRunnerTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the local cmd runner helper class"
9
8
  setup do
10
- @cmd_runner = LocalCmdRunner.new("echo hi")
9
+ @cmd_runner = CapUtil::LocalCmdRunner.new("echo hi")
11
10
  end
12
11
  subject { @cmd_runner }
13
12
 
@@ -1,17 +1,16 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/rake_task'
4
3
 
5
- module CapUtil
4
+ class CapUtil::RakeTask
6
5
 
7
- class RakeTaskTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the rake task util"
9
8
  setup do
10
- @fake_cap = FakeCap.new
9
+ @fake_cap = CapUtil::FakeCap.new
11
10
  @fake_cap.fetch_rake = "bundle exec rake"
12
11
  @fake_cap.current_path = "/a/current/path"
13
12
  @fake_cap.release_path = "/dat/release/path"
14
- @rake_task_util = RakeTask.new(@fake_cap, 'a:task:to:run')
13
+ @rake_task_util = CapUtil::RakeTask.new(@fake_cap, 'a:task:to:run')
15
14
  end
16
15
  subject { @rake_task_util }
17
16
 
@@ -27,7 +26,7 @@ module CapUtil
27
26
  end
28
27
 
29
28
  should "run the task with a custom rake if given" do
30
- task = RakeTask.new(@fake_cap, '', :rake => '/path/to/rake')
29
+ task = CapUtil::RakeTask.new(@fake_cap, '', :rake => '/path/to/rake')
31
30
  assert_match '/path/to/rake', task.cmd
32
31
  end
33
32
 
@@ -36,12 +35,12 @@ module CapUtil
36
35
  end
37
36
 
38
37
  should "use a custom cap path if given" do
39
- task = RakeTask.new(@fake_cap, '', :root => :release_path)
38
+ task = CapUtil::RakeTask.new(@fake_cap, '', :root => :release_path)
40
39
  assert_match "cd #{@fake_cap.release_path} &&", task.cmd
41
40
  end
42
41
 
43
42
  should "use a custom env var string if given" do
44
- task = RakeTask.new(@fake_cap, '', :env => "FOO=bar")
43
+ task = CapUtil::RakeTask.new(@fake_cap, '', :env => "FOO=bar")
45
44
  assert_match "FOO=bar bundle", task.cmd
46
45
  end
47
46
 
@@ -0,0 +1,115 @@
1
+ require 'assert'
2
+ require 'cap-util/server_roles'
3
+
4
+ class CapUtil::ServerRoles
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "the ServerRoles handler"
8
+ setup do
9
+ roles_yaml = <<YAML
10
+ ---
11
+ hosts:
12
+ host1: [primary]
13
+ host2: []
14
+ YAML
15
+ @fake_cap = CapUtil::FakeCap.new
16
+ @server_roles = CapUtil::ServerRoles.new(@fake_cap, roles_yaml)
17
+ end
18
+ subject { @server_roles }
19
+
20
+ should have_reader :roles
21
+ should have_imeth :apply
22
+
23
+ should "build cap roles from yaml using the apply meth" do
24
+ subject.apply
25
+ roles = @fake_cap.roles.sort{|a,b| a[1] <=> b[1]}
26
+
27
+ assert_equal 2, @fake_cap.roles.size
28
+ assert_equal ['hosts', 'host2', {}], roles.last
29
+ end
30
+
31
+ end
32
+
33
+ class RoleSetTests < Assert::Context
34
+ desc "the server roles RoleSet"
35
+ setup do
36
+ @roles_hash = {
37
+ 'hosts' => {
38
+ 'host1' => ['primary'],
39
+ 'host2' => []
40
+ }
41
+ }
42
+ @role_set = CapUtil::ServerRoles::RoleSet.new @roles_hash
43
+ end
44
+ subject { @role_set }
45
+
46
+ should have_reader :role_defs
47
+ should have_imeth :each
48
+
49
+ should "yield the name, hostname, and opts for each host/server when iterating the roles" do
50
+ exp = [
51
+ ['hosts', 'host1', {:primary => true, 'primary' => true}],
52
+ ['hosts', 'host2', {}]
53
+ ]
54
+ actual = []
55
+ subject.each do |name, host, opts|
56
+ actual << [name, host, opts]
57
+ end
58
+
59
+ assert_equal exp, actual.sort{|a, b| a[1] <=> b[1]}
60
+ end
61
+ end
62
+
63
+ class RoleDefTests < RoleSetTests
64
+ desc "the server roles RoleDef"
65
+ setup do
66
+ @role_servers_hash = {
67
+ 'host1' => ['primary'],
68
+ 'host2' => []
69
+ }
70
+ @role = CapUtil::ServerRoles::RoleDef.new('hosts', @role_servers_hash)
71
+ end
72
+ subject { @role }
73
+
74
+ should have_reader :name, :servers
75
+ should have_imeth :apply
76
+
77
+ should "build a set of servers from a definition hash" do
78
+ servs = subject.servers.sort{|a, b| a.hostname <=> b.hostname }
79
+
80
+ assert_kind_of ::Array, servs
81
+ assert_equal 2, servs.size
82
+ assert_kind_of ServerDef, servs.first
83
+ assert_equal 'host2', servs.last.hostname
84
+ assert_equal true, servs.first.options['primary']
85
+ end
86
+
87
+ end
88
+
89
+ class ServerDefTests < Assert::Context
90
+ desc "the server roles ServerDef"
91
+ setup do
92
+ @server = CapUtil::ServerRoles::ServerDef.new('host1')
93
+ end
94
+ subject { @server }
95
+
96
+ should have_readers :hostname, :options
97
+
98
+ should "build its hostname from the server name" do
99
+ assert_equal "host1", subject.hostname
100
+ end
101
+
102
+ should "have no options by defoult" do
103
+ assert_empty subject.options
104
+ end
105
+
106
+ should "build its options with both string and symbol keys" do
107
+ server = CapUtil::ServerRoles::ServerDef.new('opts1', 'primary')
108
+
109
+ assert_equal true, server.options[:primary]
110
+ assert_equal true, server.options['primary']
111
+ end
112
+
113
+ end
114
+
115
+ end
@@ -1,13 +1,12 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/server_roles_yaml'
4
3
 
5
- module CapUtil
4
+ class CapUtil::ServerRolesYaml
6
5
 
7
- class ServerRolesYamlTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the ServerRolesYaml util"
9
8
  setup do
10
- @roles_yaml = ServerRolesYaml.new(FakeCap.new )
9
+ @roles_yaml = CapUtil::ServerRolesYaml.new(CapUtil::FakeCap.new )
11
10
  end
12
11
  subject { @roles_yaml }
13
12
 
@@ -20,7 +19,7 @@ module CapUtil
20
19
  end
21
20
 
22
21
  should "use a custom desc and source if given" do
23
- yml = ServerRolesYaml.new(FakeCap.new, {
22
+ yml = CapUtil::ServerRolesYaml.new(CapUtil::FakeCap.new, {
24
23
  :desc => 'staging',
25
24
  :source => 'the place'
26
25
  })
@@ -1,18 +1,17 @@
1
1
  require 'assert'
2
2
  require 'fileutils'
3
3
  require 'pathname'
4
-
5
4
  require 'cap-util/shared_path'
6
5
 
7
- module CapUtil
6
+ class CapUtil::SharedPath
8
7
 
9
- class SharedPathTests < Assert::Context
8
+ class BaseTests < Assert::Context
10
9
  desc "the SharedPath util"
11
10
  setup do
12
- @fake_cap = FakeCap.new
11
+ @fake_cap = CapUtil::FakeCap.new
13
12
  @fake_cap.shared_path = Pathname.new File.expand_path("tmp/shared")
14
13
 
15
- @shared_path = SharedPath.new(@fake_cap)
14
+ @shared_path = CapUtil::SharedPath.new(@fake_cap)
16
15
  end
17
16
  subject { @shared_path }
18
17
 
@@ -1,13 +1,12 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/timer'
4
3
 
5
- module CapUtil
4
+ class CapUtil::Timer
6
5
 
7
- class TimerTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the Timer helper class"
9
8
  setup do
10
- @timer_util = Timer.new('a timer', :quiet)
9
+ @timer_util = CapUtil::Timer.new('a timer', :quiet)
11
10
  end
12
11
  subject { @timer_util }
13
12
 
@@ -41,7 +40,7 @@ module CapUtil
41
40
 
42
41
  assert_equal exp_end_time, subject.end_time
43
42
  assert_equal (exp_end_time - exp_start_time), subject.elapsed_time
44
- assert_equal "0:01", Timer.pretty_time(subject.elapsed_time.to_i)
43
+ assert_equal "0:01", CapUtil::Timer.pretty_time(subject.elapsed_time.to_i)
45
44
  end
46
45
 
47
46
  end
@@ -1,14 +1,13 @@
1
1
  require 'assert'
2
-
3
2
  require 'cap-util/unset_var'
4
3
 
5
- module CapUtil
4
+ module CapUtil::UnsetVar
6
5
 
7
- class UnsetVarTests < Assert::Context
6
+ class BaseTests < Assert::Context
8
7
  desc "the unset var helper"
9
8
  setup do
10
9
  @var_name = 'test'
11
- @unset = UnsetVar.new(@var_name)
10
+ @unset = CapUtil::UnsetVar.new(@var_name)
12
11
  end
13
12
  subject { @unset }
14
13
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cap-util
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 1.1.0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,52 +16,52 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-02-04 00:00:00 Z
19
+ date: 2013-03-25 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ name: assert
22
23
  prerelease: false
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
25
26
  requirements:
26
27
  - - ~>
27
28
  - !ruby/object:Gem::Version
28
- hash: 15
29
+ hash: 3
29
30
  segments:
30
- - 1
31
+ - 2
31
32
  - 0
32
- version: "1.0"
33
- requirement: *id001
34
- name: assert
33
+ version: "2.0"
35
34
  type: :development
35
+ version_requirements: *id001
36
36
  - !ruby/object:Gem::Dependency
37
+ name: scmd
37
38
  prerelease: false
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
41
- - - ">="
42
+ - - ~>
42
43
  - !ruby/object:Gem::Version
43
44
  hash: 3
44
45
  segments:
46
+ - 2
45
47
  - 0
46
- version: "0"
47
- requirement: *id002
48
- name: capistrano
48
+ version: "2.0"
49
49
  type: :runtime
50
+ version_requirements: *id002
50
51
  - !ruby/object:Gem::Dependency
52
+ name: capistrano
51
53
  prerelease: false
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ requirement: &id003 !ruby/object:Gem::Requirement
53
55
  none: false
54
56
  requirements:
55
- - - ~>
57
+ - - ">="
56
58
  - !ruby/object:Gem::Version
57
59
  hash: 3
58
60
  segments:
59
- - 2
60
61
  - 0
61
- version: "2.0"
62
- requirement: *id003
63
- name: scmd
62
+ version: "0"
64
63
  type: :runtime
64
+ version_requirements: *id003
65
65
  description: A set of utilities for writing cap tasks.
66
66
  email:
67
67
  - kelly@kellyredding.com
@@ -75,7 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
77
  - Gemfile
78
- - LICENSE
78
+ - LICENSE.txt
79
79
  - README.md
80
80
  - Rakefile
81
81
  - cap-util.gemspec
@@ -93,18 +93,18 @@ files:
93
93
  - lib/cap-util/timer.rb
94
94
  - lib/cap-util/unset_var.rb
95
95
  - lib/cap-util/version.rb
96
- - test/cap_util_tests.rb
97
- - test/fake_cap_tests.rb
98
- - test/git_branch_tests.rb
99
96
  - test/helper.rb
100
- - test/irb.rb
101
- - test/local_cmd_runner_tests.rb
102
- - test/rake_task_tests.rb
103
- - test/server_roles_tests.rb
104
- - test/server_roles_yaml_tests.rb
105
- - test/shared_path_tests.rb
106
- - test/timer_tests.rb
107
- - test/unset_var_tests.rb
97
+ - test/support/an_cap_util.rb
98
+ - test/system/cap_util_tests.rb
99
+ - test/unit/fake_cap_tests.rb
100
+ - test/unit/git_branch_tests.rb
101
+ - test/unit/local_cmd_runner_tests.rb
102
+ - test/unit/rake_task_tests.rb
103
+ - test/unit/server_roles_tests.rb
104
+ - test/unit/server_roles_yaml_tests.rb
105
+ - test/unit/shared_path_tests.rb
106
+ - test/unit/timer_tests.rb
107
+ - test/unit/unset_var_tests.rb
108
108
  homepage: http://github.com/redding/cap-util
109
109
  licenses: []
110
110
 
@@ -134,20 +134,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  requirements: []
135
135
 
136
136
  rubyforge_project:
137
- rubygems_version: 1.8.15
137
+ rubygems_version: 1.8.24
138
138
  signing_key:
139
139
  specification_version: 3
140
140
  summary: A set of utilities for writing cap tasks.
141
141
  test_files:
142
- - test/cap_util_tests.rb
143
- - test/fake_cap_tests.rb
144
- - test/git_branch_tests.rb
145
142
  - test/helper.rb
146
- - test/irb.rb
147
- - test/local_cmd_runner_tests.rb
148
- - test/rake_task_tests.rb
149
- - test/server_roles_tests.rb
150
- - test/server_roles_yaml_tests.rb
151
- - test/shared_path_tests.rb
152
- - test/timer_tests.rb
153
- - test/unset_var_tests.rb
143
+ - test/support/an_cap_util.rb
144
+ - test/system/cap_util_tests.rb
145
+ - test/unit/fake_cap_tests.rb
146
+ - test/unit/git_branch_tests.rb
147
+ - test/unit/local_cmd_runner_tests.rb
148
+ - test/unit/rake_task_tests.rb
149
+ - test/unit/server_roles_tests.rb
150
+ - test/unit/server_roles_yaml_tests.rb
151
+ - test/unit/shared_path_tests.rb
152
+ - test/unit/timer_tests.rb
153
+ - test/unit/unset_var_tests.rb
@@ -1,9 +0,0 @@
1
- require 'assert/setup'
2
-
3
- # this file is required in when the 'irb' rake test is run.
4
- # b/c 'assert/setup' is required above, the test helper will be
5
- # required in as well.
6
-
7
- # put any IRB setup code here
8
-
9
- require 'cap-util'
@@ -1,120 +0,0 @@
1
- require 'assert'
2
-
3
- require 'cap-util/server_roles'
4
-
5
- module CapUtil
6
-
7
- class ServerRolesTests < Assert::Context
8
- desc "the ServerRoles handler"
9
- setup do
10
- roles_yaml = <<YAML
11
- ---
12
- hosts:
13
- host1: [primary]
14
- host2: []
15
- YAML
16
- @fake_cap = FakeCap.new
17
- @server_roles = ServerRoles.new(@fake_cap, roles_yaml)
18
- end
19
- subject { @server_roles }
20
-
21
- should have_reader :roles
22
- should have_imeth :apply
23
-
24
- should "build cap roles from yaml using the apply meth" do
25
- subject.apply
26
- roles = @fake_cap.roles.sort{|a,b| a[1] <=> b[1]}
27
-
28
- assert_equal 2, @fake_cap.roles.size
29
- assert_equal ['hosts', 'host2.reelfx.com', {}], roles.last
30
- end
31
-
32
- end
33
-
34
- class ServerRoles
35
-
36
- class RoleSetTests < Assert::Context
37
- desc "the server roles RoleSet"
38
- setup do
39
- @roles_hash = {
40
- 'hosts' => {
41
- 'host1' => ['primary'],
42
- 'host2' => []
43
- }
44
- }
45
- @role_set = RoleSet.new @roles_hash
46
- end
47
- subject { @role_set }
48
-
49
- should have_reader :role_defs
50
- should have_imeth :each
51
-
52
- should "yield the name, hostname, and opts for each host/server when iterating the roles" do
53
- exp = [
54
- ['hosts', 'host1.reelfx.com', {:primary => true, 'primary' => true}],
55
- ['hosts', 'host2.reelfx.com', {}]
56
- ]
57
- actual = []
58
- subject.each do |name, host, opts|
59
- actual << [name, host, opts]
60
- end
61
-
62
- assert_equal exp, actual.sort{|a, b| a[1] <=> b[1]}
63
- end
64
- end
65
-
66
- class RoleDefTests < RoleSetTests
67
- desc "the server roles RoleDef"
68
- setup do
69
- @role_servers_hash = {
70
- 'host1' => ['primary'],
71
- 'host2' => []
72
- }
73
- @role = RoleDef.new('hosts', @role_servers_hash)
74
- end
75
- subject { @role }
76
-
77
- should have_reader :name, :servers
78
- should have_imeth :apply
79
-
80
- should "build a set of servers from a definition hash" do
81
- servs = subject.servers.sort{|a, b| a.hostname <=> b.hostname }
82
-
83
- assert_kind_of ::Array, servs
84
- assert_equal 2, servs.size
85
- assert_kind_of ServerDef, servs.first
86
- assert_equal 'host2.reelfx.com', servs.last.hostname
87
- assert_equal true, servs.first.options['primary']
88
- end
89
-
90
- end
91
-
92
- class ServerDefTests < Assert::Context
93
- desc "the server roles ServerDef"
94
- setup do
95
- @server = ServerDef.new('host1')
96
- end
97
- subject { @server }
98
-
99
- should have_readers :hostname, :options
100
-
101
- should "build its hostname from the server name" do
102
- assert_equal "host1.reelfx.com", subject.hostname
103
- end
104
-
105
- should "have no options by defoult" do
106
- assert_empty subject.options
107
- end
108
-
109
- should "build its options with both string and symbol keys" do
110
- server = ServerDef.new('opts1', 'primary')
111
-
112
- assert_equal true, server.options[:primary]
113
- assert_equal true, server.options['primary']
114
- end
115
-
116
- end
117
-
118
- end
119
-
120
- end