metasploit-erd 0.0.1 → 0.1.0
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.
- checksums.yaml +5 -13
- data/.rspec +1 -2
- data/.travis.yml +2 -1
- data/CHANGELOG.md +6 -0
- data/CONTRIBUTING.md +122 -0
- data/RELEASING.md +80 -0
- data/Rakefile +8 -3
- data/UPGRADING.md +1 -0
- data/lib/metasploit/erd/cluster.rb +3 -3
- data/lib/metasploit/erd/diagram.rb +1 -1
- data/lib/metasploit/erd/version.rb +33 -7
- data/metasploit-erd.gemspec +6 -2
- data/spec/lib/metasploit/erd/version_spec.rb +3 -0
- data/spec/lib/metasploit/erd_spec.rb +4 -0
- data/spec/metasploit/erd/cluster_spec.rb +3 -5
- data/spec/metasploit/erd/diagram_spec.rb +16 -18
- data/spec/metasploit/erd/entity/class_spec.rb +4 -6
- data/spec/metasploit/erd/entity/namespace_spec.rb +2 -4
- data/spec/metasploit/erd/relationship_spec.rb +4 -6
- data/spec/spec_helper.rb +89 -7
- data/spec/support/shared/contexts/active_record_base_connection.rb +1 -1
- data/spec/support/shared/contexts/active_record_base_descendants_cleaner.rb +1 -1
- data/spec/support/shared/examples/metasploit/erd/clusterable.rb +3 -3
- metadata +66 -35
- data/lib/tasks/yard.rake +0 -32
- data/spec/metasploit/erd/version_spec.rb +0 -125
- data/spec/metasploit/erd_spec.rb +0 -15
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZmFmYjJjYWJkYzYyMDkwNWZhODNmNTQyOTFkNTk1NjMyODNmYmVhYQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ef6368293df1c4dfd65ee566fa8f21d28150a397
|
4
|
+
data.tar.gz: 4a276d31b8c8f608b8fa063eb95ea61b41ad0528
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MmFjNDZhNmVlNWQ2MjQzZDdkZWJmZDUxZWY2NWE2ZTQ4ZjcwNWNhMDA0MWNm
|
11
|
-
NmQ3MDBlNGIzNjBjZjY3NGZkOWEyNTAwNDkyZmUyZjUwMTNmNzc=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NmNhZDFmOGE1ODI4MjhjZmMyYTFmMmQ5YjUzYzAzMjgzZWJjNzRhNzYwZGY3
|
14
|
-
OGFlZTMxZjI5YTA5NmYyMjUxYWFlZjEwYjYxNzAyNWQ1YjliNjE1YTM5ODI2
|
15
|
-
Yjg1NDE0MDg2NzJhOTUyZjU1MGQ1ZTI3ZDcxYzI2N2E4ZjM0ZTM=
|
6
|
+
metadata.gz: aac17a79ded8d3425edb1beeb0a9698a7168db8847b2fd17d973dbb40a89d849a0f258af4e8eb973dd24097f1b78f57cc47ee5a98b1f948329a326d3182cdeae
|
7
|
+
data.tar.gz: 003b1e194a7bb06c20091a060ae2755b6fe3928031e4a6e215c3810aaa1625aed22495a15315e07883ec16fb6fb7c1b235a818c0068dfd66b1cd32c5f27d57ae
|
data/.rspec
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
## Forking
|
4
|
+
|
5
|
+
[Fork this repository](https://github.com/rapid7/metasploit-erd/fork)
|
6
|
+
|
7
|
+
## Branching
|
8
|
+
|
9
|
+
Branch names follow the format `TYPE/ISSUE/SUMMARY`. You can create it with `git checkout -b TYPE/ISSUE/SUMMARY`.
|
10
|
+
|
11
|
+
### `TYPE`
|
12
|
+
|
13
|
+
`TYPE` can be `bug`, `chore`, or `feature`.
|
14
|
+
|
15
|
+
### `ISSUE`
|
16
|
+
|
17
|
+
`ISSUE` is either a [Github issue](https://github.com/rapid7/metasploit-erd/issues) or an issue from some other
|
18
|
+
issue tracking software.
|
19
|
+
|
20
|
+
### `SUMMARY`
|
21
|
+
|
22
|
+
`SUMMARY` is is short summary of the purpose of the branch composed of lower case words separated by '-' so that it is a valid `PRERELEASE` for the Gem version.
|
23
|
+
|
24
|
+
## Changes
|
25
|
+
|
26
|
+
### `PRERELEASE`
|
27
|
+
|
28
|
+
1. Update `PRERELEASE` to match the `SUMMARY` in the branch name. If you branched from `master`, and [version.rb](lib/metasploit/erd/version.rb) does not have `PRERELEASE` defined, then adding the following lines after `PATCH`:
|
29
|
+
```
|
30
|
+
# The prerelease version, scoped to the {MAJOR}, {MINOR}, and {PATCH} version number.
|
31
|
+
PRERELEASE = '<SUMMARY>'
|
32
|
+
```
|
33
|
+
2. `rake spec`
|
34
|
+
3. Verify the specs pass, which indicates that `PRERELEASE` was updated correctly.
|
35
|
+
4. Commit the change `git commit -a`
|
36
|
+
|
37
|
+
### Your changes
|
38
|
+
|
39
|
+
Make your changes or however many commits you like, committing each with `git commit`.
|
40
|
+
|
41
|
+
### Pre-Pull Request Testing
|
42
|
+
|
43
|
+
1. Run specs one last time before opening the Pull Request: `rake spec`
|
44
|
+
2. Verify there was no failures.
|
45
|
+
|
46
|
+
### Push
|
47
|
+
|
48
|
+
Push your branch to your fork on gitub: `git push TYPE/ISSUE/SUMMARY`
|
49
|
+
|
50
|
+
### Pull Request
|
51
|
+
|
52
|
+
* [Create new Pull Request](https://github.com/rapid7/metasploit-erd/compare/)
|
53
|
+
* Add a Verification Steps to the description comment
|
54
|
+
|
55
|
+
```
|
56
|
+
# Verification Steps
|
57
|
+
|
58
|
+
- [ ] `bundle install`
|
59
|
+
|
60
|
+
## `rake spec`
|
61
|
+
- [ ] `rake spec`
|
62
|
+
- [ ] VERIFY no failures
|
63
|
+
```
|
64
|
+
|
65
|
+
You should also include at least one scenario to manually check the changes outside of specs.
|
66
|
+
|
67
|
+
* Add a Post-merge Steps comment
|
68
|
+
|
69
|
+
The 'Post-merge Steps' are a reminder to the reviewer of the Pull Request of how to update the [`PRERELEASE`](lib/metasploit/erd/version.rb) so that [version_spec.rb](spec/lib/metasploit/erd/version.rb_spec.rb) passes on the target branch after the merge.
|
70
|
+
|
71
|
+
DESTINATION is the name of the destination branch into which the merge is being made. SOURCE_SUMMARY is the SUMMARY from TYPE/ISSUE/SUMMARY branch name for the SOURCE branch that is being made.
|
72
|
+
|
73
|
+
When merging to `master`:
|
74
|
+
|
75
|
+
```
|
76
|
+
# Post-merge Steps
|
77
|
+
|
78
|
+
Perform these steps prior to pushing to master or the build will be broke on master.
|
79
|
+
|
80
|
+
## Version
|
81
|
+
- [ ] Edit `lib/metasploit/erd/version.rb`
|
82
|
+
- [ ] Remove `PRERELEASE` and its comment as `PRERELEASE` is not defined on master.
|
83
|
+
|
84
|
+
## Gem build
|
85
|
+
- [ ] gem build *.gemspec
|
86
|
+
- [ ] VERIFY the gem has no '.pre' version suffix.
|
87
|
+
|
88
|
+
## RSpec
|
89
|
+
- [ ] `rake spec`
|
90
|
+
- [ ] VERIFY version examples pass without failures
|
91
|
+
|
92
|
+
## Commit & Push
|
93
|
+
- [ ] `git commit -a`
|
94
|
+
- [ ] `git push origin master`
|
95
|
+
```
|
96
|
+
|
97
|
+
When merging to DESTINATION other than `master`:
|
98
|
+
|
99
|
+
```
|
100
|
+
# Post-merge Steps
|
101
|
+
|
102
|
+
Perform these steps prior to pushing to DESTINATION or the build will be broke on DESTINATION.
|
103
|
+
|
104
|
+
## Version
|
105
|
+
- [ ] Edit `lib/metasploit/erd/version.rb`
|
106
|
+
- [ ] Change `PRERELEASE` from `SOURCE_SUMMARY` to `DESTINATION_SUMMARY` to match the branch (DESTINATION) summary (DESTINATION_SUMMARY)
|
107
|
+
|
108
|
+
## Gem build
|
109
|
+
- [ ] gem build metasploit-erd.gemspec
|
110
|
+
- [ ] VERIFY the prerelease suffix has change on the gem.
|
111
|
+
|
112
|
+
## RSpec
|
113
|
+
- [ ] `rake spec`
|
114
|
+
- [ ] VERIFY version examples pass without failures
|
115
|
+
|
116
|
+
## Commit & Push
|
117
|
+
- [ ] `git commit -a`
|
118
|
+
- [ ] `git push origin DESTINATION`
|
119
|
+
```
|
120
|
+
|
121
|
+
To update the [CHANGELOG.md](CHANGELOG.md) with the merged changes or release the merged code see
|
122
|
+
[RELEASING.md](RELEASING.md)
|
data/RELEASING.md
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
# Releasing
|
2
|
+
|
3
|
+
These steps can be added to the Pull Request description's task list to remind the reviewer of how to release the
|
4
|
+
gem.
|
5
|
+
|
6
|
+
```
|
7
|
+
# Release
|
8
|
+
|
9
|
+
Complete these steps on DESTINATION
|
10
|
+
|
11
|
+
## [CHANGELOG.md](CHANGELOG.md)
|
12
|
+
|
13
|
+
### Terminology
|
14
|
+
|
15
|
+
* "Enhancements" are widdening the API, such as by adding new classes or methods.
|
16
|
+
* "Bug Fixes" are fixes to the implementation that do not affect the public API. If the public API is affected then
|
17
|
+
the change should be listed as both a "Bug Fix" and either an "Enhancement" or "Incompatible Change" depending on how
|
18
|
+
the bug was fixed.
|
19
|
+
* "Deprecations" are changes to the implementation that cause deprecation warnings to be issued for APIs which will be
|
20
|
+
removed in a future major release. "Deprecations" are usually accompanied by an Enhancement that creates a new API
|
21
|
+
that is meant to be used in favor of the deprecated API.
|
22
|
+
* "Incompatbile Changes" are the removal of classes or methods or new required arguments or setup that shrink the API.
|
23
|
+
It is best practice to make a "Deprecation" for the API prior to its removal.
|
24
|
+
|
25
|
+
### Task List
|
26
|
+
|
27
|
+
- [ ] Generate the list of changes since the last release: `git log v<LAST_MAJOR>.<LAST_MINOR>.<LAST_PATCH>..HEAD`
|
28
|
+
- [ ] For each commit in the release, find the corresponding PR by search for the commit on Github.
|
29
|
+
- [ ] For each PR, determine whether it is an Enhancement, Bug Fix, Deprecation, and/or Incompatible Change. A PR can
|
30
|
+
be in more than one category, in which case it should be listed in each category it belongs, but with a category
|
31
|
+
specific description of the change.
|
32
|
+
- [ ] Add an item to each category's list in the following format: `[#<PR>](https://github.com/rapid7/metasploit-erd/pull/<PR>) <consumer summary> - [@<github_user>](https://github.com/<github_user>)`
|
33
|
+
`consumer_summary` should be a summary of the Enhancement, Bug Fix, Deprecation, or Incompatible Change from a
|
34
|
+
downstream consumer's of the library's perspective. `github_user` should be Github handle of the author of the
|
35
|
+
PR.
|
36
|
+
- [ ] If you added any Deprecations or Incompatible Changes, then adding upgrading information to
|
37
|
+
[UPGRADING.md](UPGRADING.md)
|
38
|
+
|
39
|
+
## `VERSION`
|
40
|
+
|
41
|
+
The entries in the [CHANGELOG.md](CHANGELOG.md) can be used to help determine how the `VERSION` should be bumped.
|
42
|
+
|
43
|
+
### Compatible changes
|
44
|
+
|
45
|
+
If the [CHANGELOG.md](CHANGELOG.md) contains only Enhancements, Bug Fixes, and/or Deprecations for the Next Release then
|
46
|
+
increment [`PATCH`](lib/metasploit/erd/version.rb).
|
47
|
+
|
48
|
+
### Incompatible changes
|
49
|
+
|
50
|
+
If the [CHANGELOG.md](CHANGELOG.md) contains any Incompatible Changes for the Next Release, then you can either (1)
|
51
|
+
decide to remain pre-1.0.0 or (2) advance to 1.0.0.
|
52
|
+
|
53
|
+
1. To remain pre-1..0.0, then increment [`MINOR`](lib/metasploit/erd/version.rb) and reset [`PATCH`](lib/metasploit/erd/version.rb) to `0`.
|
54
|
+
2. To advance to 1.0.0, increment [`MAJOR`](lib/metasploit/erd/version.rb) and reset [`MINOR`](lib/metasploit/erd/version.rb and [`PATCH`](lib/metasploit/erd/version.rb) to `0`.
|
55
|
+
|
56
|
+
## Setup [CHANGELOG.md](CHANGELOG.md) for next release
|
57
|
+
|
58
|
+
- [ ] Change `Next Release` section name at the top of [CHANGELOG.md](CHANGELOG.md) to match the current `VERSION`.
|
59
|
+
- [ ] Add a new `Next Release` section above the `VERSION`'s section you just renamed:
|
60
|
+
<pre>
|
61
|
+
# Next Release
|
62
|
+
|
63
|
+
* Enhancements
|
64
|
+
* Bug Fixes
|
65
|
+
* Deprecations
|
66
|
+
* Incompatible Changes
|
67
|
+
</pre>
|
68
|
+
|
69
|
+
## Release to rubygems.org
|
70
|
+
|
71
|
+
## ruby-2.1
|
72
|
+
- [ ] `rvm use ruby-2.1@metasploit-erd`
|
73
|
+
- [ ] `rm Gemfile.lock`
|
74
|
+
- [ ] `bundle install`
|
75
|
+
- [ ] `rake release`
|
76
|
+
```
|
77
|
+
|
78
|
+
### Downstream dependencies
|
79
|
+
|
80
|
+
There are currently no known downstream dependencies
|
data/Rakefile
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'bundler/setup'
|
2
3
|
require "rspec/core/rake_task"
|
3
4
|
|
4
|
-
require 'yard'
|
5
|
-
load 'tasks/yard.rake'
|
6
|
-
|
7
5
|
RSpec::Core::RakeTask.new(:spec)
|
8
6
|
|
9
7
|
task :default => :spec
|
8
|
+
|
9
|
+
# Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
|
10
|
+
gem_specification = Gem::Specification.find_all_by_name('metasploit-yard').first
|
11
|
+
|
12
|
+
Dir[File.join(gem_specification.gem_dir, 'lib', 'tasks', '**', '*.rake')].each do |rake|
|
13
|
+
load rake
|
14
|
+
end
|
data/UPGRADING.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
No Deprecations or Incompatible Changes have been introduced at this time
|
@@ -21,9 +21,9 @@ class Metasploit::ERD::Cluster
|
|
21
21
|
|
22
22
|
class_entity = Metasploit::ERD::Entity::Class.new(klass)
|
23
23
|
|
24
|
-
class_entity.class_set.each do |
|
25
|
-
unless visited_class_set.include?
|
26
|
-
class_queue <<
|
24
|
+
class_entity.class_set.each do |set_class|
|
25
|
+
unless visited_class_set.include? set_class
|
26
|
+
class_queue << set_class
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -2,18 +2,29 @@ module Metasploit
|
|
2
2
|
module ERD
|
3
3
|
# Holds components of {VERSION} as defined by {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0}.
|
4
4
|
module Version
|
5
|
+
#
|
6
|
+
# CONSTANTS
|
7
|
+
#
|
8
|
+
|
5
9
|
# The major version number.
|
6
10
|
MAJOR = 0
|
7
11
|
# The minor version number, scoped to the {MAJOR} version number.
|
8
|
-
MINOR =
|
9
|
-
# The patch number, scoped to the {MINOR} version
|
10
|
-
PATCH =
|
12
|
+
MINOR = 1
|
13
|
+
# The patch number, scoped to the {MAJOR} and {MINOR} version numbers.
|
14
|
+
PATCH = 0
|
15
|
+
|
16
|
+
#
|
17
|
+
# Module Methods
|
18
|
+
#
|
11
19
|
|
12
|
-
# The full version string, including the {MAJOR},
|
20
|
+
# The full version string, including the {Metasploit::ERD::Version::MAJOR},
|
21
|
+
# {Metasploit::ERD::Version::MINOR}, {Metasploit::ERD::Version::PATCH}, and optionally, the
|
22
|
+
# `Metasploit::ERD::Version::PRERELEASE` in the
|
13
23
|
# {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
|
14
24
|
#
|
15
|
-
# @return [String] '{MAJOR}.{MINOR}.{PATCH}'
|
16
|
-
#
|
25
|
+
# @return [String] '{Metasploit::ERD::Version::MAJOR}.{Metasploit::ERD::Version::MINOR}.{Metasploit::ERD::Version::PATCH}'
|
26
|
+
# on master. '{Metasploit::ERD::Version::MAJOR}.{Metasploit::ERD::Version::MINOR}.{Metasploit::ERD::Version::PATCH}-PRERELEASE'
|
27
|
+
# on any branch other than master.
|
17
28
|
def self.full
|
18
29
|
version = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
19
30
|
|
@@ -23,9 +34,24 @@ module Metasploit
|
|
23
34
|
|
24
35
|
version
|
25
36
|
end
|
37
|
+
|
38
|
+
# The full gem version string, including the {Metasploit::ERD::Version::MAJOR},
|
39
|
+
# {Metasploit::ERD::Version::MINOR}, {Metasploit::ERD::Version::PATCH}, and optionally, the
|
40
|
+
# `Metasploit::ERD::Version::PRERELEASE` in the
|
41
|
+
# {http://guides.rubygems.org/specification-reference/#version RubyGems versioning} format.
|
42
|
+
#
|
43
|
+
# @return [String] '{Metasploit::ERD::Version::MAJOR}.{Metasploit::ERD::Version::MINOR}.{Metasploit::ERD::Version::PATCH}'
|
44
|
+
# on master. '{Metasploit::ERD::Version::MAJOR}.{Metasploit::ERD::Version::MINOR}.{Metasploit::ERD::Version::PATCH}.PRERELEASE'
|
45
|
+
# on any branch other than master.
|
46
|
+
def self.gem
|
47
|
+
full.gsub('-', '.pre.')
|
48
|
+
end
|
26
49
|
end
|
27
50
|
|
28
|
-
#
|
51
|
+
# (see Version.gem)
|
52
|
+
GEM_VERSION = Version.gem
|
53
|
+
|
54
|
+
# (see Version.full)
|
29
55
|
VERSION = Version.full
|
30
56
|
end
|
31
57
|
end
|
data/metasploit-erd.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'metasploit/erd/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'metasploit-erd'
|
8
|
-
spec.version = Metasploit::ERD::
|
8
|
+
spec.version = Metasploit::ERD::GEM_VERSION
|
9
9
|
spec.authors = ['Luke Imhoff']
|
10
10
|
spec.email = ['luke_imhoff@rapid7.com']
|
11
11
|
spec.summary = 'Extensions to rails-erd to find clusters of models to generate subdomains specific to each model'
|
@@ -19,9 +19,13 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
+
spec.required_ruby_version = '>= 2.1'
|
23
|
+
|
22
24
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
25
|
+
spec.add_development_dependency 'metasploit-version', '~> 0.1.3'
|
26
|
+
spec.add_development_dependency 'metasploit-yard', '~> 1.0'
|
23
27
|
spec.add_development_dependency 'rake', '~> 10.3'
|
24
|
-
spec.add_development_dependency 'rspec', '~> 2
|
28
|
+
spec.add_development_dependency 'rspec', '~> 3.2'
|
25
29
|
|
26
30
|
# restrict from rails 4.0 to be compatible with rest of metasploit ecosystem.
|
27
31
|
# @todo Update to work with rails 4 (MSP-9836)
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Metasploit::ERD::Cluster do
|
1
|
+
RSpec.describe Metasploit::ERD::Cluster do
|
4
2
|
include_context 'ActiveRecord::Base connection'
|
5
3
|
include_context 'ActiveRecord::Base.descendants cleaner'
|
6
4
|
|
@@ -151,8 +149,8 @@ describe Metasploit::ERD::Cluster do
|
|
151
149
|
[]
|
152
150
|
end
|
153
151
|
|
154
|
-
it {
|
155
|
-
it {
|
152
|
+
it { is_expected.to be_a Set }
|
153
|
+
it { is_expected.to be_empty }
|
156
154
|
end
|
157
155
|
end
|
158
156
|
end
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Metasploit::ERD::Diagram do
|
1
|
+
RSpec.describe Metasploit::ERD::Diagram do
|
4
2
|
subject(:diagram) {
|
5
3
|
described_class.new(*arguments)
|
6
4
|
}
|
@@ -15,7 +13,7 @@ describe Metasploit::ERD::Diagram do
|
|
15
13
|
RailsERD::Domain.new
|
16
14
|
}
|
17
15
|
|
18
|
-
it {
|
16
|
+
it { is_expected.to be_a RailsERD::Diagram::Graphviz }
|
19
17
|
|
20
18
|
context 'CONSTANTS' do
|
21
19
|
context 'ATTRIBUTES' do
|
@@ -23,10 +21,10 @@ describe Metasploit::ERD::Diagram do
|
|
23
21
|
described_class::ATTRIBUTES
|
24
22
|
}
|
25
23
|
|
26
|
-
it {
|
27
|
-
it {
|
28
|
-
it {
|
29
|
-
it {
|
24
|
+
it { is_expected.to include :content }
|
25
|
+
it { is_expected.to include :foreign_keys }
|
26
|
+
it { is_expected.to include :primary_keys }
|
27
|
+
it { is_expected.to include :timestamps }
|
30
28
|
end
|
31
29
|
|
32
30
|
context 'DEFAULT_OPTIONS' do
|
@@ -100,7 +98,7 @@ describe Metasploit::ERD::Diagram do
|
|
100
98
|
described_class::FILETYPE
|
101
99
|
}
|
102
100
|
|
103
|
-
it {
|
101
|
+
it { is_expected.to eq(:png) }
|
104
102
|
end
|
105
103
|
|
106
104
|
context 'INDIRECT' do
|
@@ -108,7 +106,7 @@ describe Metasploit::ERD::Diagram do
|
|
108
106
|
described_class::INDIRECT
|
109
107
|
}
|
110
108
|
|
111
|
-
it {
|
109
|
+
it { is_expected.to eq(false) }
|
112
110
|
end
|
113
111
|
|
114
112
|
context 'INHERITANCE' do
|
@@ -116,7 +114,7 @@ describe Metasploit::ERD::Diagram do
|
|
116
114
|
described_class::INHERITANCE
|
117
115
|
}
|
118
116
|
|
119
|
-
it {
|
117
|
+
it { is_expected.to eq(true) }
|
120
118
|
end
|
121
119
|
|
122
120
|
context 'NOTATION' do
|
@@ -124,7 +122,7 @@ describe Metasploit::ERD::Diagram do
|
|
124
122
|
described_class::NOTATION
|
125
123
|
}
|
126
124
|
|
127
|
-
it {
|
125
|
+
it { is_expected.to eq(:crowsfoot) }
|
128
126
|
end
|
129
127
|
|
130
128
|
context 'POLYMORPHISM' do
|
@@ -132,7 +130,7 @@ describe Metasploit::ERD::Diagram do
|
|
132
130
|
described_class::POLYMORPHISM
|
133
131
|
}
|
134
132
|
|
135
|
-
it {
|
133
|
+
it { is_expected.to eq(true) }
|
136
134
|
end
|
137
135
|
end
|
138
136
|
|
@@ -146,7 +144,7 @@ describe Metasploit::ERD::Diagram do
|
|
146
144
|
callbacks[:each_entity]
|
147
145
|
}
|
148
146
|
|
149
|
-
it {
|
147
|
+
it { is_expected.to_not be_nil }
|
150
148
|
|
151
149
|
it 'uses RailsERD::Diagram::Graphviz.callbacks[:each_entity]' do
|
152
150
|
expect(each_entity).to eq(RailsERD::Diagram::Graphviz.send(:callbacks)[:each_entity])
|
@@ -158,7 +156,7 @@ describe Metasploit::ERD::Diagram do
|
|
158
156
|
callbacks[:each_relationship]
|
159
157
|
}
|
160
158
|
|
161
|
-
it {
|
159
|
+
it { is_expected.to_not be_nil }
|
162
160
|
|
163
161
|
it 'uses RailsERD::Diagram::Graphviz.callbacks[:each_relationship]' do
|
164
162
|
expect(each_relationship).to eq(RailsERD::Diagram::Graphviz.send(:callbacks)[:each_relationship])
|
@@ -170,7 +168,7 @@ describe Metasploit::ERD::Diagram do
|
|
170
168
|
callbacks[:each_specialization]
|
171
169
|
}
|
172
170
|
|
173
|
-
it {
|
171
|
+
it { is_expected.to_not be_nil }
|
174
172
|
|
175
173
|
it 'uses RailsERD::Diagram::Graphviz.callbacks[:each_specialization]' do
|
176
174
|
expect(each_specialization).to eq(RailsERD::Diagram::Graphviz.send(:callbacks)[:each_specialization])
|
@@ -182,7 +180,7 @@ describe Metasploit::ERD::Diagram do
|
|
182
180
|
callbacks[:save]
|
183
181
|
}
|
184
182
|
|
185
|
-
it {
|
183
|
+
it { is_expected.to_not be_nil }
|
186
184
|
|
187
185
|
it 'extends RailsERD::Diagram::Graphviz.callbacks[:save]' do
|
188
186
|
expect(save).not_to eq(RailsERD::Diagram::Graphviz.send(:callbacks)[:save])
|
@@ -194,7 +192,7 @@ describe Metasploit::ERD::Diagram do
|
|
194
192
|
callbacks[:setup]
|
195
193
|
}
|
196
194
|
|
197
|
-
it {
|
195
|
+
it { is_expected.to_not be_nil }
|
198
196
|
|
199
197
|
it 'uses RailsERD::Diagram::Graphviz.callbacks[:setup]' do
|
200
198
|
expect(setup).to eq(RailsERD::Diagram::Graphviz.send(:callbacks)[:setup])
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Metasploit::ERD::Entity::Class do
|
1
|
+
RSpec.describe Metasploit::ERD::Entity::Class do
|
4
2
|
include_context 'ActiveRecord::Base.descendants cleaner'
|
5
3
|
|
6
4
|
subject(:class_entity) {
|
@@ -116,7 +114,7 @@ describe Metasploit::ERD::Entity::Class do
|
|
116
114
|
end
|
117
115
|
|
118
116
|
it 'includes class once' do
|
119
|
-
expect(class_set).to
|
117
|
+
expect(class_set.length).to eq(1)
|
120
118
|
expect(class_set).to include(target)
|
121
119
|
end
|
122
120
|
end
|
@@ -208,7 +206,7 @@ describe Metasploit::ERD::Entity::Class do
|
|
208
206
|
end
|
209
207
|
|
210
208
|
it 'includes belongs_to target classes' do
|
211
|
-
expect(class_set).to include(belongs_to_target)
|
209
|
+
expect(class_set.map(&:name)).to include(belongs_to_target.name)
|
212
210
|
end
|
213
211
|
|
214
212
|
it 'does not include has_many target classes' do
|
@@ -218,7 +216,7 @@ describe Metasploit::ERD::Entity::Class do
|
|
218
216
|
end
|
219
217
|
|
220
218
|
context 'without belongs_to associations' do
|
221
|
-
it {
|
219
|
+
it { is_expected.to be_empty }
|
222
220
|
end
|
223
221
|
end
|
224
222
|
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Metasploit::ERD::Entity::Namespace do
|
1
|
+
RSpec.describe Metasploit::ERD::Entity::Namespace do
|
4
2
|
include_context 'ActiveRecord::Base.descendants cleaner'
|
5
3
|
|
6
4
|
subject(:namespace_entity) {
|
@@ -107,7 +105,7 @@ describe Metasploit::ERD::Entity::Namespace do
|
|
107
105
|
end
|
108
106
|
|
109
107
|
context 'without ActiveRecord::Base descendants' do
|
110
|
-
it {
|
108
|
+
it { is_expected.to be_empty }
|
111
109
|
end
|
112
110
|
end
|
113
111
|
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Metasploit::ERD::Relationship do
|
1
|
+
RSpec.describe Metasploit::ERD::Relationship do
|
4
2
|
include_context 'ActiveRecord::Base connection'
|
5
3
|
include_context 'ActiveRecord::Base.descendants cleaner'
|
6
4
|
|
@@ -75,7 +73,7 @@ describe Metasploit::ERD::Relationship do
|
|
75
73
|
end
|
76
74
|
end
|
77
75
|
|
78
|
-
it {
|
76
|
+
it { is_expected.to be_a Set }
|
79
77
|
|
80
78
|
it 'includes association.klass' do
|
81
79
|
expect(class_set).to include(association.klass)
|
@@ -137,7 +135,7 @@ describe Metasploit::ERD::Relationship do
|
|
137
135
|
end
|
138
136
|
end
|
139
137
|
|
140
|
-
it {
|
138
|
+
it { is_expected.to be_a Set }
|
141
139
|
|
142
140
|
it 'includes all classes that have has_many <inverse>, as: <reflection.name>' do
|
143
141
|
expect(class_set).to eq(Set.new(things))
|
@@ -225,7 +223,7 @@ describe Metasploit::ERD::Relationship do
|
|
225
223
|
end
|
226
224
|
end
|
227
225
|
|
228
|
-
it {
|
226
|
+
it { is_expected.to be_a Set }
|
229
227
|
|
230
228
|
context 'with has_many as: <association.name>' do
|
231
229
|
it 'includes classes' do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'bundler/setup'
|
2
2
|
|
3
3
|
# require before 'metasploit/erd' so coverage is shown for files required by 'metasploit/erd'
|
4
4
|
require 'simplecov'
|
@@ -14,13 +14,95 @@ else
|
|
14
14
|
]
|
15
15
|
end
|
16
16
|
|
17
|
+
#
|
18
|
+
# Gems
|
19
|
+
#
|
20
|
+
|
21
|
+
require 'metasploit/version'
|
22
|
+
|
23
|
+
#
|
24
|
+
# Project
|
25
|
+
#
|
26
|
+
|
17
27
|
require 'metasploit/erd'
|
18
28
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
29
|
+
roots = []
|
30
|
+
roots << Pathname.new(__FILE__).realpath.parent.parent.to_path
|
31
|
+
|
32
|
+
# Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
|
33
|
+
gem_specification = Gem::Specification.find_all_by_name('metasploit-version').first
|
34
|
+
roots << gem_specification.gem_dir
|
35
|
+
|
36
|
+
roots.each do |root|
|
37
|
+
Dir[File.join(root, 'spec', 'support', '**', '*.rb')].each do |f|
|
38
|
+
require f
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
RSpec.configure do |config|
|
43
|
+
# rspec-expectations config goes here. You can use an alternate
|
44
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
45
|
+
# assertions if you prefer.
|
46
|
+
config.expect_with :rspec do |expectations|
|
47
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
48
|
+
# and `failure_message` of custom matchers include text for helper methods
|
49
|
+
# defined using `chain`, e.g.:
|
50
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
51
|
+
# # => "be bigger than 2 and smaller than 4"
|
52
|
+
# ...rather than:
|
53
|
+
# # => "be bigger than 2"
|
54
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
55
|
+
expectations.syntax = :expect
|
56
|
+
end
|
57
|
+
|
58
|
+
config.expose_dsl_globally = false
|
59
|
+
|
60
|
+
# These two settings work together to allow you to limit a spec run
|
61
|
+
# to individual examples or groups you care about by tagging them with
|
62
|
+
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
63
|
+
# get run.
|
64
|
+
config.filter_run :focus
|
65
|
+
config.run_all_when_everything_filtered = true
|
66
|
+
|
67
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
68
|
+
# file, and it's useful to allow more verbose output when running an
|
69
|
+
# individual spec file.
|
70
|
+
if config.files_to_run.one?
|
71
|
+
# Use the documentation formatter for detailed output,
|
72
|
+
# unless a formatter has already been configured
|
73
|
+
# (e.g. via a command-line flag).
|
74
|
+
config.default_formatter = 'doc'
|
75
|
+
end
|
76
|
+
|
77
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
78
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
79
|
+
config.mock_with :rspec do |mocks|
|
80
|
+
mocks.syntax = :expect
|
81
|
+
mocks.patch_marshal_to_support_partial_doubles = false
|
82
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
83
|
+
# a real object. This is generally recommended, and will default to
|
84
|
+
# `true` in RSpec 4.
|
85
|
+
mocks.verify_partial_doubles = true
|
86
|
+
end
|
87
|
+
|
88
|
+
# Run specs in random order to surface order dependencies. If you find an
|
89
|
+
# order dependency and want to debug it, you can fix the order by providing
|
90
|
+
# the seed, which is printed after each run.
|
91
|
+
# --seed 1234
|
92
|
+
config.order = :random
|
93
|
+
|
94
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
95
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
96
|
+
# test failures related to randomization by passing the same `--seed` value
|
97
|
+
# as the one that triggered the failure.
|
98
|
+
Kernel.srand config.seed
|
99
|
+
|
100
|
+
# Print the 10 slowest examples and example groups at the
|
101
|
+
# end of the spec run, to help surface which specs are running
|
102
|
+
# particularly slow.
|
103
|
+
config.profile_examples = 10
|
23
104
|
|
24
|
-
|
25
|
-
|
105
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
106
|
+
# be too noisy due to issues in dependencies.
|
107
|
+
config.warnings = true
|
26
108
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
shared_examples_for 'Metasploit::ERD::Clusterable' do
|
1
|
+
RSpec.shared_examples_for 'Metasploit::ERD::Clusterable' do
|
2
2
|
include_context 'ActiveRecord::Base connection'
|
3
3
|
|
4
4
|
#
|
@@ -68,7 +68,7 @@ shared_examples_for 'Metasploit::ERD::Clusterable' do
|
|
68
68
|
[]
|
69
69
|
}
|
70
70
|
|
71
|
-
it {
|
71
|
+
it { is_expected.to be_a Metasploit::ERD::Diagram }
|
72
72
|
|
73
73
|
context 'Metasploit::ERD::Diagram#create' do
|
74
74
|
subject(:create) {
|
@@ -256,7 +256,7 @@ shared_examples_for 'Metasploit::ERD::Clusterable' do
|
|
256
256
|
options[:title]
|
257
257
|
}
|
258
258
|
|
259
|
-
it {
|
259
|
+
it { is_expected.to be_a String }
|
260
260
|
end
|
261
261
|
end
|
262
262
|
end
|
metadata
CHANGED
@@ -1,109 +1,137 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit-erd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Imhoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: metasploit-version
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.3
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: metasploit-yard
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rake
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
|
-
- - ~>
|
59
|
+
- - "~>"
|
32
60
|
- !ruby/object:Gem::Version
|
33
61
|
version: '10.3'
|
34
62
|
type: :development
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
|
-
- - ~>
|
66
|
+
- - "~>"
|
39
67
|
- !ruby/object:Gem::Version
|
40
68
|
version: '10.3'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rspec
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - ~>
|
73
|
+
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2
|
75
|
+
version: '3.2'
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - ~>
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2
|
82
|
+
version: '3.2'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: activerecord
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- -
|
87
|
+
- - ">="
|
60
88
|
- !ruby/object:Gem::Version
|
61
89
|
version: '3.2'
|
62
|
-
- - <
|
90
|
+
- - "<"
|
63
91
|
- !ruby/object:Gem::Version
|
64
92
|
version: 4.0.0
|
65
93
|
type: :runtime
|
66
94
|
prerelease: false
|
67
95
|
version_requirements: !ruby/object:Gem::Requirement
|
68
96
|
requirements:
|
69
|
-
- -
|
97
|
+
- - ">="
|
70
98
|
- !ruby/object:Gem::Version
|
71
99
|
version: '3.2'
|
72
|
-
- - <
|
100
|
+
- - "<"
|
73
101
|
- !ruby/object:Gem::Version
|
74
102
|
version: 4.0.0
|
75
103
|
- !ruby/object:Gem::Dependency
|
76
104
|
name: activesupport
|
77
105
|
requirement: !ruby/object:Gem::Requirement
|
78
106
|
requirements:
|
79
|
-
- -
|
107
|
+
- - ">="
|
80
108
|
- !ruby/object:Gem::Version
|
81
109
|
version: '3.2'
|
82
|
-
- - <
|
110
|
+
- - "<"
|
83
111
|
- !ruby/object:Gem::Version
|
84
112
|
version: 4.0.0
|
85
113
|
type: :runtime
|
86
114
|
prerelease: false
|
87
115
|
version_requirements: !ruby/object:Gem::Requirement
|
88
116
|
requirements:
|
89
|
-
- -
|
117
|
+
- - ">="
|
90
118
|
- !ruby/object:Gem::Version
|
91
119
|
version: '3.2'
|
92
|
-
- - <
|
120
|
+
- - "<"
|
93
121
|
- !ruby/object:Gem::Version
|
94
122
|
version: 4.0.0
|
95
123
|
- !ruby/object:Gem::Dependency
|
96
124
|
name: rails-erd
|
97
125
|
requirement: !ruby/object:Gem::Requirement
|
98
126
|
requirements:
|
99
|
-
- - ~>
|
127
|
+
- - "~>"
|
100
128
|
- !ruby/object:Gem::Version
|
101
129
|
version: '1.1'
|
102
130
|
type: :runtime
|
103
131
|
prerelease: false
|
104
132
|
version_requirements: !ruby/object:Gem::Requirement
|
105
133
|
requirements:
|
106
|
-
- - ~>
|
134
|
+
- - "~>"
|
107
135
|
- !ruby/object:Gem::Version
|
108
136
|
version: '1.1'
|
109
137
|
description: Traces the belongs_to associations on ActiveRecord::Base descendants
|
@@ -115,16 +143,20 @@ executables: []
|
|
115
143
|
extensions: []
|
116
144
|
extra_rdoc_files: []
|
117
145
|
files:
|
118
|
-
- .coveralls.yml
|
119
|
-
- .gitignore
|
120
|
-
- .rspec
|
121
|
-
- .simplecov
|
122
|
-
- .travis.yml
|
123
|
-
- .yardopts
|
146
|
+
- ".coveralls.yml"
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rspec"
|
149
|
+
- ".simplecov"
|
150
|
+
- ".travis.yml"
|
151
|
+
- ".yardopts"
|
152
|
+
- CHANGELOG.md
|
153
|
+
- CONTRIBUTING.md
|
124
154
|
- Gemfile
|
125
155
|
- LICENSE
|
126
156
|
- README.md
|
157
|
+
- RELEASING.md
|
127
158
|
- Rakefile
|
159
|
+
- UPGRADING.md
|
128
160
|
- lib/metasploit/erd.rb
|
129
161
|
- lib/metasploit/erd/cluster.rb
|
130
162
|
- lib/metasploit/erd/clusterable.rb
|
@@ -134,15 +166,14 @@ files:
|
|
134
166
|
- lib/metasploit/erd/entity/namespace.rb
|
135
167
|
- lib/metasploit/erd/relationship.rb
|
136
168
|
- lib/metasploit/erd/version.rb
|
137
|
-
- lib/tasks/yard.rake
|
138
169
|
- metasploit-erd.gemspec
|
170
|
+
- spec/lib/metasploit/erd/version_spec.rb
|
171
|
+
- spec/lib/metasploit/erd_spec.rb
|
139
172
|
- spec/metasploit/erd/cluster_spec.rb
|
140
173
|
- spec/metasploit/erd/diagram_spec.rb
|
141
174
|
- spec/metasploit/erd/entity/class_spec.rb
|
142
175
|
- spec/metasploit/erd/entity/namespace_spec.rb
|
143
176
|
- spec/metasploit/erd/relationship_spec.rb
|
144
|
-
- spec/metasploit/erd/version_spec.rb
|
145
|
-
- spec/metasploit/erd_spec.rb
|
146
177
|
- spec/spec_helper.rb
|
147
178
|
- spec/support/shared/contexts/active_record_base_connection.rb
|
148
179
|
- spec/support/shared/contexts/active_record_base_descendants_cleaner.rb
|
@@ -157,29 +188,29 @@ require_paths:
|
|
157
188
|
- lib
|
158
189
|
required_ruby_version: !ruby/object:Gem::Requirement
|
159
190
|
requirements:
|
160
|
-
- -
|
191
|
+
- - ">="
|
161
192
|
- !ruby/object:Gem::Version
|
162
|
-
version: '
|
193
|
+
version: '2.1'
|
163
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
195
|
requirements:
|
165
|
-
- -
|
196
|
+
- - ">="
|
166
197
|
- !ruby/object:Gem::Version
|
167
198
|
version: '0'
|
168
199
|
requirements: []
|
169
200
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.4.3
|
171
202
|
signing_key:
|
172
203
|
specification_version: 4
|
173
204
|
summary: Extensions to rails-erd to find clusters of models to generate subdomains
|
174
205
|
specific to each model
|
175
206
|
test_files:
|
207
|
+
- spec/lib/metasploit/erd/version_spec.rb
|
208
|
+
- spec/lib/metasploit/erd_spec.rb
|
176
209
|
- spec/metasploit/erd/cluster_spec.rb
|
177
210
|
- spec/metasploit/erd/diagram_spec.rb
|
178
211
|
- spec/metasploit/erd/entity/class_spec.rb
|
179
212
|
- spec/metasploit/erd/entity/namespace_spec.rb
|
180
213
|
- spec/metasploit/erd/relationship_spec.rb
|
181
|
-
- spec/metasploit/erd/version_spec.rb
|
182
|
-
- spec/metasploit/erd_spec.rb
|
183
214
|
- spec/spec_helper.rb
|
184
215
|
- spec/support/shared/contexts/active_record_base_connection.rb
|
185
216
|
- spec/support/shared/contexts/active_record_base_descendants_cleaner.rb
|
data/lib/tasks/yard.rake
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# @note All options not specific to any given rake task should go in the .yardopts file so they are available to both
|
2
|
-
# the below rake tasks and when invoking `yard` from the command line
|
3
|
-
|
4
|
-
if defined? YARD
|
5
|
-
namespace :yard do
|
6
|
-
YARD::Rake::YardocTask.new(:doc) do |t|
|
7
|
-
# --no-stats here as 'stats' task called after will print fuller stats
|
8
|
-
t.options = ['--no-stats']
|
9
|
-
|
10
|
-
t.after = Proc.new {
|
11
|
-
Rake::Task['yard:stats'].execute
|
12
|
-
}
|
13
|
-
end
|
14
|
-
|
15
|
-
task :doc
|
16
|
-
|
17
|
-
desc "Shows stats for YARD Documentation including listing undocumented modules, classes, constants, and methods"
|
18
|
-
task :stats do
|
19
|
-
stats = YARD::CLI::Stats.new
|
20
|
-
stats.run('--compact', '--list-undoc')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# @todo Figure out how to just clone description from yard:doc
|
25
|
-
desc "Generate YARD documentation"
|
26
|
-
# allow calling namespace to as a task that goes to default task for namespace
|
27
|
-
task :yard => ['yard:doc']
|
28
|
-
|
29
|
-
task :default => :yard
|
30
|
-
else
|
31
|
-
puts 'YARD not defined, so yard tasks cannot be setup.'
|
32
|
-
end
|
@@ -1,125 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'active_support/core_ext/object/blank'
|
4
|
-
|
5
|
-
describe Metasploit::ERD::Version do
|
6
|
-
context 'CONSTANTS' do
|
7
|
-
context 'MAJOR' do
|
8
|
-
subject(:major) do
|
9
|
-
described_class::MAJOR
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'is 0 because the API is not locked yet' do
|
13
|
-
expect(major).to eq(0)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'MINOR' do
|
18
|
-
subject(:minor) do
|
19
|
-
described_class::MINOR
|
20
|
-
end
|
21
|
-
|
22
|
-
it { should be_a Integer }
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'PATCH' do
|
26
|
-
subject(:patch) do
|
27
|
-
described_class::PATCH
|
28
|
-
end
|
29
|
-
|
30
|
-
it { should be_a Integer }
|
31
|
-
end
|
32
|
-
|
33
|
-
pull_request = ENV['TRAVIS_PULL_REQUEST']
|
34
|
-
|
35
|
-
# a pull request cannot check PRERELEASE because it will be tested in the target branch, but the source itself
|
36
|
-
# is from the source branch and so has the source branch PRERELEASE.
|
37
|
-
#
|
38
|
-
# PRERELEASE can only be set appropriately for a merge by merging to the target branch and then updating PRERELEASE
|
39
|
-
# on the target branch before committing and/or pushing to github and travis-ci.
|
40
|
-
if pull_request.nil? || pull_request == 'false'
|
41
|
-
context 'PREPRELEASE' do
|
42
|
-
subject(:prerelease) do
|
43
|
-
described_class::PRERELEASE
|
44
|
-
end
|
45
|
-
|
46
|
-
branch = ENV['TRAVIS_BRANCH']
|
47
|
-
|
48
|
-
if branch.blank?
|
49
|
-
branch = `git rev-parse --abbrev-ref HEAD`.strip
|
50
|
-
end
|
51
|
-
|
52
|
-
if branch == 'master'
|
53
|
-
it 'does not have a PRERELEASE' do
|
54
|
-
expect(defined? described_class::PRERELEASE).to be_nil
|
55
|
-
end
|
56
|
-
else
|
57
|
-
feature_regex = /(feature|staging)\/(?<prerelease>.*)/
|
58
|
-
match = branch.match(feature_regex)
|
59
|
-
|
60
|
-
if match
|
61
|
-
it 'matches the branch relative name' do
|
62
|
-
expect(prerelease).to eq(match[:prerelease])
|
63
|
-
end
|
64
|
-
else
|
65
|
-
it 'has a abbreviated reference that can be parsed for prerelease' do
|
66
|
-
fail "Do not know how to parse #{branch.inspect} for PRERELEASE"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
context 'full' do
|
75
|
-
subject(:full) do
|
76
|
-
described_class.full
|
77
|
-
end
|
78
|
-
|
79
|
-
#
|
80
|
-
# lets
|
81
|
-
#
|
82
|
-
|
83
|
-
let(:major) do
|
84
|
-
1
|
85
|
-
end
|
86
|
-
|
87
|
-
let(:minor) do
|
88
|
-
2
|
89
|
-
end
|
90
|
-
|
91
|
-
let(:patch) do
|
92
|
-
3
|
93
|
-
end
|
94
|
-
|
95
|
-
before(:each) do
|
96
|
-
stub_const("#{described_class}::MAJOR", major)
|
97
|
-
stub_const("#{described_class}::MINOR", minor)
|
98
|
-
stub_const("#{described_class}::PATCH", patch)
|
99
|
-
end
|
100
|
-
|
101
|
-
context 'with PRERELEASE' do
|
102
|
-
let(:prerelease) do
|
103
|
-
'prerelease'
|
104
|
-
end
|
105
|
-
|
106
|
-
before(:each) do
|
107
|
-
stub_const("#{described_class}::PRERELEASE", prerelease)
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'is <major>.<minor>.<patch>-<prerelease>' do
|
111
|
-
expect(full).to eq("#{major}.#{minor}.#{patch}-#{prerelease}")
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
context 'without PRERELEASE' do
|
116
|
-
before(:each) do
|
117
|
-
hide_const("#{described_class}::PRERELEASE")
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'is <major>.<minor>.<patch>' do
|
121
|
-
expect(full).to eq("#{major}.#{minor}.#{patch}")
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
data/spec/metasploit/erd_spec.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Metasploit::ERD do
|
4
|
-
context 'CONSTANTS' do
|
5
|
-
context 'VERSION' do
|
6
|
-
subject(:version) do
|
7
|
-
described_class::VERSION
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'is Metasploit::ERD::Version.full' do
|
11
|
-
expect(version).to eq(Metasploit::ERD::Version.full)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|