manageiq-cross_repo 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bf9a2849a682e80a6099be954de0a7f2a1e3f019b3b04018a5a18aeeec68f905
4
+ data.tar.gz: 6308f46b490d5af9a923929bd706f9a41e057cd5cbefef8214db7b44f1d8978c
5
+ SHA512:
6
+ metadata.gz: 1bf15c4fe299adab8a79a0bc37afd619032c2a868adf328db72a9eec4d918f435496872f182349d675347d14220248bdc99399059f8a62af4113433117c4118b
7
+ data.tar.gz: a910789c67868604ddc3fe304c7268952d474e36d81f120b39553c8dce2d23540984f319dd87f28cdd5dd4d80cdcd7fe01b4d44a97e9887b95b2ea00b4c9cf32
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
@@ -0,0 +1,15 @@
1
+ dist: xenial
2
+ language: ruby
3
+ rvm:
4
+ - 2.5.5
5
+ cache:
6
+ bundler: true
7
+ addons:
8
+ postgresql: '10'
9
+ matrix:
10
+ fast_finish: true
11
+ env:
12
+ global:
13
+ - TEST_REPO=
14
+ - CORE_REPO=
15
+ - GEM_REPOS=
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ plugin 'bundler-inject'
4
+ require File.join(Bundler::Plugin.index.load_paths("bundler-inject")[0], "bundler-inject") rescue nil
5
+
6
+ # Specify your gem's dependencies in manageiq-cross_repo.gemspec
7
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 ManageIQ Authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ # ManageIQ cross-repository testing framework
2
+
3
+ ```
4
+ Usage: manageiq-cross_repo --test-repo repo [--core-repo repo] [--gem-repos repo1 repo2 ...]
5
+
6
+ manageiq-cross_repo is a cross repository test framework for the ManageIQ project.
7
+ Its purpose is to allow running multiple repository tests suites in the context
8
+ of other repositories and is particularly useful when trying to determine if the
9
+ changes you are making as a developer will affect the other test suites.
10
+
11
+ Options:
12
+ -t, --test-repo=<s> This is the repository which will be tested.
13
+ Can also be passed as a TEST_REPO environment variable.
14
+ (default: ManageIQ/manageiq@master)
15
+ -c, --core-repo=<s> Used to specify a different core branch in which plugin tests will run.
16
+ If --test-repo is a plugin, defaults to ManageIQ/manageiq@master.
17
+ If --test-repo is a core repo, this option is not allowed.
18
+ Can also be passed as a CORE_REPO environment variable.
19
+ -g, --gem-repos=<s+> Optional, a list of other plugin/gem overrides which are needed to run the tests.
20
+ Can also be passed as a GEM_REPOS environment variable.
21
+
22
+ -v, --version Print version and exit
23
+ -h, --help Show this message
24
+
25
+ Repo Formats:
26
+ Remote: [org/]repository[@ref|#pr]
27
+ org: Optional, defaults to ManageIQ.
28
+ repository: Required, the name of the repository.
29
+ @ref: Optional, defaults to master if #pr not set. Can be a branch, tag, or SHA. Mutually exclusive with #pr.
30
+ #pr: Optional, references a pull-request number. Mutually exclusive with @ref.
31
+
32
+ Local: Either a fully qualified path or a relative path (e.g. /path/to/repo, ~/relative/to/home, ../relative/to/current/dir)
33
+
34
+ Examples:
35
+ # Test a plugin against ManageIQ master
36
+ manageiq-cross_repo --test-repo manageiq-ui-classic
37
+
38
+ # Test a plugin against a ManageIQ SHA
39
+ manageiq-cross_repo --test-repo manageiq-ui-classic --core-repo manageiq@1234abcd
40
+
41
+ # Test a plugin branch
42
+ manageiq-cross_repo --test-repo manageiq-ui-classic@feature
43
+
44
+ # Test a plugin branch from a fork
45
+ manageiq-cross_repo --test-repo johndoe/manageiq-ui-classic@feature
46
+
47
+ # Test a plugin PR
48
+ manageiq-cross_repo --test-repo manageiq-ui-classic#1234
49
+
50
+ # Test a plugin with a set of other plugins
51
+ manageiq-cross_repo --test-repo manageiq-ui-classic --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
52
+
53
+ # Test a plugin branch with a ManageIQ SHA and a set of other plugins
54
+ manageiq-cross_repo --test-repo manageiq-ui-classic@feature --core-repo manageiq@1234abcd --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
55
+
56
+ # Run core tests with ManageIQ master using a gem version
57
+ manageiq-cross_repo --gem-repos johndoe/manageiq-ui-classic@feature
58
+
59
+ # Run core tests for a branch and a set of gems
60
+ manageiq-cross_repo --test-repo johndoe/manageiq@feature --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
61
+ ```
62
+
63
+ ## License
64
+
65
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require "rspec/core/rake_task"
4
+ RSpec::Core::RakeTask.new('spec')
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "manageiq/cross_repo"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+
5
+ require "manageiq-cross_repo"
6
+ require "optimist"
7
+
8
+ opts = Optimist.options do
9
+ usage "--test-repo repo [--core-repo repo] [--gem-repos repo1 repo2 ...]"
10
+
11
+ version "v#{ManageIQ::CrossRepo::VERSION}\n"
12
+
13
+ synopsis <<~EOS.chomp
14
+
15
+ manageiq-cross_repo is a cross repository test framework for the ManageIQ project.
16
+ Its purpose is to allow running multiple repository tests suites in the context
17
+ of other repositories and is particularly useful when trying to determine if the
18
+ changes you are making as a developer will affect the other test suites.
19
+ EOS
20
+
21
+ opt :test_repo, <<~EOS, :type => :string, :default => ENV["TEST_REPO"].presence || "ManageIQ/manageiq@master"
22
+ This is the repository which will be tested.
23
+ Can also be passed as a TEST_REPO environment variable.
24
+ EOS
25
+
26
+ opt :core_repo, <<~EOS, :type => :string, :default => ENV["CORE_REPO"].presence
27
+ Used to specify a different core branch in which plugin tests will run.
28
+ If --test-repo is a plugin, defaults to ManageIQ/manageiq@master.
29
+ If --test-repo is a core repo, this option is not allowed.
30
+ Can also be passed as a CORE_REPO environment variable.
31
+ EOS
32
+
33
+ opt :gem_repos, <<~EOS, :type => :strings, :multi => true, :default => Array(ENV["GEM_REPOS"].presence)
34
+ Optional, a list of other plugin/gem overrides which are needed to run the tests.
35
+ Can also be passed as a GEM_REPOS environment variable.
36
+ EOS
37
+
38
+ # Manually add these so they appear in the right order in the help output
39
+ banner ""
40
+ opt :version, "Print version and exit"
41
+ opt :help, "Show this message"
42
+
43
+ banner <<~EOS.chomp
44
+
45
+ Repo Formats:
46
+ Remote: [org/]repository[@ref|#pr]
47
+ org: Optional, defaults to ManageIQ.
48
+ repository: Required, the name of the repository.
49
+ @ref: Optional, defaults to master if #pr not set. Can be a branch, tag, or SHA. Mutually exclusive with #pr.
50
+ #pr: Optional, references a pull-request number. Mutually exclusive with @ref.
51
+
52
+ Local: Either a fully qualified path or a relative path (e.g. /path/to/repo, ~/relative/to/home, ../relative/to/current/dir)
53
+ EOS
54
+
55
+ banner <<~EOS.chomp
56
+
57
+ Examples:
58
+ # Test a plugin against ManageIQ master
59
+ manageiq-cross_repo --test-repo manageiq-ui-classic
60
+
61
+ # Test a plugin against a ManageIQ SHA
62
+ manageiq-cross_repo --test-repo manageiq-ui-classic --core-repo manageiq@1234abcd
63
+
64
+ # Test a plugin branch
65
+ manageiq-cross_repo --test-repo manageiq-ui-classic@feature
66
+
67
+ # Test a plugin branch from a fork
68
+ manageiq-cross_repo --test-repo johndoe/manageiq-ui-classic@feature
69
+
70
+ # Test a plugin PR
71
+ manageiq-cross_repo --test-repo manageiq-ui-classic#1234
72
+
73
+ # Test a plugin with a set of other plugins
74
+ manageiq-cross_repo --test-repo manageiq-ui-classic --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
75
+
76
+ # Test a plugin branch with a ManageIQ SHA and a set of other plugins
77
+ manageiq-cross_repo --test-repo manageiq-ui-classic@feature --core-repo manageiq@1234abcd --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
78
+
79
+ # Run core tests with ManageIQ master using a gem version
80
+ manageiq-cross_repo --gem-repos johndoe/manageiq-ui-classic@feature
81
+
82
+ # Run core tests for a branch and a set of gems
83
+ manageiq-cross_repo --test-repo johndoe/manageiq@feature --gem-repos manageiq-providers-vmware@feature manageiq-content@feature
84
+ EOS
85
+ end
86
+
87
+ opts[:gem_repos] = opts[:gem_repos].flatten.flat_map { |repo| repo.split(",").map(&:strip) }
88
+
89
+ begin
90
+ ManageIQ::CrossRepo.run(opts[:test_repo], opts[:core_repo], opts[:gem_repos])
91
+ rescue ArgumentError => e
92
+ Optimist.die e
93
+ end
@@ -0,0 +1 @@
1
+ require "manageiq/cross_repo"
@@ -0,0 +1,14 @@
1
+ require "manageiq/cross_repo/version"
2
+ require "manageiq/cross_repo/runner"
3
+
4
+ require "pathname"
5
+
6
+ module ManageIQ
7
+ module CrossRepo
8
+ REPOS_DIR = Pathname.pwd.join("repos")
9
+
10
+ def self.run(*args)
11
+ Runner.new(*args).run
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,95 @@
1
+ module ManageIQ::CrossRepo
2
+ class Repository
3
+ attr_accessor :org, :repo, :ref, :sha, :url, :path
4
+
5
+ # ManageIQ::CrossRepo::Repository
6
+ #
7
+ # @param identifier [String] the short representation of a repository relative to a server, format [org/]repo[@ref]
8
+ # @param server [String] The git repo server hosting this repository, default: https://github.com
9
+ # @example
10
+ # Repostory.new("ManageIQ/manageiq@master", server: "https://github.com")
11
+ def initialize(identifier, server: "https://github.com")
12
+ @org, @repo, @ref, @sha, @url, @path = parse_identifier(identifier, server)
13
+ end
14
+
15
+ def core?
16
+ repo.casecmp("manageiq") == 0
17
+ end
18
+
19
+ def ensure_clone
20
+ return if path.exist?
21
+
22
+ require "mixlib/archive"
23
+ require "open-uri"
24
+ require "tmpdir"
25
+ require "zlib"
26
+
27
+ puts "Fetching #{tarball_url}"
28
+
29
+ Dir.mktmpdir do |dir|
30
+ Mixlib::Archive.new(open(tarball_url, "rb")).extract(dir)
31
+
32
+ content_dir = Pathname.new(dir).children.detect(&:directory?)
33
+ FileUtils.mkdir_p(path.dirname)
34
+ FileUtils.mv(content_dir, path)
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def parse_identifier(identifier, server)
41
+ if ["/", "~", "."].include?(identifier[0])
42
+ path = Pathname.new(identifier).expand_path
43
+ raise ArgumentError, "Path #{path} does not exist" unless path.exist?
44
+
45
+ repo = path.basename.to_s
46
+ ref = Dir.chdir(path) { `git rev-parse HEAD`.chomp }
47
+ sha = ref
48
+ else
49
+ if identifier.include?("#")
50
+ name, pr = identifier.split("#")
51
+ else
52
+ name, ref_or_branch = identifier.split("@")
53
+ if ref_or_branch.nil?
54
+ branch = "master"
55
+ elsif ref_or_branch.match?(/^\h+$/)
56
+ ref = ref_or_branch
57
+ else
58
+ branch = ref_or_branch
59
+ end
60
+ end
61
+
62
+ org, repo = name.split("/")
63
+ repo, org = org, "ManageIQ" if repo.nil?
64
+
65
+ url = File.join(server, org, repo)
66
+
67
+ sha = if pr
68
+ git_pr_to_sha(url, pr)
69
+ elsif branch
70
+ git_branch_to_sha(url, branch)
71
+ else
72
+ ref
73
+ end
74
+
75
+ raise ArgumentError, "#{identifier} does not exist" if sha.nil?
76
+
77
+ path = REPOS_DIR.join("#{org}/#{repo}@#{sha}")
78
+ end
79
+
80
+ return org, repo, ref, sha, url, path
81
+ end
82
+
83
+ def tarball_url
84
+ url && File.join(url, "tarball", sha)
85
+ end
86
+
87
+ def git_branch_to_sha(url, branch)
88
+ `git ls-remote #{url} #{branch}`.split("\t").first
89
+ end
90
+
91
+ def git_pr_to_sha(url, pr)
92
+ `git ls-remote #{url} refs/pull/#{pr}/head`.split("\t").first
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,89 @@
1
+ require "manageiq/cross_repo/repository"
2
+ require "active_support/core_ext/object/blank"
3
+
4
+ module ManageIQ::CrossRepo
5
+ class Runner
6
+ attr_reader :test_repo, :core_repo, :gem_repos
7
+
8
+ def initialize(test_repo, core_repo, gem_repos)
9
+ @test_repo = Repository.new(test_repo || "ManageIQ/manageiq@master")
10
+ if @test_repo.core?
11
+ raise ArgumentError, "You cannot pass core repo when running a core test" if core_repo.present?
12
+ raise ArgumentError, "You must pass at least one gem repo when running a core test" if gem_repos.blank?
13
+
14
+ @core_repo = @test_repo
15
+ else
16
+ raise ArgumentError, "You must pass either a core repo or at least one gem repo when running a plugin test" if core_repo.blank? && gem_repos.blank?
17
+
18
+ @core_repo = Repository.new(core_repo || "ManageIQ/manageiq@master")
19
+ end
20
+
21
+ @gem_repos = gem_repos.to_a.map { |repo| Repository.new(repo) }
22
+ end
23
+
24
+ def run
25
+ test_repo.ensure_clone
26
+ test_repo.core? ? run_core : run_plugin
27
+ end
28
+
29
+ private
30
+
31
+ def run_core
32
+ prepare_gem_repos
33
+
34
+ with_test_env do
35
+ system!({"TRAVIS_BUILD_DIR" => test_repo.path.to_s}, "bash", "tools/ci/before_install.sh") if ENV["CI"]
36
+ system!("bin/setup")
37
+ system!("bundle exec rake")
38
+ end
39
+ end
40
+
41
+ def run_plugin
42
+ core_repo.ensure_clone
43
+ symlink_core_repo_spec
44
+ prepare_gem_repos
45
+
46
+ with_test_env do
47
+ system!("bin/setup")
48
+ system!("bundle exec rake")
49
+ end
50
+ end
51
+
52
+ def with_test_env
53
+ Dir.chdir(test_repo.path) do
54
+ Bundler.with_clean_env do
55
+ yield
56
+ end
57
+ end
58
+ end
59
+
60
+ def system!(*args)
61
+ exit($CHILD_STATUS.exitstatus) unless system(*args)
62
+ end
63
+
64
+ def generate_bundler_d
65
+ bundler_d_path = core_repo.path.join("bundler.d")
66
+ override_path = bundler_d_path.join("overrides.rb")
67
+
68
+ if gem_repos.empty?
69
+ FileUtils.rm_f override_path
70
+ else
71
+ content = gem_repos.map { |gem| "override_gem \"#{gem.repo}\", :path => \"#{gem.path}\"" }.join("\n")
72
+ FileUtils.mkdir_p(bundler_d_path)
73
+
74
+ File.write(override_path, content)
75
+ end
76
+ end
77
+
78
+ def prepare_gem_repos
79
+ gem_repos.each { |gem_repo| gem_repo.ensure_clone }
80
+ generate_bundler_d
81
+ end
82
+
83
+ def symlink_core_repo_spec
84
+ core_spec_symlink = test_repo.path.join("spec", "manageiq")
85
+ FileUtils.rm_f(core_spec_symlink)
86
+ FileUtils.ln_s(core_repo.path, core_spec_symlink)
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,5 @@
1
+ module ManageIQ
2
+ module CrossRepo
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'lib/manageiq/cross_repo/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "manageiq-cross_repo"
5
+ spec.version = ManageIQ::CrossRepo::VERSION
6
+ spec.authors = ["ManageIQ Authors"]
7
+
8
+ spec.summary = %q{ManageIQ CrossRepo testing library}
9
+ spec.description = %q{ManageIQ CrossRepo testing library}
10
+ spec.homepage = "https://github.com/ManageIQ/manageiq-cross_repo"
11
+ spec.license = "MIT"
12
+
13
+ spec.metadata["homepage_uri"] = spec.homepage
14
+ spec.metadata["source_code_uri"] = "https://github.com/ManageIQ/manageiq-cross_repo"
15
+
16
+ # Specify which files should be added to the gem when it is released.
17
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
19
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ end
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency "simplecov"
28
+
29
+ spec.add_dependency "activesupport"
30
+ spec.add_dependency "mixlib-archive"
31
+ spec.add_dependency "optimist"
32
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: manageiq-cross_repo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - ManageIQ Authors
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-10-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mixlib-archive
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: optimist
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: ManageIQ CrossRepo testing library
98
+ email:
99
+ executables:
100
+ - manageiq-cross_repo
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - bin/console
112
+ - bin/setup
113
+ - exe/manageiq-cross_repo
114
+ - lib/manageiq-cross_repo.rb
115
+ - lib/manageiq/cross_repo.rb
116
+ - lib/manageiq/cross_repo/repository.rb
117
+ - lib/manageiq/cross_repo/runner.rb
118
+ - lib/manageiq/cross_repo/version.rb
119
+ - manageiq-cross_repo.gemspec
120
+ homepage: https://github.com/ManageIQ/manageiq-cross_repo
121
+ licenses:
122
+ - MIT
123
+ metadata:
124
+ homepage_uri: https://github.com/ManageIQ/manageiq-cross_repo
125
+ source_code_uri: https://github.com/ManageIQ/manageiq-cross_repo
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubygems_version: 3.0.6
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: ManageIQ CrossRepo testing library
145
+ test_files: []