crab 0.2.4 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/bin/crab-it +18 -0
  2. data/bin/crab-it-help +12 -0
  3. data/bin/crab-it-list +28 -0
  4. data/bin/crab-iteration-help +1 -0
  5. data/bin/crab-rel +18 -0
  6. data/bin/crab-rel-help +12 -0
  7. data/bin/crab-rel-list +28 -0
  8. data/bin/crab-st +18 -0
  9. data/bin/crab-st-add +19 -0
  10. data/bin/crab-st-change +62 -0
  11. data/bin/crab-st-create +19 -0
  12. data/bin/crab-st-del +21 -0
  13. data/bin/crab-st-delete +21 -0
  14. data/bin/crab-st-find +34 -0
  15. data/bin/crab-st-help +19 -0
  16. data/bin/crab-st-list +34 -0
  17. data/bin/crab-st-ls +34 -0
  18. data/bin/crab-st-move +26 -0
  19. data/bin/crab-st-mv +26 -0
  20. data/bin/crab-st-new +19 -0
  21. data/bin/crab-st-pull +37 -0
  22. data/bin/crab-st-ren +27 -0
  23. data/bin/crab-st-rename +27 -0
  24. data/bin/crab-st-rm +21 -0
  25. data/bin/crab-st-show +19 -0
  26. data/bin/crab-st-up +62 -0
  27. data/bin/crab-st-update +62 -0
  28. data/bin/crab-story-change +1 -1
  29. data/bin/crab-story-help +9 -1
  30. data/bin/crab-story-up +1 -1
  31. data/bin/crab-story-update +1 -1
  32. data/bin/crab-tc +18 -0
  33. data/bin/crab-tc-add +29 -0
  34. data/bin/crab-tc-change +18 -0
  35. data/bin/crab-tc-create +29 -0
  36. data/bin/crab-tc-del +18 -0
  37. data/bin/crab-tc-delete +18 -0
  38. data/bin/crab-tc-find +34 -0
  39. data/bin/crab-tc-help +16 -0
  40. data/bin/crab-tc-list +34 -0
  41. data/bin/crab-tc-ls +34 -0
  42. data/bin/crab-tc-new +29 -0
  43. data/bin/crab-tc-rm +18 -0
  44. data/bin/crab-tc-show +24 -0
  45. data/bin/crab-tc-up +18 -0
  46. data/bin/crab-tc-update +18 -0
  47. data/bin/crab-testcase-find +1 -5
  48. data/bin/crab-testcase-list +21 -12
  49. data/bin/crab-testcase-ls +1 -5
  50. data/lib/crab/rally.rb +14 -14
  51. data/lib/crab/version.rb +1 -1
  52. metadata +85 -3
