git-pivotal-tracker-centro 1.0.0.rc1
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 +6 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +3 -0
- data/CHANGELOG +54 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +82 -0
- data/LICENSE +21 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/bin/git-finish +7 -0
- data/bin/git-info +7 -0
- data/bin/git-start +8 -0
- data/features/finish.feature +88 -0
- data/features/info.feature +99 -0
- data/features/start.feature +113 -0
- data/features/step_definitions/steps.rb +119 -0
- data/features/support/dsl/assertions.rb +11 -0
- data/features/support/dsl/data.rb +11 -0
- data/features/support/dsl/pivotal.rb +77 -0
- data/features/support/env.rb +6 -0
- data/features/support/git-pivotal.rb +68 -0
- data/features/test_repo/origin.git/COMMIT_EDITMSG +1 -0
- data/features/test_repo/origin.git/HEAD +1 -0
- data/features/test_repo/origin.git/config +8 -0
- data/features/test_repo/origin.git/description +1 -0
- data/features/test_repo/origin.git/hooks/applypatch-msg.sample +15 -0
- data/features/test_repo/origin.git/hooks/commit-msg.sample +24 -0
- data/features/test_repo/origin.git/hooks/post-commit.sample +8 -0
- data/features/test_repo/origin.git/hooks/post-receive.sample +15 -0
- data/features/test_repo/origin.git/hooks/post-update.sample +8 -0
- data/features/test_repo/origin.git/hooks/pre-applypatch.sample +14 -0
- data/features/test_repo/origin.git/hooks/pre-commit.sample +46 -0
- data/features/test_repo/origin.git/hooks/pre-rebase.sample +169 -0
- data/features/test_repo/origin.git/hooks/prepare-commit-msg.sample +36 -0
- data/features/test_repo/origin.git/hooks/update.sample +128 -0
- data/features/test_repo/origin.git/index +0 -0
- data/features/test_repo/origin.git/info/exclude +6 -0
- data/features/test_repo/origin.git/logs/HEAD +1 -0
- data/features/test_repo/origin.git/logs/refs/heads/master +1 -0
- data/features/test_repo/origin.git/objects/0c/6f7b1384910d1a2f137590095f008a06c7e00c +0 -0
- data/features/test_repo/origin.git/objects/10/ecf2b7ce989f01f3f7266e712b48d9275f2635 +0 -0
- data/features/test_repo/origin.git/objects/a5/71d56305df09fb060f6ccb730b46080d305beb +0 -0
- data/features/test_repo/origin.git/refs/heads/master +1 -0
- data/features/test_repo/readme +1 -0
- data/git-pivotal-tracker-centro.gemspec +29 -0
- data/lib/commands/base.rb +120 -0
- data/lib/commands/bug.rb +19 -0
- data/lib/commands/card.rb +32 -0
- data/lib/commands/chore.rb +19 -0
- data/lib/commands/feature.rb +19 -0
- data/lib/commands/finish.rb +67 -0
- data/lib/commands/info.rb +58 -0
- data/lib/commands/map.rb +10 -0
- data/lib/commands/pick.rb +94 -0
- data/lib/commands/start.rb +39 -0
- data/lib/git-pivotal-tracker.rb +11 -0
- data/readme.markdown +106 -0
- data/spec/commands/base_spec.rb +137 -0
- data/spec/commands/bug_spec.rb +24 -0
- data/spec/commands/chore_spec.rb +24 -0
- data/spec/commands/feature_spec.rb +24 -0
- data/spec/commands/finish_spec.rb +134 -0
- data/spec/commands/map_spec.rb +14 -0
- data/spec/commands/start_spec.rb +28 -0
- data/spec/factories.rb +13 -0
- data/spec/factory.rb +26 -0
- data/spec/spec_helper.rb +24 -0
- metadata +291 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3
|
data/.travis.yml
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
v 0.9.2
|
2
|
+
- verbose is now the default, you can turn it off in your git configuration (pivotal.verbose) or via the --no-verbose command line option
|
3
|
+
|
4
|
+
v 0.9.1
|
5
|
+
- updating git-accept to work with cards that already accepted in Pivotal
|
6
|
+
|
7
|
+
v 0.9.0
|
8
|
+
- first release of new command set: accept, block, finish, info, start, unblock
|
9
|
+
|
10
|
+
v 0.8.1
|
11
|
+
- Improve error reporting when interacting with PivotalTracker
|
12
|
+
- Add SSL project support [bunnymatic (Mr Rogers)]
|
13
|
+
- Improve method of collecting story ID from branch name
|
14
|
+
|
15
|
+
v 0.8.0
|
16
|
+
- Drop home-rolled PivotalTracker API for pivotal-tracker gem
|
17
|
+
- Add Gemfile for easier development
|
18
|
+
- Add better test suite with Cucumber and Aruba
|
19
|
+
- Add option for appending the branch name (rather than prepending) [Addy
|
20
|
+
Naik]
|
21
|
+
- Add new `git info` command [Addy Naik]
|
22
|
+
|
23
|
+
v 0.2.3
|
24
|
+
- Allow the developer to specify the integration branch for git finish [Graeme Mathieson]
|
25
|
+
- Fixed bug which prevented chores from finishing successfully [Joshua Vial]
|
26
|
+
- Added option to allow only pickup items already assigned to you [Mark Butcher]
|
27
|
+
- Fix RestClient version issues
|
28
|
+
|
29
|
+
v 0.2.2
|
30
|
+
- Added git chore command
|
31
|
+
|
32
|
+
v 0.2.1
|
33
|
+
- Remove &:to_s shortcut for MRI 1.8.6 compatibility
|
34
|
+
- Updated to handle RestClient 1.4
|
35
|
+
|
36
|
+
v 0.2.0
|
37
|
+
- Added git feature and git bug commands
|
38
|
+
- Deprecated git feature
|
39
|
+
- Improved XPath reliability for Pivotal API requests [Sam Stokes]
|
40
|
+
|
41
|
+
v 0.1.3
|
42
|
+
- Fixed bug preventing command line args from being properly interpretted
|
43
|
+
|
44
|
+
v 0.1.2
|
45
|
+
- Fixed bug introduced in v 0.1.1 which prevented git pick from completing
|
46
|
+
|
47
|
+
v 0.1.1
|
48
|
+
- Updated git pick to tell Pivotal who owns the picked feature
|
49
|
+
- Improved Pivotal Tracker framework write ability
|
50
|
+
|
51
|
+
v 0.1.0
|
52
|
+
- Initial release
|
53
|
+
- Basic framework for reading from Pivotal Tracker
|
54
|
+
- git pick utility
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
git-pivotal-tracker-centro (1.0.0.rc1)
|
5
|
+
pivotal-tracker
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
aruba (0.4.11)
|
11
|
+
childprocess (>= 0.2.3)
|
12
|
+
cucumber (>= 1.1.1)
|
13
|
+
ffi (>= 1.0.11)
|
14
|
+
rspec (>= 2.7.0)
|
15
|
+
builder (3.0.0)
|
16
|
+
childprocess (0.3.1)
|
17
|
+
ffi (~> 1.0.6)
|
18
|
+
coderay (1.0.5)
|
19
|
+
cucumber (1.1.9)
|
20
|
+
builder (>= 2.1.2)
|
21
|
+
diff-lcs (>= 1.1.2)
|
22
|
+
gherkin (~> 2.9.0)
|
23
|
+
json (>= 1.4.6)
|
24
|
+
term-ansicolor (>= 1.0.6)
|
25
|
+
diff-lcs (1.1.3)
|
26
|
+
ffi (1.0.11)
|
27
|
+
gherkin (2.9.3)
|
28
|
+
json (>= 1.4.6)
|
29
|
+
happymapper (0.4.0)
|
30
|
+
libxml-ruby (~> 2.0)
|
31
|
+
json (1.6.6)
|
32
|
+
libxml-ruby (2.3.3)
|
33
|
+
metaclass (0.0.1)
|
34
|
+
method_source (0.7.1)
|
35
|
+
mime-types (1.19)
|
36
|
+
mocha (0.10.5)
|
37
|
+
metaclass (~> 0.0.1)
|
38
|
+
multi_json (1.2.0)
|
39
|
+
nokogiri (1.5.5)
|
40
|
+
pivotal-tracker (0.5.8)
|
41
|
+
builder
|
42
|
+
builder
|
43
|
+
happymapper (>= 0.3.2)
|
44
|
+
happymapper (>= 0.3.2)
|
45
|
+
nokogiri (>= 1.4.3)
|
46
|
+
nokogiri (~> 1.4)
|
47
|
+
rest-client (~> 1.6.0)
|
48
|
+
rest-client (~> 1.6.0)
|
49
|
+
pry (0.9.8.4)
|
50
|
+
coderay (~> 1.0.5)
|
51
|
+
method_source (~> 0.7.1)
|
52
|
+
slop (>= 2.4.4, < 3)
|
53
|
+
rake (0.9.2.2)
|
54
|
+
rest-client (1.6.7)
|
55
|
+
mime-types (>= 1.16)
|
56
|
+
rspec (2.9.0)
|
57
|
+
rspec-core (~> 2.9.0)
|
58
|
+
rspec-expectations (~> 2.9.0)
|
59
|
+
rspec-mocks (~> 2.9.0)
|
60
|
+
rspec-core (2.9.0)
|
61
|
+
rspec-expectations (2.9.0)
|
62
|
+
diff-lcs (~> 1.1.3)
|
63
|
+
rspec-mocks (2.9.0)
|
64
|
+
simplecov (0.6.1)
|
65
|
+
multi_json (~> 1.0)
|
66
|
+
simplecov-html (~> 0.5.3)
|
67
|
+
simplecov-html (0.5.3)
|
68
|
+
slop (2.4.4)
|
69
|
+
term-ansicolor (1.0.7)
|
70
|
+
|
71
|
+
PLATFORMS
|
72
|
+
ruby
|
73
|
+
|
74
|
+
DEPENDENCIES
|
75
|
+
aruba
|
76
|
+
cucumber
|
77
|
+
git-pivotal-tracker-centro!
|
78
|
+
mocha
|
79
|
+
pry
|
80
|
+
rake
|
81
|
+
rspec
|
82
|
+
simplecov
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2012 John Wood
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
# Set up a test Pivotal project for the Cucumber tests to use
|
5
|
+
ENV['PIVOTAL_API_KEY'] = "81f09c932c8bfd2b028ec5e52ec7cf47" # your API key
|
6
|
+
ENV['PIVOTAL_TEST_PROJECT'] = "681077" # your test project ID (123456)
|
7
|
+
ENV['PIVOTAL_USER'] = "John Wood" # Your user name (Joe Smith)
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift('lib')
|
10
|
+
|
11
|
+
task :default => [:spec, :features]
|
12
|
+
|
13
|
+
task :spec do
|
14
|
+
begin
|
15
|
+
require 'rspec/core/rake_task'
|
16
|
+
RSpec::Core::RakeTask.new do |t|
|
17
|
+
t.rspec_opts = ['--color']
|
18
|
+
end
|
19
|
+
rescue LoadError => e
|
20
|
+
puts "RSpec not installed"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
task :features do
|
25
|
+
begin
|
26
|
+
require 'cucumber/rake/task'
|
27
|
+
|
28
|
+
if [ENV['PIVOTAL_API_KEY'], ENV['PIVOTAL_TEST_PROJECT'], ENV['PIVOTAL_USER']].any? { |x| x.nil? || x.empty? }
|
29
|
+
raise "ERROR: API key, test project, and user must be set in the Rakefile for the Cucumber tests to run"
|
30
|
+
end
|
31
|
+
|
32
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
33
|
+
t.cucumber_opts = "features --format pretty"
|
34
|
+
end
|
35
|
+
rescue LoadError => e
|
36
|
+
puts "Cucumber not installed"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
task :install do
|
41
|
+
puts "Uninstalling..."
|
42
|
+
system "gem uninstall -x git-pivotal-tracker-centro"
|
43
|
+
|
44
|
+
puts "Building..."
|
45
|
+
system "gem build git-pivotal-tracker-centro.gemspec"
|
46
|
+
|
47
|
+
puts "Installing..."
|
48
|
+
system "gem install git-pivotal-tracker-centro-#{IO.read("VERSION")}"
|
49
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0.rc1
|
data/bin/git-finish
ADDED
data/bin/git-info
ADDED
data/bin/git-start
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
Feature: git finish
|
2
|
+
|
3
|
+
In order to finish the card for the current topic branch you can issue the following
|
4
|
+
commands:
|
5
|
+
|
6
|
+
git finish
|
7
|
+
git finish <options>
|
8
|
+
|
9
|
+
Supported options:
|
10
|
+
-k <api_key> - specify the Pivotal API key to use. Overrides configuration.
|
11
|
+
-p <project_id> - specify the Pivotal project id to use. Overrides configuration.
|
12
|
+
|
13
|
+
This will do the following:
|
14
|
+
* switch to the master branch
|
15
|
+
* delete the local branch
|
16
|
+
* delete the remote branch
|
17
|
+
* mark the card as finished in Pivotal
|
18
|
+
|
19
|
+
Background:
|
20
|
+
Given I have a started Pivotal Tracker feature
|
21
|
+
And I am on the "CURRENT_CARD-feature" branch
|
22
|
+
|
23
|
+
Scenario: Executing with no settings
|
24
|
+
When I run `git-finish --force`
|
25
|
+
Then the output should contain each line:
|
26
|
+
"""
|
27
|
+
Pivotal Tracker API Token and Project ID are required
|
28
|
+
"""
|
29
|
+
And the exit status should be 1
|
30
|
+
|
31
|
+
Scenario: Executing with inline settings
|
32
|
+
When I run `git-finish -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT --force`
|
33
|
+
Then the output should contain each line:
|
34
|
+
"""
|
35
|
+
Switching to master
|
36
|
+
Destroying local branch
|
37
|
+
Destroying remote branch
|
38
|
+
Marking Story CURRENT_CARD as finished...
|
39
|
+
"""
|
40
|
+
And I should be on the "master" branch
|
41
|
+
|
42
|
+
Scenario: Executing with git configuration
|
43
|
+
Given a file named ".gitconfig" with:
|
44
|
+
"""
|
45
|
+
[pivotal]
|
46
|
+
api-token = PIVOTAL_API_KEY
|
47
|
+
full-name = PIVOTAL_USER
|
48
|
+
project-id = PIVOTAL_TEST_PROJECT
|
49
|
+
"""
|
50
|
+
When I run `git-finish -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT --force`
|
51
|
+
Then the output should contain each line:
|
52
|
+
"""
|
53
|
+
Switching to master
|
54
|
+
Destroying local branch
|
55
|
+
Destroying remote branch
|
56
|
+
Marking Story CURRENT_CARD as finished...
|
57
|
+
"""
|
58
|
+
And I should be on the "master" branch
|
59
|
+
|
60
|
+
Scenario: Executing from a misnamed branch
|
61
|
+
Given I am on the "missing-an-id" branch
|
62
|
+
When I run `git-finish -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT --force`
|
63
|
+
Then the output should contain each line:
|
64
|
+
"""
|
65
|
+
Branch name must contain a Pivotal Tracker story id
|
66
|
+
"""
|
67
|
+
And the exit status should be 1
|
68
|
+
|
69
|
+
Scenario: Closing chore stories
|
70
|
+
Given I have a started Pivotal Tracker chore
|
71
|
+
And I am on the "CURRENT_CARD-chore" branch
|
72
|
+
And a file named ".gitconfig" with:
|
73
|
+
"""
|
74
|
+
[pivotal]
|
75
|
+
api-token = PIVOTAL_API_KEY
|
76
|
+
full-name = PIVOTAL_USER
|
77
|
+
project-id = PIVOTAL_TEST_PROJECT
|
78
|
+
"""
|
79
|
+
When I run `git-finish -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT --force`
|
80
|
+
Then the output should contain each line:
|
81
|
+
"""
|
82
|
+
Switching to master
|
83
|
+
Destroying local branch
|
84
|
+
Destroying remote branch
|
85
|
+
Marking Story CURRENT_CARD as finished...
|
86
|
+
"""
|
87
|
+
And I should be on the "master" branch
|
88
|
+
|
@@ -0,0 +1,99 @@
|
|
1
|
+
Feature: git info
|
2
|
+
|
3
|
+
In order to get information about a specific card you can issue one of the following
|
4
|
+
commands:
|
5
|
+
|
6
|
+
git info
|
7
|
+
git info <options>
|
8
|
+
git info <card_id>
|
9
|
+
git info <card_id> <options>
|
10
|
+
|
11
|
+
Supported options:
|
12
|
+
--comments - displays comments for the card
|
13
|
+
-k <api_key> - specify the Pivotal API key to use. Overrides configuration.
|
14
|
+
-p <project_id> - specify the Pivotal project id to use. Overrides configuration.
|
15
|
+
-D - do not prompt for user input, use recommended values by default.
|
16
|
+
|
17
|
+
Background:
|
18
|
+
Given I have a Pivotal Tracker feature named "Test Story" with description "This is the description!"
|
19
|
+
And I am on the "CURRENT_CARD-feature" branch
|
20
|
+
|
21
|
+
Scenario: Executing with no settings
|
22
|
+
When I run `git-info`
|
23
|
+
Then the output should contain each line:
|
24
|
+
"""
|
25
|
+
Pivotal Tracker API Token and Project ID are required
|
26
|
+
"""
|
27
|
+
And the exit status should be 1
|
28
|
+
|
29
|
+
Scenario: Grabbing info about current topic branch
|
30
|
+
Given I have configured the Git repos for Pivotal
|
31
|
+
When I run `git-info`
|
32
|
+
Then the output should contain each line:
|
33
|
+
"""
|
34
|
+
Story: Test Story
|
35
|
+
URL: http://www.pivotaltracker.com/story/show/CURRENT_CARD
|
36
|
+
State: not accepted
|
37
|
+
Description:
|
38
|
+
This is the description!
|
39
|
+
"""
|
40
|
+
|
41
|
+
Scenario: Supplying Pivotal configuration via command line arguments
|
42
|
+
When I run `git-info -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT -n "PIVOTAL_USER" -D`
|
43
|
+
Then the output should contain each line:
|
44
|
+
"""
|
45
|
+
Story: Test Story
|
46
|
+
URL: http://www.pivotaltracker.com/story/show/CURRENT_CARD
|
47
|
+
State: not accepted
|
48
|
+
Description:
|
49
|
+
This is the description!
|
50
|
+
"""
|
51
|
+
|
52
|
+
Scenario: Grabbing info about a specific card in question topic branch
|
53
|
+
Given I have a Pivotal Tracker chore named "Test Chore" with description "The chore description!"
|
54
|
+
And I have configured the Git repos for Pivotal
|
55
|
+
When I run `git-info CURRENT_CARD`
|
56
|
+
Then the output should contain each line:
|
57
|
+
"""
|
58
|
+
Story: Test Chore
|
59
|
+
URL: http://www.pivotaltracker.com/story/show/CURRENT_CARD
|
60
|
+
State: not accepted
|
61
|
+
Description:
|
62
|
+
The chore description!
|
63
|
+
"""
|
64
|
+
|
65
|
+
Scenario: Grabbing info when the card has labels
|
66
|
+
Given I have a Pivotal Tracker chore named "Test Chore" with description "The chore description!"
|
67
|
+
And the chore is labeled "foo, bar, baz"
|
68
|
+
And I have configured the Git repos for Pivotal
|
69
|
+
When I run `git-info CURRENT_CARD`
|
70
|
+
Then the output should contain each line:
|
71
|
+
"""
|
72
|
+
Story: Test Chore
|
73
|
+
URL: http://www.pivotaltracker.com/story/show/CURRENT_CARD
|
74
|
+
Labels: bar, baz, foo
|
75
|
+
State: not accepted
|
76
|
+
Description:
|
77
|
+
The chore description!
|
78
|
+
"""
|
79
|
+
|
80
|
+
Scenario: Requesting comments on a card using --comments
|
81
|
+
Given I have a Pivotal Tracker chore named "Test Chore" with description "The chore description!"
|
82
|
+
And the "PIVOTAL_USER" commented on the card "Well, this looks mighty fine!"
|
83
|
+
And I have configured the Git repos for Pivotal
|
84
|
+
When I run `git-info CURRENT_CARD --comments`
|
85
|
+
Then the output should contain "Comments:"
|
86
|
+
And the output should contain "Well, this looks mighty fine!"
|
87
|
+
And the output should contain "PIVOTAL_USER"
|
88
|
+
|
89
|
+
Scenario: Grabbing info when not on a topic branch and not supplying a card id
|
90
|
+
Given I have configured the Git repos for Pivotal
|
91
|
+
And I am on the "foo" branch
|
92
|
+
Then I should be on the "foo" branch
|
93
|
+
When I run `git-info`
|
94
|
+
Then the output should contain each line:
|
95
|
+
"""
|
96
|
+
No story id was supplied and you aren't on a topic branch!
|
97
|
+
"""
|
98
|
+
|
99
|
+
|
@@ -0,0 +1,113 @@
|
|
1
|
+
Feature: git start
|
2
|
+
|
3
|
+
In order to start the next available card in the project you can issue the following
|
4
|
+
commands:
|
5
|
+
|
6
|
+
git start <options>
|
7
|
+
git start <card_type> <options>
|
8
|
+
|
9
|
+
Supported options:
|
10
|
+
-k <api_key> - specify the Pivotal API key to use. Overrides configuration.
|
11
|
+
-p <project_id> - specify the Pivotal project id to use. Overrides configuration.
|
12
|
+
-D - do not prompt for user input, use recommended values by default.
|
13
|
+
|
14
|
+
This will check out a topic branch for the card and place you on it.
|
15
|
+
|
16
|
+
Scenario Outline: Executing with no settings
|
17
|
+
When I run `<command>`
|
18
|
+
Then the output should contain each line:
|
19
|
+
"""
|
20
|
+
Pivotal Tracker API Token and Project ID are required
|
21
|
+
"""
|
22
|
+
And the exit status should be 1
|
23
|
+
|
24
|
+
Examples:
|
25
|
+
| command |
|
26
|
+
| git-start bug |
|
27
|
+
| git-start chore |
|
28
|
+
| git-start feature |
|
29
|
+
|
30
|
+
Scenario: Starting the next feature when it is unestimated
|
31
|
+
Given I have an unestimated Pivotal Tracker feature
|
32
|
+
And I have configured the Git repos for Pivotal
|
33
|
+
When I run `git-start feature -D --force`
|
34
|
+
Then the output should contain each line:
|
35
|
+
"""
|
36
|
+
Stories in the started state must be estimated.
|
37
|
+
"""
|
38
|
+
And the exit status should be 1
|
39
|
+
|
40
|
+
# Assumption: that chores can be started without being estimated in Pivotal
|
41
|
+
Scenario: Starting the next chore when it is unestimated
|
42
|
+
Given I have an unestimated Pivotal Tracker chore
|
43
|
+
And I have configured the Git repos for Pivotal
|
44
|
+
When I run `git-start chore -D --force`
|
45
|
+
Then the output should contain "Switched to a new branch 'CURRENT_CARD-a-chore'"
|
46
|
+
And I should be on the "CURRENT_CARD-a-chore" branch
|
47
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
48
|
+
|
49
|
+
# Assumption: that estimating bugs in Pivotal is turned off
|
50
|
+
Scenario: Starting the next bug when it is unestimated
|
51
|
+
Given I have an unestimated Pivotal Tracker bug
|
52
|
+
And I have configured the Git repos for Pivotal
|
53
|
+
When I run `git-start bug -D --force`
|
54
|
+
Then the output should contain "Switched to a new branch 'CURRENT_CARD-a-bug'"
|
55
|
+
And I should be on the "CURRENT_CARD-a-bug" branch
|
56
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
57
|
+
|
58
|
+
Scenario Outline: Starting the next estimated card interactively (without -D option)
|
59
|
+
Given I have a Pivotal Tracker <card_type>
|
60
|
+
And I have configured the Git repos for Pivotal
|
61
|
+
When I run `git-start <card_type> --force` interactively
|
62
|
+
And I type "a_purple_<card_type>"
|
63
|
+
Then the output should contain "Switched to a new branch 'a_purple_<card_type>'"
|
64
|
+
And I should be on the "a_purple_<card_type>" branch
|
65
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
66
|
+
|
67
|
+
Examples:
|
68
|
+
| card_type |
|
69
|
+
| bug |
|
70
|
+
| chore |
|
71
|
+
| feature |
|
72
|
+
|
73
|
+
Scenario Outline: Starting the next estimated card using configured defaults (with -D option)
|
74
|
+
Given I have a Pivotal Tracker <card_type>
|
75
|
+
And I have configured the Git repos for Pivotal
|
76
|
+
When I run `git-start <card_type> -D --force`
|
77
|
+
Then the output should contain "Switched to a new branch 'CURRENT_CARD-a-<card_type>'"
|
78
|
+
And I should be on the "CURRENT_CARD-a-<card_type>" branch
|
79
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
80
|
+
|
81
|
+
Examples:
|
82
|
+
| card_type | branch_suffix |
|
83
|
+
| bug | fix |
|
84
|
+
| chore | |
|
85
|
+
| feature | |
|
86
|
+
|
87
|
+
Scenario Outline: Starting a specific card
|
88
|
+
Given I have a Pivotal Tracker <card_type>
|
89
|
+
And I have configured the Git repos for Pivotal
|
90
|
+
When I run `git-start CURRENT_CARD -D --force`
|
91
|
+
Then the output should contain "Switched to a new branch 'CURRENT_CARD-a-<card_type>'"
|
92
|
+
And I should be on the "CURRENT_CARD-a-<card_type>" branch
|
93
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
94
|
+
|
95
|
+
Examples:
|
96
|
+
| card_type | branch_suffix |
|
97
|
+
| bug | fix |
|
98
|
+
| chore | |
|
99
|
+
| feature | |
|
100
|
+
|
101
|
+
Scenario Outline: Supplying Pivotal configuration via command line arguments
|
102
|
+
Given I have a Pivotal Tracker <card_type>
|
103
|
+
And I have configured the Git repos for Pivotal with bogus information
|
104
|
+
When I run `git-start <card_type> -k PIVOTAL_API_KEY -p PIVOTAL_TEST_PROJECT -n "PIVOTAL_USER" -D --force`
|
105
|
+
Then the output should contain "Switched to a new branch 'CURRENT_CARD-a-<card_type>'"
|
106
|
+
And I should be on the "CURRENT_CARD-a-<card_type>" branch
|
107
|
+
And card CURRENT_CARD is marked is started in Pivotal Tracker
|
108
|
+
|
109
|
+
Examples:
|
110
|
+
| card_type | branch_suffix |
|
111
|
+
| bug | fix |
|
112
|
+
| chore | |
|
113
|
+
| feature | |
|
@@ -0,0 +1,119 @@
|
|
1
|
+
STORY_TYPE = /feature|bug|chore|release/
|
2
|
+
STORY_STATE = /unscheduled|unstarted|started|finished|delivered|accepted|rejected/
|
3
|
+
|
4
|
+
Transform /PIVOTAL|CURRENT/ do |placeholder|
|
5
|
+
placeholder.
|
6
|
+
gsub("PIVOTAL_API_KEY", ENV['PIVOTAL_API_KEY']).
|
7
|
+
gsub("PIVOTAL_TEST_PROJECT", ENV['PIVOTAL_TEST_PROJECT']).
|
8
|
+
gsub("PIVOTAL_USER", ENV['PIVOTAL_USER']).
|
9
|
+
gsub("CURRENT_CARD", current_card.id.to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
Given "I debug" do
|
13
|
+
require 'pry'
|
14
|
+
binding.pry
|
15
|
+
end
|
16
|
+
|
17
|
+
Given /^I have configured the Git repos for Pivotal$/ do
|
18
|
+
step %|a file named ".gitconfig" with:|, <<-EOT.gsub!(/^\s+\S/, '')
|
19
|
+
|[pivotal]
|
20
|
+
| api-token = PIVOTAL_API_KEY
|
21
|
+
| full-name = PIVOTAL_USER
|
22
|
+
| project-id = PIVOTAL_TEST_PROJECT
|
23
|
+
| verbose = false
|
24
|
+
EOT
|
25
|
+
end
|
26
|
+
|
27
|
+
Given /^I have configured the Git repos for Pivotal with bogus information$/ do
|
28
|
+
step %|a file named ".gitconfig" with:|, <<-EOT.gsub!(/^\s+\S/, '')
|
29
|
+
|[pivotal]
|
30
|
+
| api-token = badtoken
|
31
|
+
| full-name = Bad Joe
|
32
|
+
| project-id = something
|
33
|
+
| remote = origin
|
34
|
+
| verbose = false
|
35
|
+
EOT
|
36
|
+
end
|
37
|
+
|
38
|
+
Given /^the "([^"]+)" commented on the card "([^"]+)"$/ do |author, text|
|
39
|
+
comment_on_story :author => author, :text => text
|
40
|
+
end
|
41
|
+
|
42
|
+
Given /^the (#{STORY_TYPE}|card) is labeled "([^"]+)"$/ do |type, labels|
|
43
|
+
update_test_story :labels => labels
|
44
|
+
end
|
45
|
+
|
46
|
+
Given /^I have a(?:n)? (#{STORY_STATE})?\s?Pivotal Tracker (#{STORY_TYPE})$/ do |status, type|
|
47
|
+
options = {}
|
48
|
+
options[:current_state] = status if status
|
49
|
+
create_test_story type, options
|
50
|
+
end
|
51
|
+
|
52
|
+
Given /^I have a(?:n)? unestimated \s?Pivotal Tracker (#{STORY_TYPE})$/ do |type|
|
53
|
+
options = { :estimate => -1 }
|
54
|
+
create_test_story type, options
|
55
|
+
end
|
56
|
+
|
57
|
+
Given /^I have a(?:n)? (#{STORY_STATE})?\s?Pivotal Tracker (#{STORY_TYPE}) named "([^"]+)" with description "([^"]+)"$/ do |status, type, name, description|
|
58
|
+
options = { :name => name, :description => description }
|
59
|
+
options[:current_state] = status if status
|
60
|
+
create_test_story type, options
|
61
|
+
end
|
62
|
+
|
63
|
+
Given /the card is a (#{STORY_TYPE})/ do |type|
|
64
|
+
update_test_story :story_type => type
|
65
|
+
end
|
66
|
+
|
67
|
+
Given /the (#{STORY_TYPE}) is unestimated/ do |type|
|
68
|
+
update_test_story :estimate => -1
|
69
|
+
end
|
70
|
+
|
71
|
+
Given /the (#{STORY_TYPE}) is (#{STORY_STATE})/ do |type, state|
|
72
|
+
update_test_story :current_state => state
|
73
|
+
end
|
74
|
+
|
75
|
+
Given /^I am on the "([^"]*)" branch$/ do |branch|
|
76
|
+
`git checkout -b #{branch} > /dev/null 2>&1`
|
77
|
+
end
|
78
|
+
|
79
|
+
Given /^I have a "([^"]*)" branch$/ do |branch|
|
80
|
+
`git branch #{branch} > /dev/null 2>&1`
|
81
|
+
end
|
82
|
+
|
83
|
+
When /^the current card is refreshed$/ do
|
84
|
+
refresh_current_card!
|
85
|
+
end
|
86
|
+
|
87
|
+
Then /^the card CURRENT_CARD should (not )?have the "([^"]*)" label$/ do |negate, label|
|
88
|
+
if negate
|
89
|
+
current_card.labels.to_s.should_not include(label)
|
90
|
+
else
|
91
|
+
current_card.labels.to_s.should include(label)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
Then /^the card CURRENT_CARD should have the comment by "([^"]*)":$/ do |author, str|
|
96
|
+
current_card.notes.all.last.tap do |note|
|
97
|
+
note.author.should eq(author)
|
98
|
+
note.text.should include(str)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
Then /^the card CURRENT_CARD should not have the comment:$/ do |str|
|
103
|
+
current_card.notes.all.detect{ |n| n.text.include?(str) }.should be_nil
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
Then /^I should be on the "([^"]*)" branch$/ do |branch|
|
108
|
+
current_branch.should == branch
|
109
|
+
end
|
110
|
+
|
111
|
+
Then /^card (CURRENT_\w+) is marked is started in Pivotal Tracker$/ do |card_id|
|
112
|
+
assert_card_is_started(card_id)
|
113
|
+
end
|
114
|
+
|
115
|
+
Then /^the output should contain each line:$/ do |str|
|
116
|
+
str.split("\n").each do |line|
|
117
|
+
assert_partial_output(line, all_output)
|
118
|
+
end
|
119
|
+
end
|