crab 0.2.4 → 0.2.6

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 (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