data/bin/crab-tc-del ADDED
@@ -0,0 +1,18 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ Trollop::options do
5
+ banner <<-BANNER
6
+ crab testcase delete: delete a test case in Rally
7
+
8
+ Usage: crab testcase delete <id> [options*]
9
+ BANNER
10
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
11
+ end
12
+
13
+ tc_id = ARGV.shift
14
+ Crab::Rally.new(opts[:dry]) do |rally|
15
+ tc = rally.find_test_case(tc_id)
16
+ tc.delete
17
+ puts "Test case #{tc_id} deleted."
18
+ end
@@ -0,0 +1,18 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ Trollop::options do
5
+ banner <<-BANNER
6
+ crab testcase delete: delete a test case in Rally
7
+
8
+ Usage: crab testcase delete <id> [options*]
9
+ BANNER
10
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
11
+ end
12
+
13
+ tc_id = ARGV.shift
14
+ Crab::Rally.new(opts[:dry]) do |rally|
15
+ tc = rally.find_test_case(tc_id)
16
+ tc.delete
17
+ puts "Test case #{tc_id} deleted."
18
+ end
data/bin/crab-tc-find ADDED
@@ -0,0 +1,34 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = Trollop::options do
7
+ banner <<-BANNER
8
+ crab testcase find: find a testcase in Rally
9
+
10
+ Usage: crab testcase find [options*] [text]
11
+ BANNER
12
+ opt :project, "Project to use (required unless set by 'crab project')", :short => "-p", :type => String
13
+ opt :story, "Limit search to testcases of this story", :short => "-s", :type => String
14
+ opt :priority, "Priority (one of: #{Crab::TestCase::PRIORITIES.join(" ")}", :short => '-P', :type => String
15
+ opt :risk, "Risk (one of: #{Crab::TestCase::RISKS.join(" ")})", :short => '-r', :type => String
16
+ opt :method, "Method (one of: #{Crab::TestCase::METHODS.join(" ")})", :short => '-m', :type => String
17
+ opt :type, "Type (one of: #{Crab::TestCase::TYPES.join(" ")})", :short => '-t', :type => String
18
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
19
+ end
20
+
21
+ pattern = ARGV.map(&:strip).reject(&:empty?)
22
+ project_name = valid_project_name(opts)
23
+
24
+ Crab::Rally.new(opts[:dry]) do |rally|
25
+ project = rally.find_project(project_name)
26
+ Trollop::die "Project #{opts[:project].inspect} not found" if project.nil?
27
+
28
+ find_opts = {}
29
+ find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
30
+
31
+ rally.find_testcases(project, pattern, find_opts).each do |tc|
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
33
+ end
34
+ end
data/bin/crab-tc-help ADDED
@@ -0,0 +1,16 @@
1
+ # vim: set ft=ruby :
2
+
3
+ puts <<-HELP
4
+ Usage: crab testcase <command> [options*]
5
+
6
+ Available commands:
7
+
8
+ create Create a new test case in a story
9
+ delete Delete an existing test case
10
+ help Show this help text
11
+ list List test cases in a story
12
+ show Show a test case (and its steps) as a Cucumber scenario
13
+ update Update a test case (name, priority, testing method, etc)
14
+
15
+ --help, -h: Show this message
16
+ HELP
data/bin/crab-tc-list ADDED
@@ -0,0 +1,34 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = Trollop::options do
7
+ banner <<-BANNER
8
+ crab testcase find: find a testcase in Rally
9
+
10
+ Usage: crab testcase find [options*] [text]
11
+ BANNER
12
+ opt :project, "Project to use (required unless set by 'crab project')", :short => "-p", :type => String
13
+ opt :story, "Limit search to testcases of this story", :short => "-s", :type => String
14
+ opt :priority, "Priority (one of: #{Crab::TestCase::PRIORITIES.join(" ")}", :short => '-P', :type => String
15
+ opt :risk, "Risk (one of: #{Crab::TestCase::RISKS.join(" ")})", :short => '-r', :type => String
16
+ opt :method, "Method (one of: #{Crab::TestCase::METHODS.join(" ")})", :short => '-m', :type => String
17
+ opt :type, "Type (one of: #{Crab::TestCase::TYPES.join(" ")})", :short => '-t', :type => String
18
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
19
+ end
20
+
21
+ pattern = ARGV.map(&:strip).reject(&:empty?)
22
+ project_name = valid_project_name(opts)
23
+
24
+ Crab::Rally.new(opts[:dry]) do |rally|
25
+ project = rally.find_project(project_name)
26
+ Trollop::die "Project #{opts[:project].inspect} not found" if project.nil?
27
+
28
+ find_opts = {}
29
+ find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
30
+
31
+ rally.find_testcases(project, pattern, find_opts).each do |tc|
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
33
+ end
34
+ end
data/bin/crab-tc-ls ADDED
@@ -0,0 +1,34 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = Trollop::options do
7
+ banner <<-BANNER
8
+ crab testcase find: find a testcase in Rally
9
+
10
+ Usage: crab testcase find [options*] [text]
11
+ BANNER
12
+ opt :project, "Project to use (required unless set by 'crab project')", :short => "-p", :type => String
13
+ opt :story, "Limit search to testcases of this story", :short => "-s", :type => String
14
+ opt :priority, "Priority (one of: #{Crab::TestCase::PRIORITIES.join(" ")}", :short => '-P', :type => String
15
+ opt :risk, "Risk (one of: #{Crab::TestCase::RISKS.join(" ")})", :short => '-r', :type => String
16
+ opt :method, "Method (one of: #{Crab::TestCase::METHODS.join(" ")})", :short => '-m', :type => String
17
+ opt :type, "Type (one of: #{Crab::TestCase::TYPES.join(" ")})", :short => '-t', :type => String
18
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
19
+ end
20
+
21
+ pattern = ARGV.map(&:strip).reject(&:empty?)
22
+ project_name = valid_project_name(opts)
23
+
24
+ Crab::Rally.new(opts[:dry]) do |rally|
25
+ project = rally.find_project(project_name)
26
+ Trollop::die "Project #{opts[:project].inspect} not found" if project.nil?
27
+
28
+ find_opts = {}
29
+ find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
30
+
31
+ rally.find_testcases(project, pattern, find_opts).each do |tc|
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
33
+ end
34
+ end
data/bin/crab-tc-new ADDED
@@ -0,0 +1,29 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = add_or_update_options <<-BANNER
7
+ crab testcase create: add a test case to a story in Rally
8
+
9
+ Usage: crab testcase create <story> <name> [options*]
10
+ BANNER
11
+
12
+ story_id = ARGV.shift
13
+ unless story_id
14
+ $stderr.puts "Error: Story ID not provided."
15
+ system "crab-testcase-help"
16
+ exit 1
17
+ end
18
+
19
+ name = ARGV.join(" ")
20
+ unless name
21
+ $stderr.puts "Error: Test case name not provided."
22
+ system "crab-testcase-help"
23
+ exit 1
24
+ end
25
+
26
+ Crab::Rally.new(opts[:dry]) do |rally|
27
+ tc = rally.create_test_case(story_id, name, sanitize_options(opts))
28
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
29
+ end
data/bin/crab-tc-rm ADDED
@@ -0,0 +1,18 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ Trollop::options do
5
+ banner <<-BANNER
6
+ crab testcase delete: delete a test case in Rally
7
+
8
+ Usage: crab testcase delete <id> [options*]
9
+ BANNER
10
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
11
+ end
12
+
13
+ tc_id = ARGV.shift
14
+ Crab::Rally.new(opts[:dry]) do |rally|
15
+ tc = rally.find_test_case(tc_id)
16
+ tc.delete
17
+ puts "Test case #{tc_id} deleted."
18
+ end
data/bin/crab-tc-show ADDED
@@ -0,0 +1,24 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ opts = Trollop::options do
5
+ banner <<-BANNER
6
+ crab testcase show: displays a testcase in Rally as a Cucumber scenario
7
+
8
+ Usage: crab testcase show <id> [options*]"
9
+ BANNER
10
+ opt :language, "Language to display Cucumber features in (ISO code)", :default => "en", :short => "-l"
11
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
12
+ end
13
+
14
+ id = ARGV.shift
15
+ unless id
16
+ $stderr.puts "Error: No test case ID provided."
17
+ system "crab-testcase-help"
18
+ exit 1
19
+ end
20
+
21
+ Crab::Rally.new(opts[:dry]) do |rally|
22
+ tc = rally.find_test_case id
23
+ puts Crab::CucumberScenario.new(opts[:language]).generate_from(tc).strip
24
+ end
data/bin/crab-tc-up ADDED
@@ -0,0 +1,18 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = add_or_update_options <<-BANNER
7
+ crab testcase update: update a test case in Rally
8
+
9
+ Usage: crab testcase update <id> [options*]
10
+ BANNER
11
+
12
+ tc_id = ARGV.shift
13
+
14
+ Crab::Rally.new(opts[:dry]) do |rally|
15
+ tc = rally.find_test_case(tc_id)
16
+ tc.update(sanitize_options(opts))
17
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
18
+ end
@@ -0,0 +1,18 @@
1
+ # vim: set ft=ruby :
2
+ require 'crab'
3
+
4
+ include Crab::Utilities
5
+
6
+ opts = add_or_update_options <<-BANNER
7
+ crab testcase update: update a test case in Rally
8
+
9
+ Usage: crab testcase update <id> [options*]
10
+ BANNER
11
+
12
+ tc_id = ARGV.shift
13
+
14
+ Crab::Rally.new(opts[:dry]) do |rally|
15
+ tc = rally.find_test_case(tc_id)
16
+ tc.update(sanitize_options(opts))
17
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
18
+ end
@@ -29,10 +29,6 @@ Crab::Rally.new(opts[:dry]) do |rally|
29
29
  find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
