metasploit-version 0.1.2-java

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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +32 -0
  4. data/.simplecov +60 -0
  5. data/.travis.yml +26 -0
  6. data/.yardopts +7 -0
  7. data/CONTRIBUTING.md +156 -0
  8. data/Gemfile +17 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +133 -0
  11. data/Rakefile +20 -0
  12. data/features/shared/examples/metasploit/version/gem_version_constant.feature +215 -0
  13. data/features/shared/examples/metasploit/version/version_constant.feature +183 -0
  14. data/features/shared/examples/metasploit/version/version_module.feature +275 -0
  15. data/features/shared/examples/metasploit/version/version_module/prerelease/git/branch.feature +234 -0
  16. data/features/shared/examples/metasploit/version/version_module/prerelease/git/detached_head.feature +97 -0
  17. data/features/shared/examples/metasploit/version/version_module/prerelease/git/master.feature +94 -0
  18. data/features/shared/examples/metasploit/version/version_module/prerelease/git/step_definitions/environment_variable_steps.rb +13 -0
  19. data/features/shared/examples/metasploit/version/version_module/prerelease/git/step_definitions/git_steps.rb +30 -0
  20. data/features/shared/examples/metasploit/version/version_module/prerelease/travis_ci/branch.feature +173 -0
  21. data/features/shared/examples/metasploit/version/version_module/prerelease/travis_ci/master.feature +90 -0
  22. data/features/shared/examples/metasploit/version/version_module/prerelease/travis_ci/pull_request.feature +99 -0
  23. data/features/shared/examples/metasploit/version/version_module/prerelease/travis_ci/tag.feature +277 -0
  24. data/features/support/env.rb +41 -0
  25. data/features/support/simplecov_setup.rb +12 -0
  26. data/lib/metasploit/version.rb +19 -0
  27. data/lib/metasploit/version/branch.rb +172 -0
  28. data/lib/metasploit/version/version.rb +57 -0
  29. data/metasploit-version.gemspec +41 -0
  30. data/spec/lib/metasploit/version/branch_spec.rb +660 -0
  31. data/spec/lib/metasploit/version/version_spec.rb +5 -0
  32. data/spec/lib/metasploit/version_spec.rb +6 -0
  33. data/spec/spec_helper.rb +13 -0
  34. data/spec/support/shared/examples/metasploit/version/gem_version_constant.rb +17 -0
  35. data/spec/support/shared/examples/metasploit/version/version_constant.rb +17 -0
  36. data/spec/support/shared/examples/metasploit/version/version_module.rb +226 -0
  37. metadata +173 -0
