factorylabs-auto_tagger 0.1.1

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.
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe StageManager do
4
+
5
+ describe ".new" do
6
+ [nil, ""].each do |value|
7
+ it "blows up if there are stages == #{value.inspect}" do
8
+ proc do
9
+ StageManager.new(value)
10
+ end.should raise_error(StageManager::NoStagesSpecifiedError)
11
+ end
12
+ end
13
+ end
14
+
15
+ describe "#previous_stage" do
16
+ it "returns the previous stage as a string if there is more than one stage, and there is a current stage" do
17
+ StageManager.new([:foo, :bar]).previous_stage(:bar).should == "foo"
18
+ end
19
+
20
+ it "returns nil if there is no previous stage" do
21
+ StageManager.new([:bar]).previous_stage(:bar).should be_nil
22
+ end
23
+
24
+ it "deals with mixed strings and symbols" do
25
+ StageManager.new([:"foo-bar", "baz"]).previous_stage(:baz).should == "foo-bar"
26
+ end
27
+
28
+ it "returns nil if there is no current stage" do
29
+ StageManager.new([:bar]).previous_stage(nil).should be_nil
30
+ end
31
+ end
32
+
33
+
34
+ end
@@ -0,0 +1,66 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Tag do
4
+
5
+ before(:each) do
6
+ @repository = Object.new
7
+ end
8
+
9
+ describe ".new" do
10
+ it "sets the repository" do
11
+ Tag.new(@repository).repository.should == @repository
12
+ end
13
+ end
14
+
15
+ describe "#find_all" do
16
+ it "returns an array of tags" do
17
+ mock(@repository).run("git tag") { "ci_01\nci_02" }
18
+ Tag.new(@repository).find_all.should == ["ci_01", "ci_02"]
19
+ end
20
+
21
+ it "returns an empty array if there are none" do
22
+ mock(@repository).run("git tag") { "" }
23
+ Tag.new(@repository).find_all.should be_empty
24
+ end
25
+ end
26
+
27
+ describe "#latest_from" do
28
+ before do
29
+ @tag = Tag.new(@repository)
30
+ mock(@tag).find_all { ["ci/01", "ci/02"] }
31
+ end
32
+
33
+ it "returns the latest tag that starts with the specified stage" do
34
+ @tag.latest_from(:ci).should == "ci/02"
35
+ end
36
+
37
+ it "returns nil if none match" do
38
+ @tag.latest_from(:staging).should be_nil
39
+ end
40
+ end
41
+
42
+ describe "#fetch_tags" do
43
+ it "sends the correct command" do
44
+ mock(@repository).run!("git fetch origin --tags")
45
+ Tag.new(@repository).fetch
46
+ end
47
+ end
48
+
49
+ describe "#push" do
50
+ it "sends the correct command" do
51
+ mock(@repository).run!("git push origin --tags")
52
+ Tag.new(@repository).push
53
+ end
54
+ end
55
+
56
+ describe "#create" do
57
+ it "creates the right command and returns the name" do
58
+ time = Time.local(2001,1,1)
59
+ mock(Time).now.once {time}
60
+ tag_name = "ci/#{time.utc.strftime('%Y%m%d%H%M%S')}"
61
+ mock(@repository).run!("git tag #{tag_name}")
62
+ Tag.new(@repository).create("ci").should == tag_name
63
+ end
64
+ end
65
+
66
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec'
2
+ require 'rr'
3
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "auto_tagger"))
4
+
5
+ Spec::Runner.configure do |config|
6
+ config.mock_with :rr
7
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factorylabs-auto_tagger
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Jeff Dean
13
+ - Brian Takita
14
+ - Mike Grafton
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-04-06 00:00:00 -06:00
20
+ default_executable: autotag
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: capistrano
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 2
31
+ - 5
32
+ - 3
33
+ version: 2.5.3
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description:
37
+ email: jeff@zilkey.com
38
+ executables:
39
+ - autotag
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - README.md
44
+ files:
45
+ - .document
46
+ - .gitignore
47
+ - CHANGELOG
48
+ - MIT-LICENSE
49
+ - README.md
50
+ - Rakefile
51
+ - VERSION
52
+ - auto_tagger.gemspec
53
+ - bin/autotag
54
+ - features/autotag.feature
55
+ - features/deployment.feature
56
+ - features/step_definitions/autotag_steps.rb
57
+ - features/step_definitions/deployment_steps.rb
58
+ - features/support/env.rb
59
+ - features/support/step_helpers.rb
60
+ - features/templates/cap_ext_deploy.erb
61
+ - features/templates/deploy.erb
62
+ - features/templates/stage.erb
63
+ - geminstaller.yml
64
+ - lib/auto_tagger.rb
65
+ - lib/auto_tagger/auto_tagger.rb
66
+ - lib/auto_tagger/capistrano_helper.rb
67
+ - lib/auto_tagger/commander.rb
68
+ - lib/auto_tagger/recipes.rb
69
+ - lib/auto_tagger/repository.rb
70
+ - lib/auto_tagger/stage_manager.rb
71
+ - lib/auto_tagger/tag.rb
72
+ - spec/auto_tagger/auto_tagger_spec.rb
73
+ - spec/auto_tagger/capistrano_helper_spec.rb
74
+ - spec/auto_tagger/commander_spec.rb
75
+ - spec/auto_tagger/repository_spec.rb
76
+ - spec/auto_tagger/stage_manager_spec.rb
77
+ - spec/auto_tagger/tag_spec.rb
78
+ - spec/spec_helper.rb
79
+ has_rdoc: true
80
+ homepage: http://github.com/zilkey/auto_tagger
81
+ licenses: []
82
+
83
+ post_install_message:
84
+ rdoc_options:
85
+ - --charset=UTF-8
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ requirements: []
103
+
104
+ rubyforge_project:
105
+ rubygems_version: 1.3.6
106
+ signing_key:
107
+ specification_version: 3
108
+ summary: Helps you automatically create tags for each stage in a multi-stage deploment and deploy from the latest tag from the previous environment
109
+ test_files:
110
+ - spec/auto_tagger/auto_tagger_spec.rb
111
+ - spec/auto_tagger/capistrano_helper_spec.rb
112
+ - spec/auto_tagger/commander_spec.rb
113
+ - spec/auto_tagger/repository_spec.rb
114
+ - spec/auto_tagger/stage_manager_spec.rb
115
+ - spec/auto_tagger/tag_spec.rb
116
+ - spec/spec_helper.rb