30
30
 
31
31
  rally.find_testcases(project, pattern, find_opts).each do |tc|
32
- if tc.story
33
- puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
34
- else
35
- puts "#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
36
- end
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
37
33
  end
38
34
  end
@@ -1,25 +1,34 @@
1
1
  # vim: set ft=ruby :
2
2
  require 'crab'
3
3
 
4
+ include Crab::Utilities
5
+
4
6
  opts = Trollop::options do
5
7
  banner <<-BANNER
6
- crab testcase list: displays all testcases in Rally in a story as Cucumber scenarios
8
+ crab testcase find: find a testcase in Rally
7
9
 
8
- Usage: crab testcase list <story> [options*]"
10
+ Usage: crab testcase find [options*] [text]
9
11
  BANNER
10
- opt :language, "Language to display Cucumber features in (ISO code)", :default => "en", :short => "-l"
11
- opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
12
+ opt :project, "Project to use (required unless set by 'crab project')", :short => "-p", :type => String
13
+ opt :story, "Limit search to testcases of this story", :short => "-s", :type => String
14
+ opt :priority, "Priority (one of: #{Crab::TestCase::PRIORITIES.join(" ")}", :short => '-P', :type => String
15
+ opt :risk, "Risk (one of: #{Crab::TestCase::RISKS.join(" ")})", :short => '-r', :type => String
16
+ opt :method, "Method (one of: #{Crab::TestCase::METHODS.join(" ")})", :short => '-m', :type => String
17
+ opt :type, "Type (one of: #{Crab::TestCase::TYPES.join(" ")})", :short => '-t', :type => String
18
+ opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
12
19
  end
