cap-util 1.1.0 → 1.2.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/.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