dolphindeploy 0.0.2-universal-dotnet

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 (86) hide show
  1. data/README.markdown +9 -0
  2. data/TODO +18 -0
  3. data/external/DolphinDeploy.IIS.IIS6.dll +0 -0
  4. data/external/Microsoft.Web.Administration.dll +0 -0
  5. data/external/TinySharpZip.dll +0 -0
  6. data/external/adsutil.vbs +2938 -0
  7. data/external/xunit/HTML.xslt +117 -0
  8. data/external/xunit/NUnitXml.xslt +121 -0
  9. data/external/xunit/xunit.console.exe +0 -0
  10. data/external/xunit/xunit.console.exe.config +21 -0
  11. data/external/xunit/xunit.console.x86.exe +0 -0
  12. data/external/xunit/xunit.console.x86.exe.config +21 -0
  13. data/external/xunit/xunit.dll +0 -0
  14. data/external/xunit/xunit.dll.tdnet +5 -0
  15. data/external/xunit/xunit.extensions.dll +0 -0
  16. data/external/xunit/xunit.extensions.xml +706 -0
  17. data/external/xunit/xunit.gui.exe +0 -0
  18. data/external/xunit/xunit.gui.x86.exe +0 -0
  19. data/external/xunit/xunit.installer.exe +0 -0
  20. data/external/xunit/xunit.runner.msbuild.dll +0 -0
  21. data/external/xunit/xunit.runner.tdnet.dll +0 -0
  22. data/external/xunit/xunit.runner.utility.dll +0 -0
  23. data/external/xunit/xunit.runner.utility.xml +1048 -0
  24. data/external/xunit/xunit.xml +2306 -0
  25. data/lib/IIS/IIS.rb +23 -0
  26. data/lib/IIS/IIS6.rb +165 -0
  27. data/lib/IIS/IIS7.rb +152 -0
  28. data/lib/IIS/IISVersion.rb +7 -0
  29. data/lib/configured_as/mvc_deployment.rb +174 -0
  30. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.5.1.ReSharper.user +45 -0
  31. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/AppPoolControllerTests.cs +39 -0
  32. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj +69 -0
  33. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj.user +6 -0
  34. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Helper.cs +18 -0
  35. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Properties/AssemblyInfo.cs +36 -0
  36. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/WebsiteControllerTests.cs +56 -0
  37. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
  38. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
  39. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  40. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  41. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/test_site/index.htm +9 -0
  42. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.dll +0 -0
  43. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.xml +2306 -0
  44. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
  45. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.csproj.FileListAbsolute.txt +12 -0
  46. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
  47. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
  48. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/ResolveAssemblyReference.cache +0 -0
  49. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/test_site/index.htm +9 -0
  50. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.sln +26 -0
  51. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.suo +0 -0
  52. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/AppPoolController.cs +41 -0
  53. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.csproj +56 -0
  54. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/IIS6Manager.cs +77 -0
  55. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/Properties/AssemblyInfo.cs +36 -0
  56. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/WebsiteController.cs +101 -0
  57. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  58. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  59. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
  60. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.csproj.FileListAbsolute.txt +7 -0
  61. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  62. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  63. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/BuildScriptCache/1/78fc7364.dat +0 -0
  64. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ModuleIds.xml +4 -0
  65. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/NamedArguments/5/4b9722ad.dat +0 -0
  66. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/PdbInfo/61d4d5326252d9cd7476a391dfbbb2a47481ffa6 +0 -0
  67. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ProjectModel/ProjectModel.dat +0 -0
  68. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/SymbolCache.bin +0 -0
  69. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/TodoCache/1/78fc7364.dat +0 -0
  70. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/WordIndex/1/72ab4678.dat +0 -0
  71. data/lib/deploycommandcreator.rb +34 -0
  72. data/lib/deploymentconfig.rb +15 -0
  73. data/lib/directory_cleanup.rb +16 -0
  74. data/lib/dolphindeploy.rb +12 -0
  75. data/lib/dolphindeploy_rake.rb +36 -0
  76. data/lib/file_manager.rb +30 -0
  77. data/lib/unzip.rb +11 -0
  78. data/spec/IIS/IIS6_spec.rb +24 -0
  79. data/spec/IIS/IIS_spec.rb +18 -0
  80. data/spec/configured_as/mvc_deployment_spec.rb +108 -0
  81. data/spec/deploycommandcreator_spec.rb +169 -0
  82. data/spec/deploymentconfig_spec.rb +202 -0
  83. data/spec/dolphindeploy_spec.rb +13 -0
  84. data/spec/file_manager_spec.rb +22 -0
  85. data/spec/support/spec_helper.rb +17 -0
  86. metadata +222 -0