13
20
 
14
- id = ARGV.shift
15
- unless id
16
- $stderr.puts "Error: No story ID provided."
17
- system "crab-testcase-help"
18
- exit 1
19
- end
21
+ pattern = ARGV.map(&:strip).reject(&:empty?)
22
+ project_name = valid_project_name(opts)
20
23
 
21
24
  Crab::Rally.new(opts[:dry]) do |rally|
22
- story = rally.find_story_with_id id
25
+ project = rally.find_project(project_name)
26
+ Trollop::die "Project #{opts[:project].inspect} not found" if project.nil?
27
+
28
+ find_opts = {}
29
+ find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
23
30
 
24
- puts Array(story.scenarios).map {|scenario| Crab::CucumberScenario.new(opts[:language]).generate_from scenario }.join.strip
31
+ rally.find_testcases(project, pattern, find_opts).each do |tc|
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
33
+ end
25
34
  end
data/bin/crab-testcase-ls CHANGED
@@ -29,10 +29,6 @@ Crab::Rally.new(opts[:dry]) do |rally|
29
29
  find_opts[:story] = rally.find_story_with_id opts[:story] if opts[:story_given]
30
30
 
31
31
  rally.find_testcases(project, pattern, find_opts).each do |tc|
32
- if tc.story
33
- puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
34
- else
35
- puts "#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
36
- end
32
+ puts "#{tc.story.formatted_id}/#{tc.formatted_id}: #{tc.name} (#{tc.tags.join(" ")})"
37
33
  end
38
34
  end
data/lib/crab/rally.rb CHANGED
@@ -33,16 +33,16 @@ module Crab
33
33
  end
34
34
 
35
35
  rally_testcases = @rally.find(:test_case, :fetch => true, :project => project) do
36
- _or_ do
37
- (pattern.map(&:downcase) + pattern.map(&:capitalize)).each do |word|
38
- contains :name, word
39
- contains :description, word
40
- contains :notes, word
36
+ unless pattern.join.empty?
37
+ _or_ do
38
+ (pattern.map(&:downcase) + pattern.map(&:capitalize)).each do |word|
39
+ contains :name, word
40
+ contains :description, word
41
+ contains :notes, word
42
+ end
41
43
  end
42
44
  end
43
-
44
45
  equal :work_product, opts[:story].rally_object if opts[:story]
45
-
46
46
  equal :risk, opts[:risk].capitalize if opts[:risk]
47
47
  equal :method, opts[:method].capitalize if opts[:method]
48
48
  equal :priority, opts[:priority].capitalize if opts[:priority]
@@ -57,14 +57,14 @@ module Crab
57
57
  return @rally.find_all(:hierarchical_requirement, :fetch => true, :project => project).map {|s| Crab::Story.new(s, @dry_run) }
58
58
  end
59
59
 
60
- p pattern
61
-
62
60
  rally_stories = @rally.find(:hierarchical_requirement, :fetch => true, :project => project) do
63
- _or_ do
64
- (pattern.map(&:downcase) + pattern.map(&:capitalize)).each do |word|
65
- contains :name, word
66
- contains :description, word
67
- contains :notes, word
61
+ unless pattern.join.empty?
62
+ _or_ do
63
+ (pattern.map(&:downcase) + pattern.map(&:capitalize)).each do |word|
64
+ contains :name, word
65
+ contains :description, word
66
+ contains :notes, word
67
+ end
68
68
  end
69
69
  end
70
70
  equal :iteration, opts[:iteration] if opts[:iteration]
data/lib/crab/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Crab
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.6"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crab
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 6
10
+ version: 0.2.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Carlos Villela
@@ -150,15 +150,41 @@ email:
150
150
  executables:
