crab 0.2.7 → 0.2.8
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/README.md +0 -1
- data/bin/crab +27 -14
- data/bin/crab-help +10 -2
- data/bin/crab-it +25 -11
- data/bin/crab-it-help +11 -2
- data/bin/crab-it-list +25 -15
- data/bin/crab-iteration +25 -11
- data/bin/crab-iteration-help +11 -2
- data/bin/crab-iteration-list +25 -15
- data/bin/crab-login +24 -13
- data/bin/crab-logout +22 -9
- data/bin/crab-project +42 -32
- data/bin/crab-rel +25 -11
- data/bin/crab-rel-help +12 -3
- data/bin/crab-rel-list +23 -15
- data/bin/crab-release +25 -11
- data/bin/crab-release-help +12 -3
- data/bin/crab-release-list +23 -15
- data/bin/crab-st +24 -11
- data/bin/crab-st-add +18 -10
- data/bin/crab-st-change +53 -39
- data/bin/crab-st-create +18 -10
- data/bin/crab-st-del +19 -11
- data/bin/crab-st-delete +19 -11
- data/bin/crab-st-find +32 -21
- data/bin/crab-st-help +11 -2
- data/bin/crab-st-list +32 -21
- data/bin/crab-st-ls +32 -21
- data/bin/crab-st-move +26 -14
- data/bin/crab-st-mv +26 -14
- data/bin/crab-st-new +18 -10
- data/bin/crab-st-pull +28 -20
- data/bin/crab-st-ren +26 -14
- data/bin/crab-st-rename +26 -14
- data/bin/crab-st-rm +19 -11
- data/bin/crab-st-show +19 -11
- data/bin/crab-st-up +53 -39
- data/bin/crab-st-update +53 -39
- data/bin/crab-story +24 -11
- data/bin/crab-story-add +18 -10
- data/bin/crab-story-change +53 -39
- data/bin/crab-story-create +18 -10
- data/bin/crab-story-del +19 -11
- data/bin/crab-story-delete +19 -11
- data/bin/crab-story-diff +54 -0
- data/bin/crab-story-find +32 -21
- data/bin/crab-story-help +11 -2
- data/bin/crab-story-list +32 -21
- data/bin/crab-story-ls +32 -21
- data/bin/crab-story-move +26 -14
- data/bin/crab-story-mv +26 -14
- data/bin/crab-story-new +18 -10
- data/bin/crab-story-pull +28 -20
- data/bin/crab-story-ren +26 -14
- data/bin/crab-story-rename +26 -14
- data/bin/crab-story-rm +19 -11
- data/bin/crab-story-show +19 -11
- data/bin/crab-story-up +53 -39
- data/bin/crab-story-update +53 -39
- data/bin/crab-tc +24 -11
- data/bin/crab-tc-add +32 -20
- data/bin/crab-tc-change +18 -8
- data/bin/crab-tc-create +32 -20
- data/bin/crab-tc-del +18 -10
- data/bin/crab-tc-delete +18 -10
- data/bin/crab-tc-find +32 -21
- data/bin/crab-tc-help +11 -2
- data/bin/crab-tc-list +32 -21
- data/bin/crab-tc-ls +32 -21
- data/bin/crab-tc-new +32 -20
- data/bin/crab-tc-rm +18 -10
- data/bin/crab-tc-show +28 -15
- data/bin/crab-tc-up +18 -8
- data/bin/crab-tc-update +18 -8
- data/bin/crab-testcase +24 -11
- data/bin/crab-testcase-add +32 -20
- data/bin/crab-testcase-change +18 -8
- data/bin/crab-testcase-create +32 -20
- data/bin/crab-testcase-del +18 -10
- data/bin/crab-testcase-delete +18 -10
- data/bin/crab-testcase-find +32 -21
- data/bin/crab-testcase-help +11 -2
- data/bin/crab-testcase-list +32 -21
- data/bin/crab-testcase-ls +32 -21
- data/bin/crab-testcase-new +32 -20
- data/bin/crab-testcase-rm +18 -10
- data/bin/crab-testcase-show +28 -15
- data/bin/crab-testcase-up +18 -8
- data/bin/crab-testcase-update +18 -8
- data/bin/crab-truncate +1 -0
- data/bin/crab-version +2 -1
- data/features/subcommand-help.feature +1 -0
- data/lib/crab.rb +2 -0
- data/lib/crab/cucumber_to_rally_adapter.rb +48 -0
- data/lib/crab/rally.rb +21 -1
- data/lib/crab/utilities.rb +10 -2
- data/lib/crab/version.rb +1 -1
- metadata +7 -4
data/bin/crab-tc-show
CHANGED
@@ -1,24 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
class Crab::TestCaseShow
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
include Crab::Utilities
|
10
|
+
|
11
|
+
def run(args=ARGV)
|
12
|
+
opts = Trollop::options(args) do
|
13
|
+
banner <<-BANNER
|
6
14
|
crab testcase show: displays a testcase in Rally as a Cucumber scenario
|
7
15
|
|
8
16
|
Usage: crab testcase show <id> [options*]"
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
17
|
+
BANNER
|
18
|
+
opt :language, "Language to display Cucumber features in (ISO code)", :default => "en", :short => "-l"
|
19
|
+
opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
|
20
|
+
end
|
13
21
|
|
14
|
-
id =
|
15
|
-
unless id
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
22
|
+
id = args.shift
|
23
|
+
unless id
|
24
|
+
logger.error "Error: No test case ID provided."
|
25
|
+
system "crab-testcase-help"
|
26
|
+
exit 1
|
27
|
+
end
|
20
28
|
|
21
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
22
|
-
|
23
|
-
|
29
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
30
|
+
tc = rally.find_test_case id
|
31
|
+
puts Crab::CucumberScenario.new(opts[:language]).generate_from(tc).strip
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
24
35
|
end
|
36
|
+
|
37
|
+
Crab::TestCaseShow.run
|
data/bin/crab-tc-up
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseUpdate
|
5
6
|
|
6
|
-
|
7
|
+
class << self
|
8
|
+
include Crab::Utilities
|
9
|
+
|
10
|
+
def run(args=ARGV)
|
11
|
+
opts = add_or_update_options <<-BANNER, args
|
7
12
|
crab testcase update: update a test case in Rally
|
8
13
|
|
9
14
|
Usage: crab testcase update <id> [options*]
|
10
|
-
BANNER
|
15
|
+
BANNER
|
11
16
|
|
12
|
-
tc_id =
|
17
|
+
tc_id = args.shift
|
13
18
|
|
14
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
20
|
+
tc = rally.find_test_case(tc_id)
|
21
|
+
tc.update(sanitize_options(opts))
|
22
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
18
26
|
end
|
27
|
+
|
28
|
+
Crab::TestCaseUpdate.run
|
data/bin/crab-tc-update
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseUpdate
|
5
6
|
|
6
|
-
|
7
|
+
class << self
|
8
|
+
include Crab::Utilities
|
9
|
+
|
10
|
+
def run(args=ARGV)
|
11
|
+
opts = add_or_update_options <<-BANNER, args
|
7
12
|
crab testcase update: update a test case in Rally
|
8
13
|
|
9
14
|
Usage: crab testcase update <id> [options*]
|
10
|
-
BANNER
|
15
|
+
BANNER
|
11
16
|
|
12
|
-
tc_id =
|
17
|
+
tc_id = args.shift
|
13
18
|
|
14
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
20
|
+
tc = rally.find_test_case(tc_id)
|
21
|
+
tc.update(sanitize_options(opts))
|
22
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
18
26
|
end
|
27
|
+
|
28
|
+
Crab::TestCaseUpdate.run
|
data/bin/crab-testcase
CHANGED
@@ -1,18 +1,31 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# vim: set ft=ruby:
|
3
|
+
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseMain
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
class << self
|
8
|
+
|
9
|
+
include Crab::Utilities
|
10
|
+
|
11
|
+
def run(args=ARGV)
|
12
|
+
cmd = args.shift # get the subcommand
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
case cmd
|
15
|
+
when "-h", "--help", NilClass
|
16
|
+
system "crab-testcase-help"
|
17
|
+
exit 0
|
18
|
+
end
|
19
|
+
|
20
|
+
unless system("crab-testcase-#{cmd}", *args)
|
21
|
+
if $?.exitstatus == 127 # bash 'command not found'
|
22
|
+
logger.error "Unknown subcommand \"testcase #{cmd}\""
|
23
|
+
system "crab-testcase-help"
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
17
28
|
end
|
18
29
|
end
|
30
|
+
|
31
|
+
Crab::TestCaseMain.run
|
data/bin/crab-testcase-add
CHANGED
@@ -1,29 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseCreate
|
5
6
|
|
6
|
-
|
7
|
-
crab testcase create: add a test case to a story in Rally
|
7
|
+
class << self
|
8
8
|
|
9
|
-
|
10
|
-
BANNER
|
9
|
+
include Crab::Utilities
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
system "crab-testcase-help"
|
16
|
-
exit 1
|
17
|
-
end
|
11
|
+
def run(args=ARGV)
|
12
|
+
opts = add_or_update_options <<-BANNER, args
|
13
|
+
crab testcase create: add a test case to a story in Rally
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
15
|
+
Usage: crab testcase create <story> <name> [options*]
|
16
|
+
BANNER
|
17
|
+
|
18
|
+
story_id = args.shift
|
19
|
+
unless story_id
|
20
|
+
logger.error "Error: Story ID not provided."
|
21
|
+
system "crab-testcase-help"
|
22
|
+
exit 1
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
name = args.join(" ")
|
26
|
+
unless name
|
27
|
+
logger.error "Error: Test case name not provided."
|
28
|
+
system "crab-testcase-help"
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
|
32
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
33
|
+
tc = rally.create_test_case(story_id, name, sanitize_options(opts))
|
34
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
29
39
|
end
|
40
|
+
|
41
|
+
Crab::TestCaseCreate.run
|
data/bin/crab-testcase-change
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseUpdate
|
5
6
|
|
6
|
-
|
7
|
+
class << self
|
8
|
+
include Crab::Utilities
|
9
|
+
|
10
|
+
def run(args=ARGV)
|
11
|
+
opts = add_or_update_options <<-BANNER, args
|
7
12
|
crab testcase update: update a test case in Rally
|
8
13
|
|
9
14
|
Usage: crab testcase update <id> [options*]
|
10
|
-
BANNER
|
15
|
+
BANNER
|
11
16
|
|
12
|
-
tc_id =
|
17
|
+
tc_id = args.shift
|
13
18
|
|
14
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
20
|
+
tc = rally.find_test_case(tc_id)
|
21
|
+
tc.update(sanitize_options(opts))
|
22
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
18
26
|
end
|
27
|
+
|
28
|
+
Crab::TestCaseUpdate.run
|
data/bin/crab-testcase-create
CHANGED
@@ -1,29 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseCreate
|
5
6
|
|
6
|
-
|
7
|
-
crab testcase create: add a test case to a story in Rally
|
7
|
+
class << self
|
8
8
|
|
9
|
-
|
10
|
-
BANNER
|
9
|
+
include Crab::Utilities
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
system "crab-testcase-help"
|
16
|
-
exit 1
|
17
|
-
end
|
11
|
+
def run(args=ARGV)
|
12
|
+
opts = add_or_update_options <<-BANNER, args
|
13
|
+
crab testcase create: add a test case to a story in Rally
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
15
|
+
Usage: crab testcase create <story> <name> [options*]
|
16
|
+
BANNER
|
17
|
+
|
18
|
+
story_id = args.shift
|
19
|
+
unless story_id
|
20
|
+
logger.error "Error: Story ID not provided."
|
21
|
+
system "crab-testcase-help"
|
22
|
+
exit 1
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
name = args.join(" ")
|
26
|
+
unless name
|
27
|
+
logger.error "Error: Test case name not provided."
|
28
|
+
system "crab-testcase-help"
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
|
32
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
33
|
+
tc = rally.create_test_case(story_id, name, sanitize_options(opts))
|
34
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
29
39
|
end
|
40
|
+
|
41
|
+
Crab::TestCaseCreate.run
|
data/bin/crab-testcase-del
CHANGED
@@ -1,18 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
class Crab::TestCaseDelete
|
6
|
+
|
7
|
+
def self.run(args=ARGV)
|
8
|
+
Trollop::options(args) do
|
9
|
+
banner <<-BANNER
|
6
10
|
crab testcase delete: delete a test case in Rally
|
7
11
|
|
8
12
|
Usage: crab testcase delete <id> [options*]
|
9
|
-
BANNER
|
10
|
-
|
11
|
-
end
|
13
|
+
BANNER
|
14
|
+
opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
|
15
|
+
end
|
12
16
|
|
13
|
-
tc_id =
|
14
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
tc_id = args.shift
|
18
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
19
|
+
tc = rally.find_test_case(tc_id)
|
20
|
+
tc.delete
|
21
|
+
puts "Test case #{tc_id} deleted."
|
22
|
+
end
|
23
|
+
end
|
18
24
|
end
|
25
|
+
|
26
|
+
Crab::TestCaseDelete.run
|
data/bin/crab-testcase-delete
CHANGED
@@ -1,18 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
class Crab::TestCaseDelete
|
6
|
+
|
7
|
+
def self.run(args=ARGV)
|
8
|
+
Trollop::options(args) do
|
9
|
+
banner <<-BANNER
|
6
10
|
crab testcase delete: delete a test case in Rally
|
7
11
|
|
8
12
|
Usage: crab testcase delete <id> [options*]
|
9
|
-
BANNER
|
10
|
-
|
11
|
-
end
|
13
|
+
BANNER
|
14
|
+
opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
|
15
|
+
end
|
12
16
|
|
13
|
-
tc_id =
|
14
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
tc_id = args.shift
|
18
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
19
|
+
tc = rally.find_test_case(tc_id)
|
20
|
+
tc.delete
|
21
|
+
puts "Test case #{tc_id} deleted."
|
22
|
+
end
|
23
|
+
end
|
18
24
|
end
|
25
|
+
|
26
|
+
Crab::TestCaseDelete.run
|
data/bin/crab-testcase-find
CHANGED
@@ -1,34 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# vim: set ft=ruby :
|
2
3
|
require 'crab'
|
3
4
|
|
4
|
-
|
5
|
+
class Crab::TestCaseFind
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
class << self
|
8
|
+
|
9
|
+
include Crab::Utilities
|
10
|
+
|
11
|
+
def run(args=ARGV)
|
12
|
+
opts = Trollop::options(args) do
|
13
|
+
banner <<-BANNER
|
8
14
|
crab testcase find: find a testcase in Rally
|
9
15
|
|
10
16
|
Usage: crab testcase find [options*] [text]
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
17
|
+
BANNER
|
18
|
+
opt :project, "Project to use (required unless set by 'crab project')", :short => "-p", :type => String
|
19
|
+
opt :story, "Limit search to testcases of this story", :short => "-s", :type => String
|
20
|
+
opt :priority, "Priority (one of: #{Crab::TestCase::PRIORITIES.join(" ")}", :short => '-P', :type => String
|
21
|
+
opt :risk, "Risk (one of: #{Crab::TestCase::RISKS.join(" ")})", :short => '-r', :type => String
|
22
|
+
opt :method, "Method (one of: #{Crab::TestCase::METHODS.join(" ")})", :short => '-m', :type => String
|
23
|
+
opt :type, "Type (one of: #{Crab::TestCase::TYPES.join(" ")})", :short => '-t', :type => String
|
24
|
+
opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
|
25
|
+
end
|
20
26
|
|
21
|
-
pattern =
|
22
|
-
project_name = valid_project_name(opts)
|
27
|
+
pattern = args.map(&:strip).reject(&:empty?)
|
28
|
+
project_name = valid_project_name(opts)
|
23
29
|
|
24
|
-
Crab::Rally.new(opts[:dry]) do |rally|
|
25
|
-
|
26
|
-
|
30
|
+
Crab::Rally.new(opts[:dry]) do |rally|
|
31
|
+
project = rally.find_project(project_name)
|
32
|
+
Trollop::die "Project #{opts[:project].inspect} not found" if project.nil?
|
27
33
|
|
28
|
-
|
29
|
-
|
34
|
+
find_opts = {}
|
35
|
+
find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
|
30
36
|
|
31
|
-
|
32
|
-
|
37
|
+
rally.find_testcases(project, pattern, find_opts).each do |tc|
|
38
|
+
puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
33
42
|
end
|
34
43
|
end
|
44
|
+
|
45
|
+
Crab::TestCaseFind.run
|