@@ -0,0 +1,15 @@
1
+ require 'caesars'
2
+
3
+ class Environment < Caesars
4
+ end
5
+
6
+ class DeploymentConfig < Caesars::Config
7
+ dsl Environment::DSL
8
+ end
9
+
10
+ class Deployment
11
+ def self.load
12
+ conf = File.join(File.dirname(__FILE__), '..\deploy.conf')
13
+ @deployment = DeploymentConfig.new(conf)
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ class DirectoryCleanup
2
+ def remove_last(directory_to_clean, keep_last=10)
3
+ dir_to_remove = get_directories_to_remove(directory_to_clean, keep_last)
4
+ dir_to_remove.each do |d|
5
+ puts "Removing " + d
6
+ FileUtils.rm_r d, :force => true
7
+ end
8
+ end
9
+
10
+ def get_directories_to_remove(directory_to_clean, keep_last)
11
+ Dir.chdir directory_to_clean
12
+ ordered = Dir.glob('**').sort_by {|d| File.mtime(d)}
13
+ dir_to_keep = ordered[ordered.length-keep_last..ordered.length]
14
+ ordered - dir_to_keep
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ raise Exception, "Dolphin Deploy is only supported on IronRuby" unless Object.const_defined?(:RUBY_ENGINE) && RUBY_ENGINE == 'ironruby'
2
+
3
+ $: << 'lib\configured_as'
4
+ $: << 'lib\IIS'
5
+ require 'rubygems' #FIX: Apprantly this is bad practice
6
+ require 'digest'
7
+ require 'deploymentconfig'
8
+ require 'deploycommandcreator'
9
+ require 'IIS'
10
+ require 'unzip'
11
+ require 'file_manager'
12
+ require 'directory_cleanup'
@@ -0,0 +1,36 @@
1
+ $: << 'lib'
2
+ require 'dolphindeploy'
3
+
4
+ # rake dolphin:deploy [env, server]
5
+ # rake deploy['local', 'localhost']
6
+
7
+ namespace :dolphin do
8
+ desc "Dolphin Deployment"
9
+ task :deploy, :env, :server do |t, args|
10
+ deployment = Deployment.load()
11
+ creator = DeployCommandCreator.new()
12
+
13
+ env = args.env.to_sym
14
+ server = args.server
15
+
16
+ mvc = creator.convert_from_config(deployment, env)
17
+ mvc.deploy server
18
+
19
+ end
20
+
21
+ desc "Clean up output directory"
22
+ task :cleanup, :env, :server do |t, args|
23
+ deployment = Deployment.load()
24
+ creator = DeployCommandCreator.new()
25
+
26
+ env = args.env.to_sym
27
+ server = args.server
28
+
29
+ mvc = creator.convert_from_config(deployment, env)
30
+ directory_to_clean = mvc.get_location(server)
31
+
32
+ dir = DirectoryCleanup.new
33
+ dir.remove_last(directory_to_clean, 10)
34
+ end
35
+ end
36
+
@@ -0,0 +1,30 @@
1
+ class FileManager
2
+ def extract(location, zip_path, env)
3
+ UnZip.unzip(zip_path, location)
4
+ swap_configs(location, env)
5
+ end
6
+
7
+ def get_latest_version(location, site_name)
8
+ dirs = Dir.glob("#{location}/**").grep(/#{site_name}/)
9
+
10
+ new_version = find_next_release_version(dirs, site_name)
11
+
12
+ File.join(location, site_name + "-" + "%02d" % new_version)
13
+ end
14
+
15
+ def find_next_release_version(dirs, site_name)
16
+ release_numbers = [0]
17
+
18
+ dirs.each do |dir|
19
+ s = /#{site_name}-(\d+)/.match(dir)
20
+ release_numbers << s[1].to_i unless s.nil?
21
+ end
22
+
23
+ new_version = release_numbers.max + 1
24
+ end
25
+
26
+ def swap_configs(location, env)
27
+ FileUtils.cp File.join(location, 'web.config'), File.join(location, 'web.original.config')
28
+ FileUtils.mv File.join(location, "web.#{env.to_s}.config"), File.join(location, 'web.config')
29
+ end
30
+ end
data/lib/unzip.rb ADDED
@@ -0,0 +1,11 @@
1
+ $: << 'external'
2
+ require 'TinySharpZip'
3
+ include System::IO
4
+
5
+ class UnZip
6
+ def self.unzip (file, destination)
7
+ FileUtils.mkdir_p destination
8
+ puts file + " to >> " + destination
9
+ TinySharpZip::ZipArchive.Extract(FileStream.new(file, FileMode.Open), destination)
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), '../', 'support', 'spec_helper')
2
+ require 'lib/configured_as/mvc_deployment'
3
+ require 'lib/IIS/IIS6'
4
+
5
+ describe IIS6, "executing against adsutil" do
6
+ context "Adding additional bindings" do
7
+ it "should get the website id based on the deployment name"
8
+
9
+ it "should be able to add additional headers via adsutil" do
10
+ pending "Need to hook up CLR mocking"
11
+
12
+ mvc = MvcDeployment.new
13
+ mvc.site_name = 'test'
14
+
15
+ IIS6.any_instance.expects(:`).with("cscript external\\adsutil.vbs set w3svc/5/ServerBindings \":80:test.host.header\"").once
16
+ iis = IIS6.new
17
+ iis.set_extra_header ':80:test.host.header', mvc
18
+ end
19
+
20
+ it "should supports multiple additional headers being defined"
21
+
22
+ it "should get a list of the existing binding and append to list when setting server bindings"
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__), '../', 'support', 'spec_helper')
2
+ require 'lib/configured_as/mvc_deployment'
3
+ require 'lib/IIS/IIS'
4
+ require 'lib/IIS/IIS6'
5
+ require 'lib/IIS/IISVersion'
6
+
7
+ describe IIS do
8
+ it "should executing IIS6 deployment if server is v6" do
9
+ pending "This doesn't work as I expect. Something really simple I'm guessing but keeps failing to mock objects"
10
+ mvc = MvcDeployment.new
11
+ mvc.site_name = 'test'
12
+
13
+ IISVersion.expects(:current_version).returns("6.0.0.0")
14
+ IIS6.any_instance.expects(:deploy).with("", "", mvc).returns(false)
15
+ iis = IIS.new
16
+ iis.deploy("", "", mvc)
17
+ end
18
+ end
@@ -0,0 +1,108 @@
1
+ require File.join(File.dirname(__FILE__), '../', 'support', 'spec_helper')
2
+ $: << 'lib/configured_as'
3
+ require 'mvc_deployment'
4
+
5
+ describe MvcDeployment do
6
+ describe "defaults" do
7
+ before do
8
+ @mvc = MvcDeployment.new
9
+ end
10
+
11
+ it "should have a default description" do
12
+ @mvc.description.should == "MvcDeployment"
13
+ end
14
+
15
+ it "should have a default port number" do
16
+ @mvc.port.should == 80
17
+ end
18
+ end
19
+
20
+ describe "deployment interaction" do
21
+ before do
22
+ @mvc = MvcDeployment.new
23
+ end
24
+
25
+ it "should call out to IIS6 when deploying to v6" do
26
+ pending "Not sure how to test this"
27
+ @mvc.deploy()
28
+ end
29
+
30
+ it "should get the location from config based on the environment being deployed" do
31
+ @mvc.set_to ['server', 'C:/some_location']
32
+ path = @mvc.get_location('server')
33
+ path.should == 'C:/some_location'
34
+ end
35
+ end
36
+
37
+ describe "when executing" do
38
+ before(:each) do
39
+ FileManager.any_instance.expects(:get_latest_version).returns('')
40
+ FileManager.any_instance.expects(:extract).returns('')
41
+ IIS.any_instance.expects(:deploy).returns('')
42
+
43
+ @mvc = MvcDeployment.new
44
+ @mvc.set_to ['server', 'test']
45
+ @mvc.set_before({:set_host => 'ABC'})
46
+ @mvc.set_after({:set_port => 99})
47
+ end
48
+
49
+ it "should call all the methods specified in the before block" do
50
+ @mvc.deploy('server')
51
+ @mvc.host.should == 'ABC'
52
+ end
53
+
54
+ it "should call all the methods specified in the before block" do
55
+ @mvc.deploy('server')
56
+ @mvc.port.should == 99
57
+ end
58
+ end
59
+
60
+ describe "custom extensions" do
61
+ def create_custom_method()
62
+ MvcDeployment.module_eval do
63
+ attr_accessor :custom_prop
64
+
65
+ def custom(val)
66
+ self.custom_prop = val
67
+ end
68
+ end
69
+ end
70
+
71
+ before(:each) do
72
+ FileManager.any_instance.expects(:get_latest_version).returns('')
73
+ FileManager.any_instance.expects(:extract).returns('')
74
+ IIS.any_instance.expects(:deploy).returns('')
75
+
76
+ create_custom_method()
77
+
78
+ @mvc = MvcDeployment.new
79
+ @mvc.set_to ['server', 'test']
80
+ @mvc.set_before({:custom => 'Random Value'})
81
+ end
82
+
83
+ it "should call custom methods after deployment" do
84
+ @mvc.deploy('server')
85
+ @mvc.custom_prop.should == 'Random Value'
86
+ end
87
+ end
88
+
89
+ describe "executing custom additional host headers" do
90
+ before(:each) do
91
+ FileManager.any_instance.expects(:get_latest_version).returns('')
92
+ FileManager.any_instance.expects(:extract).returns('')
93
+ IIS6.any_instance.expects(:deploy).returns('')
94
+ IIS6.any_instance.expects(:set_extra_header).returns('')
95
+ end
96
+
97
+ it "should call add_header on IIS instance" do
98
+ pending "Again... not mocking?"
99
+ mvc = MvcDeployment.new
100
+ IIS.any_instance.expects(:set_extra_header).returns(nil).once
101
+
102
+ mvc.set_to ['server', 'test']
103
+ mvc.set_after({:extra_header => 'abc.header'})
104
+
105
+ mvc.deploy('server')
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,169 @@
1
+ require File.join(File.dirname(__FILE__), 'support', 'spec_helper')
2
+ require 'DeployCommandCreator'
3
+
4
+ describe DeployCommandCreator do
5
+ def config()
6
+ config_file =
7
+ "environment do
8
+ configured_as :mvc
9
+ env :systest do
10
+ host \"Test\"
11
+ to \"server\", \"path\", \"*\"
12
+ to \"server2\", \"path2\", \"*\"
13
+ to \"server2\", \"path2\", \"127.0.0.1\"
14
+ end
15
+ end"
16
+ File.stubs(:read).returns(config_file)
17
+ require 'deploymentconfig'
18
+
19
+ return Deployment.load()
20
+ end
21
+
22
+ before do
23
+ creator = DeployCommandCreator.new()
24
+ @mvc = creator.convert_from_config(config, :systest)
25
+ end
26
+
27
+ it "should create deployment config object based on configuration" do
28
+ @mvc.should_not be_nil
29
+ @mvc.class.should == MvcDeployment
30
+ end
31
+
32
+ it "should set environment variable" do
33
+ @mvc.environment.should == :systest
34
+ end
35
+
36
+ it "should set the host variable" do
37
+ @mvc.host.should == "Test"
38
+ end
39
+
40
+ it "should set the to variable" do
41
+ @mvc.to[0].server.should == "server"
42
+ @mvc.to[0].path.should == "path"
43
+ end
44
+
45
+ it "should set the to variable with both values" do
46
+ @mvc.to[0].server.should == "server"
47
+ @mvc.to[0].path.should == "path"
48
+
49
+ @mvc.to[1].server.should == "server2"
50
+ @mvc.to[1].path.should == "path2"
51
+ end
52
+
53
+ it "should have a default IP address of *" do
54
+ @mvc.to[0].ipaddress.should == "*"
55
+ end
56
+
57
+ it "should have the correct IP address if it has been defined" do
58
+ @mvc.to[2].ipaddress.should == "127.0.0.1"
59
+ end
60
+ end
61
+
62
+ describe DeployCommandCreator, "overriding default" do
63
+ def config()
64
+ config_file =
65
+ "environment do
66
+ configured_as :mvc
67
+ desc \"Testing\"
68
+ env :systest do
69
+ host \"Test\"
70
+ end
71
+ end"
72
+ File.stubs(:read).returns(config_file)
73
+ require 'deploymentconfig'
74
+
75
+ return Deployment.load()
76
+ end
77
+
78
+ before do
79
+ creator = DeployCommandCreator.new()
80
+ @mvc = creator.convert_from_config(config, :systest)
81
+ end
82
+
83
+ it "should have a description of Testing" do
84
+ @mvc.description.should == "Testing"
85
+ end
86
+ end
87
+
88
+ describe DeployCommandCreator, "Before and After blocks" do
89
+ def config()
90
+ config_file =
91
+ "environment do
92
+ configured_as :mvc
93
+ env :systest do
94
+ host \"Test\"
95
+ to \"server\", \"path\"
96
+ to \"server2\", \"path2\"
97
+
98
+ before do
99
+ set_value 'xyz'
100
+ set_host 'ABC' #Redefines the value before executing...
101
+ end
102
+ after do
103
+ set_exec_something 'abc'
104
+ set_port 99 #Redefines the value after executing...
105
+ end
106
+ end
107
+ end"
108
+ File.stubs(:read).returns(config_file)
109
+ require 'deploymentconfig'
110
+
111
+ return Deployment.load()
112
+ end
113
+
114
+ before do
115
+ creator = DeployCommandCreator.new()
116
+ @mvc = creator.convert_from_config(config, :systest)
117
+ end
118
+
119
+ it "should create deployment config object based on configuration" do
120
+ @mvc.should_not be_nil
121
+ @mvc.class.should == MvcDeployment
122
+ end
123
+
124
+ it "should set environment variable" do
125
+ @mvc.environment.should == :systest
126
+ end
127
+
128
+ it "should have a before keys collection containing the method names" do
129
+ @mvc.before.keys.should include(:set_value)
130
+ end
131
+
132
+ it "should have a list of before blocks to execute" do
133
+ @mvc.before[:set_value].should == 'xyz'
134
+ end
135
+
136
+ it "should have an after keys collection containing the method names" do
137
+ @mvc.after.keys.should include(:set_exec_something)
138
+ end
139
+
140
+ it "should support multiple calls being specified" do
141
+ @mvc.before.keys.length.should == 2
142
+ end
143
+ end
144
+
145
+ describe "DeployCommandCreator", "supports multiple arguments for method" do
146
+ def config()
147
+ config_file =
148
+ "environment do
149
+ configured_as :mvc
150
+ desc \"Testing\"
151
+ env :systest do
152
+ host \"Test\"
153
+ end
154
+ end"
155
+ File.stubs(:read).returns(config_file)
156
+ require 'deploymentconfig'
157
+
158
+ return Deployment.load()
159
+ end
160
+
161
+ before do
162
+ creator = DeployCommandCreator.new()
163
+ @mvc = creator.convert_from_config(config, :systest)
164
+ end
165
+
166
+ it "should have a description of Testing" do
167
+ @mvc.description.should == "Testing"
168
+ end
169
+ end