r10k 3.14.1 → 5.0.1
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 +4 -4
- data/.github/dependabot.yml +17 -0
- data/.github/workflows/docker.yml +9 -4
- data/.github/workflows/release.yml +3 -2
- data/.github/workflows/rspec_tests.yml +8 -10
- data/CHANGELOG.mkd +100 -0
- data/CODEOWNERS +1 -2
- data/Gemfile +2 -2
- data/README.mkd +18 -19
- data/doc/common-patterns.mkd +1 -2
- data/doc/dynamic-environments/configuration.mkd +91 -12
- data/doc/dynamic-environments/usage.mkd +4 -0
- data/doc/dynamic-environments/workflow-guide.mkd +3 -3
- data/doc/faq.mkd +1 -1
- data/doc/puppetfile.mkd +9 -3
- data/integration/Gemfile +3 -4
- data/integration/Rakefile +58 -23
- data/integration/files/pre-suite/git_config.pp.erb +1 -1
- data/integration/pre-suite/00_pe_install.rb +3 -0
- data/integration/pre-suite/10_git_config.rb +1 -3
- data/integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb +5 -4
- data/integration/tests/basic_functionality/negative/negative_bad_proxy.rb +1 -1
- data/integration/tests/basic_functionality/proxy_specified_in_configuration.rb +2 -2
- data/integration/tests/basic_functionality/proxy_with_puppetfile.rb +2 -2
- data/integration/tests/basic_functionality/rugged_git_provider_with_ssh.rb +3 -3
- data/integration/tests/basic_functionality/rugged_git_provider_without_ssh.rb +3 -3
- data/integration/tests/command_line/deploy_env_without_mod_update.rb +0 -3
- data/integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb +0 -3
- data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +5 -10
- data/integration/tests/git_source/git_source_git.rb +1 -4
- data/integration/tests/git_source/git_source_repeated_remote.rb +2 -5
- data/integration/tests/git_source/git_source_submodule.rb +1 -1
- data/integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb +1 -1
- data/integration/tests/purging/content_not_purged_at_root.rb +2 -5
- data/integration/tests/purging/default_purging.rb +0 -3
- data/integration/tests/purging/{does_not_purge_files_on_white_list.rb → does_not_purge_files_on_allowlist.rb} +2 -5
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +1 -4
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +1 -4
- data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +1 -4
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb +0 -3
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +0 -3
- data/integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb +3 -2
- data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +1 -5
- data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +1 -4
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb +0 -3
- data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb +0 -3
- data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +0 -3
- data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +1 -4
- data/integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb +0 -3
- data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +0 -3
- data/lib/r10k/action/deploy/environment.rb +2 -19
- data/lib/r10k/action/deploy/module.rb +1 -0
- data/lib/r10k/action/puppetfile/check.rb +7 -0
- data/lib/r10k/action/puppetfile/install.rb +3 -1
- data/lib/r10k/cli/deploy.rb +15 -1
- data/lib/r10k/cli/puppetfile.rb +1 -0
- data/lib/r10k/content_synchronizer.rb +7 -2
- data/lib/r10k/environment/with_modules.rb +24 -1
- data/lib/r10k/environment.rb +0 -1
- data/lib/r10k/git/rugged/bare_repository.rb +5 -4
- data/lib/r10k/git/rugged/thin_repository.rb +7 -0
- data/lib/r10k/git/rugged/working_repository.rb +13 -7
- data/lib/r10k/git/shellgit/thin_repository.rb +5 -1
- data/lib/r10k/git/shellgit/working_repository.rb +5 -4
- data/lib/r10k/git/stateful_repository.rb +4 -4
- data/lib/r10k/module/base.rb +3 -3
- data/lib/r10k/module/git.rb +19 -5
- data/lib/r10k/module_loader/puppetfile/dsl.rb +4 -0
- data/lib/r10k/module_loader/puppetfile.rb +22 -14
- data/lib/r10k/puppetfile.rb +1 -1
- data/lib/r10k/settings/container.rb +1 -0
- data/lib/r10k/settings.rb +6 -7
- data/lib/r10k/tarball.rb +1 -1
- data/lib/r10k/version.rb +1 -1
- data/locales/r10k.pot +34 -82
- data/r10k.gemspec +8 -18
- metadata +40 -213
- data/.github/workflows/stale.yml +0 -21
- data/.travis.yml +0 -42
- data/docker/.gitignore +0 -1
- data/docker/.rspec +0 -4
- data/docker/Gemfile +0 -11
- data/docker/Makefile +0 -92
- data/docker/README.md +0 -28
- data/docker/docker-compose.yml +0 -18
- data/docker/r10k/Dockerfile +0 -68
- data/docker/r10k/adduser.sh +0 -13
- data/docker/r10k/docker-entrypoint.d/10-analytics.sh +0 -30
- data/docker/r10k/docker-entrypoint.sh +0 -10
- data/docker/r10k/release.Dockerfile +0 -55
- data/docker/spec/dockerfile_spec.rb +0 -37
- data/docker/spec/fixtures/Puppetfile +0 -2
- data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +0 -83
- data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +0 -128
- data/integration/tests/purging/invalid_whitelist_types.rb +0 -63
- data/integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb +0 -49
- data/integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb +0 -68
- data/lib/r10k/environment/bare.rb +0 -13
- data/spec/fixtures/empty/.empty +0 -0
- data/spec/fixtures/integration/git/puppet-boolean-bare.tar +0 -0
- data/spec/fixtures/module/forge/bad_module/metadata.json +0 -1
- data/spec/fixtures/module/forge/eight_hundred/Modulefile +0 -8
- data/spec/fixtures/module/forge/eight_hundred/metadata.json +0 -19
- data/spec/fixtures/tarball/tarball.tar.gz +0 -0
- data/spec/fixtures/unit/action/r10k.yaml +0 -5
- data/spec/fixtures/unit/action/r10k_cachedir.yaml +0 -2
- data/spec/fixtures/unit/action/r10k_creds.yaml +0 -9
- data/spec/fixtures/unit/action/r10k_forge_auth.yaml +0 -4
- data/spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml +0 -3
- data/spec/fixtures/unit/action/r10k_generate_types.yaml +0 -3
- data/spec/fixtures/unit/action/r10k_logging.yaml +0 -12
- data/spec/fixtures/unit/action/r10k_puppet_path.yaml +0 -3
- data/spec/fixtures/unit/puppetfile/argument-error/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +0 -5
- data/spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile +0 -10
- data/spec/fixtures/unit/puppetfile/forge-override/Puppetfile +0 -8
- data/spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/load-error/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/name-error/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile +0 -1
- data/spec/fixtures/unit/puppetfile/various-modules/Puppetfile +0 -10
- data/spec/fixtures/unit/puppetfile/various-modules/Puppetfile.new +0 -10
- data/spec/fixtures/unit/util/purgeable/managed_one/expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_symlink_file +0 -1
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_allowlisted_2/ignored_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/unmanaged_symlink_dir +0 -1
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_symlink_dir +0 -1
- data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_symlink_file +0 -1
- data/spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/expected_2 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2 +0 -0
- data/spec/fixtures/unit/util/subprocess/runner/no-execute.sh +0 -3
- data/spec/integration/git/rugged/bare_repository_spec.rb +0 -13
- data/spec/integration/git/rugged/cache_spec.rb +0 -33
- data/spec/integration/git/rugged/thin_repository_spec.rb +0 -14
- data/spec/integration/git/rugged/working_repository_spec.rb +0 -48
- data/spec/integration/git/shellgit/bare_repository_spec.rb +0 -13
- data/spec/integration/git/shellgit/thin_repository_spec.rb +0 -14
- data/spec/integration/git/shellgit/working_repository_spec.rb +0 -13
- data/spec/integration/git/stateful_repository_spec.rb +0 -159
- data/spec/integration/util/purageable_spec.rb +0 -41
- data/spec/matchers/exit_with.rb +0 -28
- data/spec/matchers/match_realpath.rb +0 -18
- data/spec/r10k-mocks/mock_config.rb +0 -33
- data/spec/r10k-mocks/mock_env.rb +0 -18
- data/spec/r10k-mocks/mock_source.rb +0 -17
- data/spec/r10k-mocks.rb +0 -3
- data/spec/shared-contexts/git-fixtures.rb +0 -55
- data/spec/shared-contexts/tarball.rb +0 -32
- data/spec/shared-examples/deploy-actions.rb +0 -69
- data/spec/shared-examples/git/bare_repository.rb +0 -132
- data/spec/shared-examples/git/thin_repository.rb +0 -26
- data/spec/shared-examples/git/working_repository.rb +0 -207
- data/spec/shared-examples/git-repository.rb +0 -38
- data/spec/shared-examples/puppetfile-action.rb +0 -39
- data/spec/shared-examples/settings/ancestry.rb +0 -44
- data/spec/shared-examples/subprocess-runner.rb +0 -89
- data/spec/spec_helper.rb +0 -41
- data/spec/unit/action/cri_runner_spec.rb +0 -72
- data/spec/unit/action/deploy/deploy_helpers_spec.rb +0 -38
- data/spec/unit/action/deploy/display_spec.rb +0 -61
- data/spec/unit/action/deploy/environment_spec.rb +0 -640
- data/spec/unit/action/deploy/module_spec.rb +0 -476
- data/spec/unit/action/puppetfile/check_spec.rb +0 -53
- data/spec/unit/action/puppetfile/cri_runner_spec.rb +0 -47
- data/spec/unit/action/puppetfile/install_spec.rb +0 -112
- data/spec/unit/action/puppetfile/purge_spec.rb +0 -60
- data/spec/unit/action/runner_spec.rb +0 -407
- data/spec/unit/action/visitor_spec.rb +0 -39
- data/spec/unit/cli_spec.rb +0 -9
- data/spec/unit/deployment/config_spec.rb +0 -33
- data/spec/unit/deployment_spec.rb +0 -162
- data/spec/unit/environment/bare_spec.rb +0 -13
- data/spec/unit/environment/base_spec.rb +0 -122
- data/spec/unit/environment/git_spec.rb +0 -114
- data/spec/unit/environment/name_spec.rb +0 -181
- data/spec/unit/environment/plain_spec.rb +0 -8
- data/spec/unit/environment/svn_spec.rb +0 -146
- data/spec/unit/environment/tarball_spec.rb +0 -45
- data/spec/unit/environment/with_modules_spec.rb +0 -75
- data/spec/unit/errors/formatting_spec.rb +0 -84
- data/spec/unit/feature_spec.rb +0 -50
- data/spec/unit/forge/module_release_spec.rb +0 -213
- data/spec/unit/git/alternates_spec.rb +0 -116
- data/spec/unit/git/cache_spec.rb +0 -66
- data/spec/unit/git/rugged/cache_spec.rb +0 -48
- data/spec/unit/git/rugged/credentials_spec.rb +0 -215
- data/spec/unit/git/shellgit/cache_spec.rb +0 -27
- data/spec/unit/git/stateful_repository_spec.rb +0 -45
- data/spec/unit/git_spec.rb +0 -102
- data/spec/unit/initializers_spec.rb +0 -68
- data/spec/unit/instance_cache_spec.rb +0 -78
- data/spec/unit/keyed_factory_spec.rb +0 -51
- data/spec/unit/logging/terminaloutputter_spec.rb +0 -53
- data/spec/unit/logging_spec.rb +0 -68
- data/spec/unit/module/base_spec.rb +0 -118
- data/spec/unit/module/forge_spec.rb +0 -271
- data/spec/unit/module/git_spec.rb +0 -387
- data/spec/unit/module/metadata_file_spec.rb +0 -68
- data/spec/unit/module/svn_spec.rb +0 -208
- data/spec/unit/module/tarball_spec.rb +0 -70
- data/spec/unit/module_loader/puppetfile_spec.rb +0 -421
- data/spec/unit/module_spec.rb +0 -114
- data/spec/unit/puppetfile_spec.rb +0 -304
- data/spec/unit/settings/collection_spec.rb +0 -123
- data/spec/unit/settings/container_spec.rb +0 -92
- data/spec/unit/settings/definition_spec.rb +0 -79
- data/spec/unit/settings/enum_definition_spec.rb +0 -20
- data/spec/unit/settings/inheritance_spec.rb +0 -38
- data/spec/unit/settings/list_spec.rb +0 -88
- data/spec/unit/settings/loader_spec.rb +0 -110
- data/spec/unit/settings/uri_definition_spec.rb +0 -23
- data/spec/unit/settings_spec.rb +0 -303
- data/spec/unit/source/base_spec.rb +0 -31
- data/spec/unit/source/exec_spec.rb +0 -81
- data/spec/unit/source/git_spec.rb +0 -233
- data/spec/unit/source/hash_spec.rb +0 -54
- data/spec/unit/source/svn_spec.rb +0 -196
- data/spec/unit/source/yaml_spec.rb +0 -42
- data/spec/unit/source_spec.rb +0 -10
- data/spec/unit/svn/remote_spec.rb +0 -21
- data/spec/unit/svn/working_dir_spec.rb +0 -56
- data/spec/unit/tarball_spec.rb +0 -57
- data/spec/unit/util/attempt_spec.rb +0 -82
- data/spec/unit/util/cacheable_spec.rb +0 -23
- data/spec/unit/util/commands_spec.rb +0 -61
- data/spec/unit/util/downloader_spec.rb +0 -98
- data/spec/unit/util/exec_env_spec.rb +0 -56
- data/spec/unit/util/purgeable_spec.rb +0 -267
- data/spec/unit/util/setopts_spec.rb +0 -83
- data/spec/unit/util/subprocess/result_spec.rb +0 -36
- data/spec/unit/util/subprocess/runner/posix_spec.rb +0 -7
- data/spec/unit/util/subprocess/runner/pump_spec.rb +0 -79
- data/spec/unit/util/subprocess/runner/windows_spec.rb +0 -7
- data/spec/unit/util/subprocess/subprocess_error_spec.rb +0 -26
- data/spec/unit/util/subprocess_spec.rb +0 -65
- data/spec/unit/util/symbolize_keys_spec.rb +0 -67
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'r10k/initializers'
|
3
|
-
|
4
|
-
describe R10K::Initializers::GitInitializer do
|
5
|
-
it "configures the Git provider" do
|
6
|
-
subject = described_class.new({:provider => :rugged})
|
7
|
-
expect(R10K::Git).to receive(:provider=).with(:rugged)
|
8
|
-
subject.call
|
9
|
-
end
|
10
|
-
|
11
|
-
it "configures the Git username" do
|
12
|
-
subject = described_class.new({:username => 'git'})
|
13
|
-
expect(R10K::Git.settings).to receive(:[]=).with(:username, 'git')
|
14
|
-
subject.call
|
15
|
-
end
|
16
|
-
|
17
|
-
it "configures the Git private key" do
|
18
|
-
subject = described_class.new({:private_key => '/etc/puppetlabs/r10k/id_rsa'})
|
19
|
-
expect(R10K::Git.settings).to receive(:[]=).with(:private_key, '/etc/puppetlabs/r10k/id_rsa')
|
20
|
-
subject.call
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe R10K::Initializers::ForgeInitializer do
|
25
|
-
it "sets the PuppetForge host" do
|
26
|
-
subject = described_class.new({:baseurl => 'https://my.site.forge'})
|
27
|
-
expect(PuppetForge).to receive(:host=).with('https://my.site.forge')
|
28
|
-
subject.call
|
29
|
-
end
|
30
|
-
|
31
|
-
it "configures PuppetForge connection proxy" do
|
32
|
-
subject = described_class.new({:proxy => 'http://my.site.proxy:3128'})
|
33
|
-
expect(PuppetForge::Connection).to receive(:proxy=).with('http://my.site.proxy:3128')
|
34
|
-
subject.call
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe R10K::Initializers::GlobalInitializer do
|
39
|
-
it "logs a warning if purgedirs was set" do
|
40
|
-
subject = described_class.new({:purgedirs => 'This setting has been deprecated for over two years :('})
|
41
|
-
expect(subject.logger).to receive(:warn).with('the purgedirs key in r10k.yaml is deprecated. it is currently ignored.')
|
42
|
-
subject.call
|
43
|
-
end
|
44
|
-
|
45
|
-
it "sets the Git cache_root" do
|
46
|
-
subject = described_class.new({:cachedir => '/var/cache/r10k'})
|
47
|
-
expect(R10K::Git::Cache.settings).to receive(:[]=).with(:cache_root, '/var/cache/r10k')
|
48
|
-
subject.call
|
49
|
-
end
|
50
|
-
|
51
|
-
it "delegates git settings to the Git initializer" do
|
52
|
-
git = instance_double('R10K::Initializers::GitInitializer')
|
53
|
-
expect(git).to receive(:call)
|
54
|
-
expect(R10K::Initializers::GitInitializer).to receive(:new).and_return(git)
|
55
|
-
|
56
|
-
subject = described_class.new({:git => {}})
|
57
|
-
subject.call
|
58
|
-
end
|
59
|
-
|
60
|
-
it "delegates forge settings to the Forge initializer" do
|
61
|
-
forge = instance_double('R10K::Initializers::ForgeInitializer')
|
62
|
-
expect(forge).to receive(:call)
|
63
|
-
expect(R10K::Initializers::ForgeInitializer).to receive(:new).and_return(forge)
|
64
|
-
|
65
|
-
subject = described_class.new({:forge => {}})
|
66
|
-
subject.call
|
67
|
-
end
|
68
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'r10k/instance_cache'
|
4
|
-
|
5
|
-
describe R10K::InstanceCache do
|
6
|
-
|
7
|
-
describe "setting up a new instance cache" do
|
8
|
-
let(:klass) do
|
9
|
-
dubs = double('test class')
|
10
|
-
allow(dubs).to receive(:new) { |*args| args }
|
11
|
-
dubs
|
12
|
-
end
|
13
|
-
|
14
|
-
it "can create new objects" do
|
15
|
-
registry = described_class.new(klass)
|
16
|
-
expect(registry.generate).to eq []
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "defining object arity" do
|
20
|
-
|
21
|
-
it "handles unary objects" do
|
22
|
-
expect(klass).to receive(:new).with(:foo)
|
23
|
-
|
24
|
-
registry = described_class.new(klass)
|
25
|
-
expect(registry.generate(:foo)).to eq [:foo]
|
26
|
-
end
|
27
|
-
|
28
|
-
it "handles ternary objects" do
|
29
|
-
expect(klass).to receive(:new).with(:foo, :bar, :baz)
|
30
|
-
|
31
|
-
registry = described_class.new(klass)
|
32
|
-
expect(registry.generate(:foo, :bar, :baz)).to eq [:foo, :bar, :baz]
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'handles n-ary objects' do
|
36
|
-
args = %w[a bunch of arbitrary objects]
|
37
|
-
expect(klass).to receive(:new).with(*args)
|
38
|
-
|
39
|
-
registry = described_class.new(klass)
|
40
|
-
expect(registry.generate(*args)).to eq args
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'fails when the required arguments are not matched' do
|
44
|
-
expect(klass).to receive(:new).and_raise ArgumentError, "not enough args"
|
45
|
-
|
46
|
-
registry = described_class.new(klass)
|
47
|
-
expect { registry.generate('arity is hard') }.to raise_error ArgumentError, "not enough args"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
it "can specify the constructor method" do
|
52
|
-
expect(klass).to receive(:from_json).and_return "this is json, right?"
|
53
|
-
|
54
|
-
registry = described_class.new(klass, :from_json)
|
55
|
-
expect(registry.generate).to eq "this is json, right?"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
|
60
|
-
it "returns a memoized object if it's been created before" do
|
61
|
-
registry = described_class.new(String)
|
62
|
-
first = registry.generate "bam!"
|
63
|
-
second = registry.generate "bam!"
|
64
|
-
|
65
|
-
expect(first.object_id).to eq second.object_id
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'can clear registered objects' do
|
69
|
-
registry = described_class.new(String)
|
70
|
-
|
71
|
-
first = registry.generate "bam!"
|
72
|
-
registry.clear!
|
73
|
-
second = registry.generate "bam!"
|
74
|
-
|
75
|
-
expect(first.object_id).to_not eq second.object_id
|
76
|
-
|
77
|
-
end
|
78
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'r10k/keyed_factory'
|
3
|
-
|
4
|
-
describe R10K::KeyedFactory do
|
5
|
-
|
6
|
-
let(:registered) { Class.new }
|
7
|
-
|
8
|
-
describe "registering implementations" do
|
9
|
-
it "can register new implementations" do
|
10
|
-
subject.register(:klass, registered)
|
11
|
-
expect(subject.retrieve(:klass)).to eq registered
|
12
|
-
end
|
13
|
-
|
14
|
-
it "raises an error when a duplicate implementation is registered" do
|
15
|
-
subject.register(:klass, registered)
|
16
|
-
|
17
|
-
expect {
|
18
|
-
subject.register(:klass, registered)
|
19
|
-
}.to raise_error(R10K::KeyedFactory::DuplicateImplementationError)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "can register classes with nil as a key" do
|
23
|
-
subject.register(nil, registered)
|
24
|
-
expect(subject.retrieve(nil)).to eq registered
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "generating instances" do
|
29
|
-
before do
|
30
|
-
subject.register(:klass, registered)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "generates an instance with the associated class" do
|
34
|
-
instance = subject.generate(:klass)
|
35
|
-
expect(instance).to be_a_kind_of registered
|
36
|
-
end
|
37
|
-
|
38
|
-
it "can generate a class with nil as a key" do
|
39
|
-
other = Class.new
|
40
|
-
subject.register(nil, other)
|
41
|
-
instance = subject.generate(nil)
|
42
|
-
expect(instance).to be_a_kind_of other
|
43
|
-
end
|
44
|
-
|
45
|
-
it "raises an error if no implementation was registered with the given key" do
|
46
|
-
expect {
|
47
|
-
subject.generate(:foo)
|
48
|
-
}.to raise_error(R10K::KeyedFactory::UnknownImplementationError)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'stringio'
|
3
|
-
require 'r10k/logging/terminaloutputter'
|
4
|
-
|
5
|
-
describe R10K::Logging::TerminalOutputter do
|
6
|
-
|
7
|
-
let(:stream) { StringIO.new }
|
8
|
-
|
9
|
-
let(:formatter) do
|
10
|
-
Class.new(Log4r::Formatter) do
|
11
|
-
def format(logevent)
|
12
|
-
logevent.data
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
subject do
|
18
|
-
described_class.new('test', stream, :level => 0, :formatter => formatter).tap do |o|
|
19
|
-
o.use_color = true
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
tests = [
|
24
|
-
[:debug2, :cyan],
|
25
|
-
[:debug1, :cyan],
|
26
|
-
[:debug, :green],
|
27
|
-
[:info, nil],
|
28
|
-
[:notice, nil],
|
29
|
-
[:warn, :yellow],
|
30
|
-
[:error, :red],
|
31
|
-
[:fatal, :red],
|
32
|
-
]
|
33
|
-
|
34
|
-
tests.each_with_index do |(level, color), index|
|
35
|
-
# Note for the unwary - using a loop in this manner shows strange
|
36
|
-
# behavior with variable closure. The describe block is needed to retain
|
37
|
-
# the loop variables for each test; without this the let helpers are
|
38
|
-
# overwritten and the last set of helpers are used for all tests.
|
39
|
-
describe "at level #{level}" do
|
40
|
-
let(:message) { "level #{level}: #{color}" }
|
41
|
-
|
42
|
-
let(:event) do
|
43
|
-
Log4r::LogEvent.new(index + 1, Log4r::Logger.new('test::logger'), nil, message)
|
44
|
-
end
|
45
|
-
|
46
|
-
it "logs messages as #{color ? color : "uncolored"}" do
|
47
|
-
output = color.nil? ? message : message.send(color)
|
48
|
-
subject.send(level, event)
|
49
|
-
expect(stream.string).to eq output
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
data/spec/unit/logging_spec.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'r10k/logging'
|
3
|
-
|
4
|
-
describe R10K::Logging do
|
5
|
-
|
6
|
-
describe "parsing a log level" do
|
7
|
-
it "parses 'true:TrueClass' as INFO" do
|
8
|
-
expect(described_class.parse_level(true)).to eq Log4r::INFO
|
9
|
-
end
|
10
|
-
|
11
|
-
it "parses 'true:String' as nil" do
|
12
|
-
expect(described_class.parse_level("true")).to be_nil
|
13
|
-
end
|
14
|
-
|
15
|
-
it "parses a numeric string as an integer" do
|
16
|
-
expect(described_class.parse_level('2')).to eq 2
|
17
|
-
end
|
18
|
-
|
19
|
-
it "parses a log level string as a log level" do
|
20
|
-
expect(described_class.parse_level('debug')).to eq Log4r::DEBUG
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns nil when given an invalid log level" do
|
24
|
-
expect(described_class.parse_level('deblag')).to be_nil
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "setting the log level" do
|
29
|
-
after(:all) { R10K::Logging.level = 'warn' }
|
30
|
-
|
31
|
-
it "sets the outputter log level" do
|
32
|
-
expect(described_class.outputter).to receive(:level=).with(Log4r::DEBUG)
|
33
|
-
described_class.level = 'debug'
|
34
|
-
end
|
35
|
-
|
36
|
-
it "stores the new log level" do
|
37
|
-
allow(described_class.outputter).to receive(:level=)
|
38
|
-
described_class.level = 'debug'
|
39
|
-
expect(described_class.level).to eq(Log4r::DEBUG)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "raises an exception when given an invalid log level" do
|
43
|
-
expect {
|
44
|
-
described_class.level = 'deblag'
|
45
|
-
}.to raise_error(ArgumentError, /Invalid log level/)
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "switching the formatter" do
|
49
|
-
before do
|
50
|
-
allow(described_class.outputter).to receive(:level=)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "switches to the debug formatter if the new log level is debug or greater" do
|
54
|
-
debug_formatter = double('debug formatter')
|
55
|
-
expect(described_class).to receive(:debug_formatter).and_return(debug_formatter)
|
56
|
-
expect(described_class.outputter).to receive(:formatter=).with(debug_formatter)
|
57
|
-
described_class.level = 'debug'
|
58
|
-
end
|
59
|
-
|
60
|
-
it "switches to the default formatter if the new log level is info or less" do
|
61
|
-
default_formatter = double('default formatter')
|
62
|
-
expect(described_class).to receive(:default_formatter).and_return(default_formatter)
|
63
|
-
expect(described_class.outputter).to receive(:formatter=).with(default_formatter)
|
64
|
-
described_class.level = 'info'
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'r10k/module/base'
|
3
|
-
|
4
|
-
describe R10K::Module::Base do
|
5
|
-
describe "parsing the title" do
|
6
|
-
it "parses titles with no owner" do
|
7
|
-
m = described_class.new('eight_hundred', '/moduledir', {})
|
8
|
-
expect(m.name).to eq 'eight_hundred'
|
9
|
-
expect(m.owner).to be_nil
|
10
|
-
end
|
11
|
-
|
12
|
-
it "parses forward slash separated titles" do
|
13
|
-
m = described_class.new('branan/eight_hundred', '/moduledir', {})
|
14
|
-
expect(m.name).to eq 'eight_hundred'
|
15
|
-
expect(m.owner).to eq 'branan'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "parses hyphen separated titles" do
|
19
|
-
m = described_class.new('branan-eight_hundred', '/moduledir', {})
|
20
|
-
expect(m.name).to eq 'eight_hundred'
|
21
|
-
expect(m.owner).to eq 'branan'
|
22
|
-
end
|
23
|
-
|
24
|
-
it "raises an error when the title is not correctly formatted" do
|
25
|
-
expect {
|
26
|
-
described_class.new('branan!eight_hundred', '/moduledir', {})
|
27
|
-
}.to raise_error(ArgumentError, "Module name (branan!eight_hundred) must match either 'modulename' or 'owner/modulename'")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe 'deleting the spec dir' do
|
32
|
-
let(:module_org) { "coolorg" }
|
33
|
-
let(:module_name) { "coolmod" }
|
34
|
-
let(:title) { "#{module_org}-#{module_name}" }
|
35
|
-
let(:dirname) { Pathname.new(Dir.mktmpdir) }
|
36
|
-
let(:spec_path) { dirname + module_name + 'spec' }
|
37
|
-
|
38
|
-
before(:each) do
|
39
|
-
logger = double("logger")
|
40
|
-
allow_any_instance_of(described_class).to receive(:logger).and_return(logger)
|
41
|
-
allow(logger).to receive(:debug2).with(any_args)
|
42
|
-
allow(logger).to receive(:info).with(any_args)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'does not remove the spec directory by default' do
|
46
|
-
FileUtils.mkdir_p(spec_path)
|
47
|
-
m = described_class.new(title, dirname, {})
|
48
|
-
m.maybe_delete_spec_dir
|
49
|
-
expect(Dir.exist?(spec_path)).to eq true
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'detects a symlink and deletes the target' do
|
53
|
-
Dir.mkdir(dirname + module_name)
|
54
|
-
target_dir = Dir.mktmpdir
|
55
|
-
FileUtils.ln_s(target_dir, spec_path)
|
56
|
-
m = described_class.new(title, dirname, {exclude_spec: true})
|
57
|
-
m.maybe_delete_spec_dir
|
58
|
-
expect(Dir.exist?(target_dir)).to eq false
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'removes the spec directory if exclude_spec is set' do
|
62
|
-
FileUtils.mkdir_p(spec_path)
|
63
|
-
m = described_class.new(title, dirname, {exclude_spec: true})
|
64
|
-
m.maybe_delete_spec_dir
|
65
|
-
expect(Dir.exist?(spec_path)).to eq false
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'does not remove the spec directory if spec_deletable is false' do
|
69
|
-
FileUtils.mkdir_p(spec_path)
|
70
|
-
m = described_class.new(title, dirname, {})
|
71
|
-
m.spec_deletable = false
|
72
|
-
m.maybe_delete_spec_dir
|
73
|
-
expect(Dir.exist?(spec_path)).to eq true
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "path variables" do
|
78
|
-
it "uses the module name as the name" do
|
79
|
-
m = described_class.new('eight_hundred', '/moduledir', {})
|
80
|
-
expect(m.dirname).to eq '/moduledir'
|
81
|
-
expect(m.path).to eq(Pathname.new('/moduledir/eight_hundred'))
|
82
|
-
end
|
83
|
-
|
84
|
-
it "does not include the owner in the path" do
|
85
|
-
m = described_class.new('branan/eight_hundred', '/moduledir', {})
|
86
|
-
expect(m.dirname).to eq '/moduledir'
|
87
|
-
expect(m.path).to eq(Pathname.new('/moduledir/eight_hundred'))
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "with alternate variable names" do
|
92
|
-
subject do
|
93
|
-
described_class.new('branan/eight_hundred', '/moduledir', {})
|
94
|
-
end
|
95
|
-
|
96
|
-
it "aliases full_name to title" do
|
97
|
-
expect(subject.full_name).to eq 'branan-eight_hundred'
|
98
|
-
end
|
99
|
-
|
100
|
-
it "aliases author to owner" do
|
101
|
-
expect(subject.author).to eq 'branan'
|
102
|
-
end
|
103
|
-
|
104
|
-
it "aliases basedir to dirname" do
|
105
|
-
expect(subject.basedir).to eq '/moduledir'
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "accepting a visitor" do
|
110
|
-
subject { described_class.new('branan-eight_hundred', '/moduledir', {}) }
|
111
|
-
|
112
|
-
it "passes itself to the visitor" do
|
113
|
-
visitor = spy('visitor')
|
114
|
-
expect(visitor).to receive(:visit).with(:module, subject)
|
115
|
-
subject.accept(visitor)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|