151
151
  - crab
152
152
  - crab-help
153
+ - crab-it
154
+ - crab-it-help
155
+ - crab-it-list
153
156
  - crab-iteration
154
157
  - crab-iteration-help
155
158
  - crab-iteration-list
156
159
  - crab-login
157
160
  - crab-logout
158
161
  - crab-project
162
+ - crab-rel
163
+ - crab-rel-help
164
+ - crab-rel-list
159
165
  - crab-release
160
166
  - crab-release-help
161
167
  - crab-release-list
168
+ - crab-st
169
+ - crab-st-add
170
+ - crab-st-change
171
+ - crab-st-create
172
+ - crab-st-del
173
+ - crab-st-delete
174
+ - crab-st-find
175
+ - crab-st-help
176
+ - crab-st-list
177
+ - crab-st-ls
178
+ - crab-st-move
179
+ - crab-st-mv
180
+ - crab-st-new
181
+ - crab-st-pull
182
+ - crab-st-ren
183
+ - crab-st-rename
184
+ - crab-st-rm
185
+ - crab-st-show
186
+ - crab-st-up
187
+ - crab-st-update
162
188
  - crab-story
163
189
  - crab-story-add
164
190
  - crab-story-change
@@ -179,6 +205,21 @@ executables:
179
205
  - crab-story-show
180
206
  - crab-story-up
181
207
  - crab-story-update
208
+ - crab-tc
209
+ - crab-tc-add
210
+ - crab-tc-change
211
+ - crab-tc-create
212
+ - crab-tc-del
213
+ - crab-tc-delete
214
+ - crab-tc-find
215
+ - crab-tc-help
216
+ - crab-tc-list
217
+ - crab-tc-ls
218
+ - crab-tc-new
219
+ - crab-tc-rm
220
+ - crab-tc-show
221
+ - crab-tc-up
222
+ - crab-tc-update
182
223
  - crab-testcase
183
224
  - crab-testcase-add
184
225
  - crab-testcase-change
@@ -208,15 +249,41 @@ files:
208
249
  - Rakefile
209
250
  - bin/crab
210
251
  - bin/crab-help
252
+ - bin/crab-it
253
+ - bin/crab-it-help
254
+ - bin/crab-it-list
211
255
  - bin/crab-iteration
212
256
  - bin/crab-iteration-help
213
257
  - bin/crab-iteration-list
214
258
  - bin/crab-login
215
259
  - bin/crab-logout
216
260
  - bin/crab-project
261
+ - bin/crab-rel
262
+ - bin/crab-rel-help
263
+ - bin/crab-rel-list
217
264
  - bin/crab-release
218
265
  - bin/crab-release-help
219
266
  - bin/crab-release-list
267
+ - bin/crab-st
268
+ - bin/crab-st-add
269
+ - bin/crab-st-change
270
+ - bin/crab-st-create
271
+ - bin/crab-st-del
272
+ - bin/crab-st-delete
273
+ - bin/crab-st-find
274
+ - bin/crab-st-help
275
+ - bin/crab-st-list
276
+ - bin/crab-st-ls
277
+ - bin/crab-st-move
278
+ - bin/crab-st-mv
279
+ - bin/crab-st-new
280
+ - bin/crab-st-pull
281
+ - bin/crab-st-ren
282
+ - bin/crab-st-rename
283
+ - bin/crab-st-rm
284
+ - bin/crab-st-show
285
+ - bin/crab-st-up
286
+ - bin/crab-st-update
220
287
  - bin/crab-story
221
288
  - bin/crab-story-add
222
289
  - bin/crab-story-change
@@ -237,6 +304,21 @@ files:
237
304
  - bin/crab-story-show
238
305
  - bin/crab-story-up
239
306
  - bin/crab-story-update
307
+ - bin/crab-tc
308
+ - bin/crab-tc-add
309
+ - bin/crab-tc-change
310
+ - bin/crab-tc-create
311
+ - bin/crab-tc-del
312
+ - bin/crab-tc-delete
313
+ - bin/crab-tc-find
314
+ - bin/crab-tc-help
315
+ - bin/crab-tc-list
316
+ - bin/crab-tc-ls
317
+ - bin/crab-tc-new
318
+ - bin/crab-tc-rm
319
+ - bin/crab-tc-show
320
+ - bin/crab-tc-up
321
+ - bin/crab-tc-update
240
322
  - bin/crab-testcase
241
323
  - bin/crab-testcase-add
242
324
  - bin/crab-testcase-change