@@ -0,0 +1,234 @@
1
+ Feature: 'Metasploit::Version Version Module' shared example in branch build on Travis-CI
2
+
3
+ The 'Metasploit::Version Version Module' shared example will check that the described_class for an RSpec *_spec.rb
4
+ file defines PRERELEASE to match the relative name of branch.
5
+
6
+ Background:
7
+ Given I unset the environment variable "TRAVIS_BRANCH"
8
+ Given I set the environment variables to:
9
+ | variable | value |
10
+ | TRAVIS_PULL_REQUEST | false |
11
+ Given a git repository
12
+ And 2 commits
13
+ Given a file named "lib/my_namespace/my_gem.rb" with:
14
+ """ruby
15
+ require 'my_namespace/my_gem/version'
16
+
17
+ module MyNamespace
18
+ module MyGem
19
+ end
20
+ end
21
+ """
22
+ Given a file named "spec/spec_helper.rb" with:
23
+ """ruby
24
+ require 'metasploit/version'
25
+ require 'my_namespace/my_gem'
26
+
27
+ # Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
28
+ gem_specification = Gem::Specification.find_all_by_name('metasploit-version').first
29
+
30
+ Dir[File.join(gem_specification.gem_dir, 'spec', 'support', '**', '*.rb')].each do |f|
31
+ require f
32
+ end
33
+ """
34
+ Given a file named "spec/lib/my_namespace/my_gem/version_spec.rb" with:
35
+ """ruby
36
+ require 'spec_helper'
37
+
38
+ RSpec.describe MyNamespace::MyGem::Version do
39
+ it_should_behave_like 'Metasploit::Version Version Module'
40
+ end
41
+ """
42
+
43
+ Scenario Outline: PRERELEASE defined as branch relative name
44
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
45
+ """ruby
46
+ module MyNamespace
47
+ module MyGem
48
+ module Version
49
+ #
50
+ # CONSTANTS
51
+ #
52
+
53
+ # The major version number
54
+ MAJOR = 1
55
+
56
+ # The minor version number, scoped to the {MAJOR} version number.
57
+ MINOR = 2
58
+
59
+ # The patch number, scoped to the {MINOR} version number
60
+ PATCH = 3
61
+
62
+ # The prerelease name of the given {MAJOR}.{MINOR}.{PATCH} version number. Will not be defined on master.
63
+ PRERELEASE = '<prerelease>'
64
+
65
+ # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
66
+ # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
67
+ #
68
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}' on any branch
69
+ # other than master.
70
+ def self.full
71
+ version = "#{MAJOR}.#{MINOR}.#{PATCH}"
72
+
73
+ if defined? PRERELEASE
74
+ version = "#{version}-#{PRERELEASE}"
75
+ end
76
+
77
+ version
78
+ end
79
+
80
+ # The full gem version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
81
+ # {http://guides.rubygems.org/specification-reference/#version RubyGems versioning} format.
82
+ #
83
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}.{PRERELEASE}' on any branch
84
+ # other than master.
85
+ def self.gem
86
+ full.gsub('-', '.pre.')
87
+ end
88
+ end
89
+ end
90
+ end
91
+ """
92
+ And a git checkout of "-b <branch>"
93
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
94
+ Then the output should contain:
95
+ """
96
+ PRERELEASE
97
+ matches the <type> branch's name
98
+ """
99
+
100
+ Examples:
101
+ | type | prerelease | branch |
102
+ | bug | nasty | bug/MSP-1234/nasty |
103
+ | feature | super-cool | feature/MSP-1234/super-cool |
104
+ | staging | rocket-motor | staging/rocket-motor |
105
+
106
+ Scenario Outline: PRERELEASE not defined
107
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
108
+ """ruby
109
+ module MyNamespace
110
+ module MyGem
111
+ module Version
112
+ #
113
+ # CONSTANTS
114
+ #
115
+
116
+ # The major version number
117
+ MAJOR = 1
118
+
119
+ # The minor version number, scoped to the {MAJOR} version number.
120
+ MINOR = 2
121
+
122
+ # The patch number, scoped to the {MINOR} version number
123
+ PATCH = 3
124
+
125
+ # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
126
+ # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
127
+ #
128
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}' on any branch
129
+ # other than master.
130
+ def self.full
131
+ version = "#{MAJOR}.#{MINOR}.#{PATCH}"
132
+
133
+ if defined? PRERELEASE
134
+ version = "#{version}-#{PRERELEASE}"
135
+ end
136
+
137
+ version
138
+ end
139
+
140
+ # The full gem version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
141
+ # {http://guides.rubygems.org/specification-reference/#version RubyGems versioning} format.
142
+ #
143
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}.{PRERELEASE}' on any branch
144
+ # other than master.
145
+ def self.gem
146
+ full.gsub('-', '.pre.')
147
+ end
148
+ end
149
+ end
150
+ end
151
+ """
152
+ And a git checkout of "-b <branch>"
153
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
154
+ Then the output should contain "MyNamespace::MyGem::Version it should behave like Metasploit::Version Version Module CONSTANTS PRERELEASE matches the <type> branch's name"
155
+ And the output should contain:
156
+ """
157
+ expected MyNamespace::MyGem::Version::PRERELEASE to be defined.
158
+ Add the following to MyNamespace::MyGem::Version:
159
+ """
160
+ # Can't do a continuous multiline string because editors will truncate whitespace in blank line and it won't match
161
+ # whitespace in rspec output.
162
+ And the output should contain:
163
+ """
164
+ # The prerelease version, scoped to the {PATCH} version number.
165
+ PRERELEASE = <prerelease>
166
+ """
167
+
168
+ Examples:
169
+ | type | prerelease | branch |
170
+ | bug | nasty | bug/MSP-1234/nasty |
171
+ | feature | super-cool | feature/MSP-1234/super-cool |
172
+ | staging | rocket-motor | staging/rocket-motor |
173
+
174
+ Scenario Outline: Story branch without a story ID
175
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
176
+ """ruby
177
+ module MyNamespace
178
+ module MyGem
179
+ module Version
180
+ #
181
+ # CONSTANTS
182
+ #
183
+
184
+ # The major version number
185
+ MAJOR = 1
186
+
187
+ # The minor version number, scoped to the {MAJOR} version number.
188
+ MINOR = 2
189
+
190
+ # The patch number, scoped to the {MINOR} version number.
191
+ PATCH = 3
192
+
193
+ # The prerelease version, scoped to the {PATCH} version number.
194
+ PRERELEASE = '<prerelease>'
195
+
196
+ # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
197
+ # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
198
+ #
199
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}' on any branch
200
+ # other than master.
201
+ def self.full
202
+ version = "#{MAJOR}.#{MINOR}.#{PATCH}"
203
+
204
+ if defined? PRERELEASE
205
+ version = "#{version}-#{PRERELEASE}"
206
+ end
207
+
208
+ version
209
+ end
210
+
211
+ # The full gem version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
212
+ # {http://guides.rubygems.org/specification-reference/#version RubyGems versioning} format.
213
+ #
214
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}.{PRERELEASE}' on any branch
215
+ # other than master.
216
+ def self.gem
217
+ full.gsub('-', '.pre.')
218
+ end
219
+ end
220
+ end
221
+ end
222
+ """
223
+ And a git checkout of "-b <branch>"
224
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
225
+ Then the output should contain:
226
+ """
227
+ Do not know how to parse "<branch>" for PRERELEASE
228
+ """
229
+
230
+ Examples:
231
+ | prerelease | branch |
232
+ | nasty | bug/nasty |
233
+ | recurring | chore/recurring |
234
+ | super-cool | feature/super-cool |
@@ -0,0 +1,97 @@
1
+ Feature: 'Metasploit::Version Version Module' shared example in detached head build locally
2
+
3
+ The 'Metasploit::Version Version Module' shared example will not check that the described_class for an RSpec *_spec.rb
4
+ file defines PRERELEASE when the git repository is in a detached head state, such as when checking out a SHA and it
5
+ does not correspond to a pre-existing branch or tag.
6
+
7
+ Background:
8
+ Given I unset the environment variable "TRAVIS_BRANCH"
9
+ Given a git repository
10
+ And 2 commits
11
+ And a git checkout of "HEAD^"
12
+ And a file named "lib/my_namespace/my_gem.rb" with:
13
+ """ruby
14
+ require 'my_namespace/my_gem/version'
15
+
16
+ module MyNamespace
17
+ module MyGem
18
+ end
19
+ end
20
+ """
21
+ And a file named "spec/spec_helper.rb" with:
22
+ """ruby
23
+ require 'metasploit/version'
24
+ require 'my_namespace/my_gem'
25
+
26
+ # Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
27
+ gem_specification = Gem::Specification.find_all_by_name('metasploit-version').first
28
+
29
+ Dir[File.join(gem_specification.gem_dir, 'spec', 'support', '**', '*.rb')].each do |f|
30
+ require f
31
+ end
32
+ """
33
+ And a file named "spec/lib/my_namespace/my_gem/version_spec.rb" with:
34
+ """ruby
35
+ require 'spec_helper'
36
+
37
+ RSpec.describe MyNamespace::MyGem::Version do
38
+ it_should_behave_like 'Metasploit::Version Version Module'
39
+ end
40
+ """
41
+
42
+ Scenario: PRERELEASE defined
43
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
44
+ """ruby
45
+ module MyNamespace
46
+ module MyGem
47
+ module Version
48
+ #
49
+ # CONSTANTS
50
+ #
51
+
52
+ # The major version number
53
+ MAJOR = 1
54
+
55
+ # The minor version number, scoped to the {MAJOR} version number.
56
+ MINOR = 2
57
+
58
+ # The patch number, scoped to the {MINOR} version number
59
+ PATCH = 3
60
+
61
+ # The prerelease name of the given {MAJOR}.{MINOR}.{PATCH} version number. Will not be defined on master.
62
+ PRERELEASE = 'source-branch-relative-name'
63
+
64
+ # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
65
+ # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
66
+ #
67
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}' on any branch
68
+ # other than master.
69
+ def self.full
70
+ version = "#{MAJOR}.#{MINOR}.#{PATCH}"
71
+
72
+ if defined? PRERELEASE
73
+ version = "#{version}-#{PRERELEASE}"
74
+ end
75
+
76
+ version
77
+ end
78
+
79
+ # The full gem version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the {PRERELEASE} in the
80
+ # {http://guides.rubygems.org/specification-reference/#version RubyGems versioning} format.
81
+ #
82
+ # @return [String] '{MAJOR}.{MINOR}.{PATCH}' on master. '{MAJOR}.{MINOR}.{PATCH}.{PRERELEASE}' on any branch
83
+ # other than master.
84
+ def self.gem
85
+ full.gsub('-', '.pre.')
86
+ end
87
+ end
88
+ end
89
+ end
90
+ """
91
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
92
+ Then the output should contain:
93
+ """
94
+ Pending:
95
+ MyNamespace::MyGem::Version it should behave like Metasploit::Version Version Module CONSTANTS PRERELEASE has an abbreviated reference that can be parsed for prerelease
96
+ # Cannot determine branch name in detached HEAD state. Set TRAVIS_BRANCH to supply branch name
97
+ """
@@ -0,0 +1,94 @@
1
+ Feature: 'Metasploit::Version Version Module' shared example in master build locally
2
+
3
+ The 'Metasploit::Version Version Module' shared example will check that the described_class for an RSpec *_spec.rb
4
+ file does not define PRERELEASE.
5
+
6
+ Background:
7
+ Given I unset the environment variable "TRAVIS_BRANCH"
8
+ Given I set the environment variables to:
9
+ | variable | value |
10
+ | TRAVIS_PULL_REQUEST | false |
11
+ Given a git repository
12
+ Given a git checkout of "master"
13
+ Given a file named "lib/my_namespace/my_gem.rb" with:
14
+ """ruby
15
+ require 'my_namespace/my_gem/version'
16
+
17
+ module MyNamespace
18
+ module MyGem
19
+ end
20
+ end
21
+ """
22
+ Given a file named "spec/spec_helper.rb" with:
23
+ """ruby
24
+ require 'metasploit/version'
25
+ require 'my_namespace/my_gem'
26
+
27
+ # Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
28
+ gem_specification = Gem::Specification.find_all_by_name('metasploit-version').first
29
+
30
+ Dir[File.join(gem_specification.gem_dir, 'spec', 'support', '**', '*.rb')].each do |f|
31
+ require f
32
+ end
33
+ """
34
+ Given a file named "spec/lib/my_namespace/my_gem/version_spec.rb" with:
35
+ """ruby
36
+ require 'spec_helper'
37
+
38
+ RSpec.describe MyNamespace::MyGem::Version do
39
+ it_should_behave_like 'Metasploit::Version Version Module'
40
+ end
41
+ """
42
+
43
+ Scenario: PRERELEASE defined
44
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
45
+ """ruby
46
+ module MyNamespace
47
+ module MyGem
48
+ module Version
49
+ #
50
+ # CONSTANTS
51
+ #
52
+
53
+ # The major version number
54
+ MAJOR = 1
55
+
56
+ # The minor version number, scoped to the {MAJOR} version number.
57
+ MINOR = 2
58
+
59
+ # The patch number, scoped to the {MINOR} version number
60
+ PATCH = 3
61
+
62
+ # The prerelease name of the given {MAJOR}.{MINOR}.{PATCH} version number. Will not be defined on master.
63
+ PRERELEASE = 'source-branch-relative-name'
64
+ end
65
+ end
66
+ end
67
+ """
68
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
69
+ Then the output should contain "expected MyNamespace::MyGem::Version::PRERELEASE not to be defined on master"
70
+
71
+ Scenario: PRERELEASE undefined
72
+ Given a file named "lib/my_namespace/my_gem/version.rb" with:
73
+ """ruby
74
+ module MyNamespace
75
+ module MyGem
76
+ module Version
77
+ #
78
+ # CONSTANTS
79
+ #
80
+
81
+ # The major version number
82
+ MAJOR = 1
83
+
84
+ # The minor version number, scoped to the {MAJOR} version number.
85
+ MINOR = 2
86
+
87
+ # The patch number, scoped to the {MINOR} version number
88
+ PATCH = 3
89
+ end
90
+ end
91
+ end
92
+ """
93
+ When I run `rspec spec/lib/my_namespace/my_gem/version_spec.rb --format documentation`
94
+ Then the output should not contain "expected MyNamespace::MyGem::Version::PRERELEASE not to be defined on master"
@@ -0,0 +1,13 @@
1
+ Given(/^I unset the environment variable "(.*?)"$/) do |variable|
2
+ # @note This will only work if the consumer of the environment variable treats a blank value for the environment
3
+ # variable as the same as the environment variable not being set
4
+ #
5
+ # ENV[variable] = nil and ENV.delete(variable) will not stop the parent process's environment variable from
6
+ # propagating to processes called by run_simple, so have to fake unsetting with blank values.
7
+ if RUBY_PLATFORM == 'java'
8
+ warn "Faking unsetting environment variable for JRuby by setting to blank string"
9
+ set_env(variable, '')
10
+ else
11
+ set_env(variable, nil)
12
+ end
13
+ end
@@ -0,0 +1,30 @@
1
+ fail_on_error = true
2
+
3
+ Given /^a git repository$/ do
4
+ # git init will fail if account ident it not setup
5
+ if ENV['TRAVIS'] == 'true'
6
+ run_simple('git config --global user.email "cucumber@example.com"')
7
+ run_simple('git config --global user.name "Cucumber"')
8
+ end
9
+
10
+ run_simple('git init', fail_on_error)
11
+ path = '.gitignore'
12
+ write_file(path, '')
13
+ run_simple("git add #{path}", fail_on_error)
14
+ run_simple('git commit --message "Initial commit"', fail_on_error)
15
+ end
16
+
17
+ Given /^(\d+) commits$/ do |commits|
18
+ commits = commits.to_i
19
+
20
+ commits.times do |commit|
21
+ path = "file#{commit}"
22
+ write_file(path, '')
23
+ run_simple("git add #{path}", fail_on_error)
24
+ run_simple("git commit --message \"Commit #{commit} of #{commits}\"", fail_on_error)
25
+ end
26
+ end
27
+
28
+ Given /^a git checkout of "(.*?)"$/ do |treeish|
29
+ run_simple("git checkout #{treeish}", fail_on_error)
30
+ end