crab 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -8,6 +8,7 @@ crab story show: displays a story in Rally as a Cucumber feature
8
8
  Usage: crab story show <id> [options*]"
9
9
  BANNER
10
10
  opt :language, "Language to display Cucumber features in (ISO code)", :default => "en", :short => "-l"
11
+ opt :testcases, "Also convert test cases to scenarios (similar to crab testcase show)", :short => "-t", :default => true
11
12
  opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
12
13
  end
13
14
 
@@ -15,5 +16,5 @@ id = ARGV.first
15
16
  Crab::Rally.new(opts[:dry]) do |rally|
16
17
  story = rally.find_story_with_id(id)
17
18
 
18
- puts Crab::CucumberFeature.new(opts[:language]).generate_from story
19
+ puts Crab::CucumberFeature.new(opts[:language]).generate_from(story, opts[:testcases])
19
20
  end
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -8,6 +8,7 @@ crab story show: displays a story in Rally as a Cucumber feature
8
8
  Usage: crab story show <id> [options*]"
9
9
  BANNER
10
10
  opt :language, "Language to display Cucumber features in (ISO code)", :default => "en", :short => "-l"
11
+ opt :testcases, "Also convert test cases to scenarios (similar to crab testcase show)", :short => "-t", :default => true
11
12
  opt :dry, "Dry-run (don't change anything)", :short => "-D", :default => false
12
13
  end
13
14
 
@@ -15,5 +16,5 @@ id = ARGV.first
15
16
  Crab::Rally.new(opts[:dry]) do |rally|
16
17
  story = rally.find_story_with_id(id)
17
18
 
18
- puts Crab::CucumberFeature.new(opts[:language]).generate_from story
19
+ puts Crab::CucumberFeature.new(opts[:language]).generate_from(story, opts[:testcases])
19
20
  end
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -41,17 +41,14 @@ Crab::Rally.new(opts[:dry]) do |rally|
41
41
 
42
42
  if cmd_opts[:iteration_given]
43
43
  opts[:iteration] = rally.find_iteration_by_name cmd_opts[:iteration], story.rally_object.project
44
- Trollop::die "Unknown iteration \"#{cmd_opts[:iteration]}\"" if opts[:iteration].nil?
45
44
  end
46
45
 
47
46
  if cmd_opts[:release_given]
48
47
  opts[:release] = rally.find_release_by_name cmd_opts[:release], story.rally_object.project
49
- Trollop::die "Unknown release \"#{cmd_opts[:release]}\"" if opts[:release].nil?
50
48
  end
51
49
 
52
50
  if cmd_opts[:parent_given]
53
51
  opts[:parent] = rally.find_story_with_id(cmd_opts[:parent]).rally_object
54
- Trollop::die "Unknown story \"#{cmd_opts[:parent]}\"" if opts[:parent].nil?
55
52
  end
56
53
 
57
54
  opts[:name] = story.name if opts[:name].blank?
@@ -7,6 +7,7 @@ Usage: crab testcase <command> [options*]
7
7
 
8
8
  create Create a new test case in a story
9
9
  delete Delete an existing test case
10
+ find Find test cases
10
11
  help Show this help text
11
12
  list List test cases in a story
12
13
  show Show a test case (and its steps) as a Cucumber scenario
@@ -7,6 +7,7 @@ Usage: crab testcase <command> [options*]
7
7
 
8
8
  create Create a new test case in a story
9
9
  delete Delete an existing test case
10
+ find Find test cases
10
11
  help Show this help text
11
12
  list List test cases in a story
12
13
  show Show a test case (and its steps) as a Cucumber scenario
@@ -6,15 +6,20 @@ module Crab
6
6
  @language = Gherkin::I18n.new(language)
7
7
  end
8
8
 
9
- def generate_from(story)
9
+ def generate_from(story, include_testcases)
10
10
  text = <<-FEATURE
11
11
  # language: #{@language.iso_code}
12
12
  #{@language.keywords('feature').last}: [#{story.formatted_id}] #{story.name}
13
13
 
14
14
  #{story.description}
15
+ FEATURE
15
16
 
17
+ if include_testcases
18
+ text << <<-SCENARIOS
16
19
  #{Array(story.scenarios).map {|scenario| CucumberScenario.new(@language.iso_code).generate_from scenario }}
17
- FEATURE
20
+ SCENARIOS
21
+ end
22
+
18
23
  text.strip
19
24
  end
20
25
  end
@@ -33,15 +33,8 @@ module Crab
33
33
  end
34
34
 
35
35
  rally_testcases = @rally.find(:test_case, :fetch => true, :project => project) do
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
43
- end
44
- end
36
+ Crab::Rally.search_for_words_in pattern, self
37
+
45
38
  equal :work_product, opts[:story].rally_object if opts[:story]
46
39
  equal :risk, opts[:risk].capitalize if opts[:risk]
47
40
  equal :method, opts[:method].capitalize if opts[:method]
@@ -58,15 +51,8 @@ module Crab
58
51
  end
59
52
 
60
53
  rally_stories = @rally.find(:hierarchical_requirement, :fetch => true, :project => project) do
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
- end
69
- end
54
+ Crab::Rally.search_for_words_in pattern, self
55
+
70
56
  equal :iteration, opts[:iteration] if opts[:iteration]
71
57
  equal :release, opts[:release] if opts[:release]
72
58
  equal :parent, opts[:parent].rally_object if opts[:parent]
@@ -84,7 +70,9 @@ module Crab
84
70
  end
85
71
 
86
72
  def find_iteration_by_name(name, project)
87
- @rally.find(:iteration, :project => project) { equal :name, name }.first
73
+ iteration = @rally.find(:iteration, :project => project) { equal :name, name }.first
74
+ Trollop::die "Unknown iteration \"#{name}\"" if iteration.nil?
75
+ iteration
88
76
  end
89
77
 
90
78
  def find_releases(project)
@@ -92,7 +80,9 @@ module Crab
92
80
  end
93
81
 
94
82
  def find_release_by_name(name, project)
95
- @rally.find(:release, :project => project) { equal :name, name }.first
83
+ release = @rally.find(:release, :project => project) { equal :name, name }.first
84
+ Trollop::die "Unknown release \"#{name}\"" if release.nil?
85
+ release
96
86
  end
97
87
 
98
88
  def create_story(opts)
@@ -119,5 +109,18 @@ module Crab
119
109
  Crab::TestCase.new(@rally.find(:test_case) { equal :formatted_i_d, tc_id }.first, @dry_run)
120
110
  end
121
111
 
112
+ private
113
+
114
+ def self.search_for_words_in(pattern, query)
115
+ unless pattern.join.empty?
116
+ query._or_ do
117
+ (pattern.map(&:downcase) + pattern.map(&:capitalize)).each do |word|
118
+ contains :name, word
119
+ contains :description, word
120
+ contains :notes, word
121
+ end
122
+ end
123
+ end
124
+ end
122
125
  end
123
126
  end
@@ -1,3 +1,3 @@
1
1
  module Crab
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
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: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 6
10
- version: 0.2.6
9
+ - 7
10
+ version: 0.2.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Carlos Villela
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-30 00:00:00 -03:00
18
+ date: 2011-10-01 00:00:00 -03:00
19
19
  default_executable: crab
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency