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,55 +0,0 @@
|
|
1
|
-
require 'archive/tar/minitar'
|
2
|
-
require 'tmpdir'
|
3
|
-
|
4
|
-
shared_context "Git integration" do
|
5
|
-
|
6
|
-
# Use tmpdir for cached git repositories
|
7
|
-
|
8
|
-
before(:all) do
|
9
|
-
@old_cache_root = R10K::Git::Cache.settings[:cache_root]
|
10
|
-
R10K::Git::Cache.settings[:cache_root] = Dir.mktmpdir
|
11
|
-
end
|
12
|
-
|
13
|
-
after(:all) do
|
14
|
-
FileUtils.remove_entry_secure(R10K::Git::Cache.settings[:cache_root])
|
15
|
-
R10K::Git::Cache.settings[:cache_root] = @old_cache_root
|
16
|
-
end
|
17
|
-
|
18
|
-
# Create a mutable path for remote repositories
|
19
|
-
|
20
|
-
def fixture_path
|
21
|
-
File.join(PROJECT_ROOT, 'spec', 'fixtures', 'integration', 'git')
|
22
|
-
end
|
23
|
-
|
24
|
-
def remote_path
|
25
|
-
@remote_path
|
26
|
-
end
|
27
|
-
|
28
|
-
def populate_remote_path
|
29
|
-
Archive::Tar::Minitar.unpack(File.join(fixture_path, 'puppet-boolean-bare.tar'), remote_path)
|
30
|
-
end
|
31
|
-
|
32
|
-
def clear_remote_path
|
33
|
-
FileUtils.remove_entry_secure(remote_path)
|
34
|
-
end
|
35
|
-
|
36
|
-
before(:all) do
|
37
|
-
@remote_path = Dir.mktmpdir
|
38
|
-
populate_remote_path
|
39
|
-
end
|
40
|
-
|
41
|
-
after(:all) do
|
42
|
-
clear_remote_path
|
43
|
-
@remote_path = nil
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:remote) { Pathname.new(File.join(remote_path, 'puppet-boolean.git')).realpath.to_s }
|
47
|
-
|
48
|
-
# Create a temp path for the git basedir and clean it up when finished
|
49
|
-
|
50
|
-
let(:basedir) { Dir.mktmpdir }
|
51
|
-
|
52
|
-
after do
|
53
|
-
FileUtils.remove_entry_secure(basedir)
|
54
|
-
end
|
55
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'tmpdir'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
shared_context "Tarball" do
|
5
|
-
# Suggested subject:
|
6
|
-
#
|
7
|
-
# subject { described_class.new('fixture-tarball', fixture_tarball, checksum: fixture_checksum) }
|
8
|
-
#
|
9
|
-
let(:fixture_tarball) do
|
10
|
-
File.expand_path('spec/fixtures/tarball/tarball.tar.gz', PROJECT_ROOT)
|
11
|
-
end
|
12
|
-
|
13
|
-
let(:fixture_checksum) { '292e692ad18faabd4f9b21037d51f0185e04b69f82c522a54af91fb5b88c2d3b' }
|
14
|
-
|
15
|
-
# Use tmpdir for cached tarballs
|
16
|
-
let(:tmpdir) { Dir.mktmpdir }
|
17
|
-
|
18
|
-
# `moduledir` and `cache_root` are available for examples to use in creating
|
19
|
-
# their subjects
|
20
|
-
let(:moduledir) { File.join(tmpdir, 'modules').tap { |path| Dir.mkdir(path) } }
|
21
|
-
let(:cache_root) { File.join(tmpdir, 'cache').tap { |path| Dir.mkdir(path) } }
|
22
|
-
|
23
|
-
around(:each) do |example|
|
24
|
-
if subject.is_a?(R10K::Tarball)
|
25
|
-
subject.settings[:cache_root] = cache_root
|
26
|
-
elsif subject.respond_to?(:tarball) && subject.tarball.is_a?(R10K::Tarball)
|
27
|
-
subject.tarball.settings[:cache_root] = cache_root
|
28
|
-
end
|
29
|
-
example.run
|
30
|
-
FileUtils.remove_entry_secure(tmpdir)
|
31
|
-
end
|
32
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'r10k/deployment'
|
4
|
-
|
5
|
-
shared_examples_for "a deploy action that requires a config file" do
|
6
|
-
let(:config) do
|
7
|
-
R10K::Deployment::MockConfig.new(
|
8
|
-
:sources => {
|
9
|
-
:control => {
|
10
|
-
:type => :mock,
|
11
|
-
:basedir => '/some/nonexistent/path/control',
|
12
|
-
:environments => %w[first second third],
|
13
|
-
},
|
14
|
-
:hiera => {
|
15
|
-
:type => :mock,
|
16
|
-
:basedir => '/some/nonexistent/path/hiera',
|
17
|
-
:environments => %w[fourth fifth sixth],
|
18
|
-
}
|
19
|
-
}
|
20
|
-
)
|
21
|
-
end
|
22
|
-
|
23
|
-
let(:deployment) { R10K::Deployment.new(config) }
|
24
|
-
|
25
|
-
before do
|
26
|
-
allow(R10K::Deployment).to receive(:new).and_return(deployment)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "exits when no config file was provided or found" do
|
30
|
-
subject.instance_variable_set(:@config, nil)
|
31
|
-
expect {
|
32
|
-
subject.call
|
33
|
-
}.to exit_with(8)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
shared_examples_for "a deploy action that can be write locked" do
|
38
|
-
|
39
|
-
let(:config) do
|
40
|
-
R10K::Deployment::MockConfig.new(
|
41
|
-
:sources => {
|
42
|
-
:control => {
|
43
|
-
:type => :mock,
|
44
|
-
:basedir => '/some/nonexistent/path/control',
|
45
|
-
:environments => %w[first second third],
|
46
|
-
},
|
47
|
-
:hiera => {
|
48
|
-
:type => :mock,
|
49
|
-
:basedir => '/some/nonexistent/path/hiera',
|
50
|
-
:environments => %w[fourth fifth sixth],
|
51
|
-
}
|
52
|
-
}
|
53
|
-
)
|
54
|
-
end
|
55
|
-
|
56
|
-
let(:deployment) { R10K::Deployment.new(config) }
|
57
|
-
|
58
|
-
before do
|
59
|
-
allow(R10K::Deployment).to receive(:new).and_return(deployment)
|
60
|
-
subject.settings = {deploy: {write_lock: "Disabled, yo"}}
|
61
|
-
end
|
62
|
-
|
63
|
-
it "exits without running when the write lock is set" do
|
64
|
-
expect(subject).to_not receive(:visit_deployment)
|
65
|
-
expect {
|
66
|
-
subject.call
|
67
|
-
}.to exit_with(16)
|
68
|
-
end
|
69
|
-
end
|
@@ -1,132 +0,0 @@
|
|
1
|
-
RSpec.shared_examples "a git bare repository" do
|
2
|
-
|
3
|
-
describe "checking for the presence of the repo" do
|
4
|
-
it "exists if the repo is present" do
|
5
|
-
subject.clone(remote)
|
6
|
-
expect(subject.exist?).to be_truthy
|
7
|
-
end
|
8
|
-
|
9
|
-
it "doesn't exist if the repo is not present" do
|
10
|
-
expect(subject.exist?).to be_falsey
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "cloning the repo" do
|
15
|
-
it "creates the repo at the expected location" do
|
16
|
-
subject.clone(remote)
|
17
|
-
config = File.read(File.join(basedir, dirname, 'config'))
|
18
|
-
expect(config).to match(remote)
|
19
|
-
end
|
20
|
-
|
21
|
-
context "without a proxy" do
|
22
|
-
before(:each) do
|
23
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return(nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'does not change proxy ENV' do
|
27
|
-
expect(ENV).to_not receive(:[]=)
|
28
|
-
expect(ENV).to_not receive(:update)
|
29
|
-
|
30
|
-
subject.clone(remote)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context "with a proxy" do
|
35
|
-
before(:each) do
|
36
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return('http://proxy.example.com:3128')
|
37
|
-
end
|
38
|
-
|
39
|
-
it "manages proxy-related ENV vars" do
|
40
|
-
# Sets proxy settings.
|
41
|
-
['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy'].each do |var|
|
42
|
-
expect(ENV).to receive(:[]=).with(var, 'http://proxy.example.com:3128')
|
43
|
-
end
|
44
|
-
|
45
|
-
# Resets proxy settings when done.
|
46
|
-
expect(ENV).to receive(:update).with(hash_including('HTTPS_PROXY' => nil))
|
47
|
-
|
48
|
-
subject.clone(remote)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "updating the repo" do
|
54
|
-
let(:tag_090) { subject.git_dir + 'refs' + 'tags' + '0.9.0' }
|
55
|
-
let(:packed_refs) { subject.git_dir + 'packed-refs' }
|
56
|
-
|
57
|
-
before do
|
58
|
-
subject.clone(remote)
|
59
|
-
tag_090.delete if tag_090.exist?
|
60
|
-
packed_refs.delete if packed_refs.exist?
|
61
|
-
end
|
62
|
-
|
63
|
-
it "fetches objects from the remote" do
|
64
|
-
expect(subject.tags).to_not include('0.9.0')
|
65
|
-
subject.fetch
|
66
|
-
expect(subject.tags).to include('0.9.0')
|
67
|
-
end
|
68
|
-
|
69
|
-
context "without a proxy" do
|
70
|
-
before(:each) do
|
71
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return(nil)
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'does not change proxy ENV' do
|
75
|
-
expect(ENV).to_not receive(:[]=)
|
76
|
-
expect(ENV).to_not receive(:update)
|
77
|
-
|
78
|
-
subject.fetch
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context "with a proxy" do
|
83
|
-
before(:each) do
|
84
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return('http://proxy.example.com:3128')
|
85
|
-
end
|
86
|
-
|
87
|
-
it "manages proxy-related ENV vars" do
|
88
|
-
# Sets proxy settings.
|
89
|
-
['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy'].each do |var|
|
90
|
-
expect(ENV).to receive(:[]=).with(var, 'http://proxy.example.com:3128')
|
91
|
-
end
|
92
|
-
|
93
|
-
# Resets proxy settings when done.
|
94
|
-
expect(ENV).to receive(:update).with(hash_including('HTTPS_PROXY' => nil))
|
95
|
-
|
96
|
-
subject.fetch
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
describe "listing branches" do
|
102
|
-
before do
|
103
|
-
subject.clone(remote)
|
104
|
-
end
|
105
|
-
|
106
|
-
it "lists all branches in alphabetical order" do
|
107
|
-
expect(subject.branches).to eq(%w[0.9.x master])
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe "determining ref type" do
|
112
|
-
before do
|
113
|
-
subject.clone(remote)
|
114
|
-
end
|
115
|
-
|
116
|
-
it "can infer the type of a branch ref" do
|
117
|
-
expect(subject.ref_type('master')).to eq :branch
|
118
|
-
end
|
119
|
-
|
120
|
-
it "can infer the type of a tag ref" do
|
121
|
-
expect(subject.ref_type('1.0.0')).to eq :tag
|
122
|
-
end
|
123
|
-
|
124
|
-
it "can infer the type of a commit" do
|
125
|
-
expect(subject.ref_type('3084373e8d181cf2fea5b4ade2690ba22872bd67')).to eq :commit
|
126
|
-
end
|
127
|
-
|
128
|
-
it "returns :unknown when the type cannot be inferred" do
|
129
|
-
expect(subject.ref_type('1.2.3')).to eq :unknown
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
RSpec.shared_examples "a git thin repository" do
|
2
|
-
describe "cloning" do
|
3
|
-
it "creates a working copy of the repo" do
|
4
|
-
subject.clone(remote)
|
5
|
-
expect(subject.exist?).to be_truthy
|
6
|
-
end
|
7
|
-
|
8
|
-
it "sets the remote origin url to the provided url" do
|
9
|
-
subject.clone(remote)
|
10
|
-
expect(subject.origin).to eq remote
|
11
|
-
end
|
12
|
-
|
13
|
-
it "sets the remote cache url to the path to the cache repo" do
|
14
|
-
subject.clone(remote)
|
15
|
-
expect(subject.cache).to eq cacherepo.git_dir.to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
it "adds the cache repo to the alternates file" do
|
19
|
-
subject.clone(remote)
|
20
|
-
objectpath = cacherepo.git_dir + 'objects'
|
21
|
-
alternates = subject.alternates.to_a
|
22
|
-
expect(alternates.size).to eq 1
|
23
|
-
expect(alternates[0]).to match_realpath objectpath
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,207 +0,0 @@
|
|
1
|
-
RSpec.shared_examples "a git working repository" do
|
2
|
-
describe "cloning" do
|
3
|
-
it "creates a working copy of the repo" do
|
4
|
-
subject.clone(remote)
|
5
|
-
expect(subject.exist?).to be_truthy
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "using the default branch" do
|
9
|
-
describe "and the remote HEAD is 'master'" do
|
10
|
-
it "checks out the default branch" do
|
11
|
-
subject.clone(remote)
|
12
|
-
expect(subject.head).to eq "157011a4eaa27f1202a9d94335ee4876b26d377e"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "and the remote HEAD is '0.9.x'" do
|
17
|
-
before do
|
18
|
-
File.open(File.join(remote, 'HEAD'), 'w') do |fh|
|
19
|
-
fh.write('ref: refs/heads/0.9.x')
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
after do
|
24
|
-
clear_remote_path
|
25
|
-
populate_remote_path
|
26
|
-
end
|
27
|
-
|
28
|
-
it "checks out the default branch" do
|
29
|
-
subject.clone(remote)
|
30
|
-
expect(subject.head).to eq "3084373e8d181cf2fea5b4ade2690ba22872bd67"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "using an explicit ref" do
|
36
|
-
it "can check out tags" do
|
37
|
-
subject.clone(remote, {:ref => '1.0.0'})
|
38
|
-
expect(subject.head).to eq "14cbb45ae3a5f764320b7e63f1a54a25a1ef6c9c"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "can check out remote branches" do
|
42
|
-
subject.clone(remote, {:ref => 'origin/0.9.x'})
|
43
|
-
expect(subject.head).to eq "3084373e8d181cf2fea5b4ade2690ba22872bd67"
|
44
|
-
end
|
45
|
-
|
46
|
-
it "can check out commits" do
|
47
|
-
subject.clone(remote, {:ref => '14cbb45ae3a5f764320b7e63f1a54a25a1ef6c9c'})
|
48
|
-
expect(subject.head).to eq "14cbb45ae3a5f764320b7e63f1a54a25a1ef6c9c"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "with a reference repository" do
|
53
|
-
it "adds the reference repository to the alternates directory" do
|
54
|
-
subject.clone(remote, {:reference => remote})
|
55
|
-
alternates = subject.alternates.to_a
|
56
|
-
expect(alternates.size).to eq 1
|
57
|
-
expect(alternates[0]).to match_realpath File.join(remote, 'objects')
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "without a proxy" do
|
62
|
-
before(:each) do
|
63
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return(nil)
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'does not change proxy ENV' do
|
67
|
-
expect(ENV).to_not receive(:[]=)
|
68
|
-
expect(ENV).to_not receive(:update)
|
69
|
-
|
70
|
-
subject.clone(remote)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
context "with a proxy" do
|
75
|
-
before(:each) do
|
76
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return('http://proxy.example.com:3128')
|
77
|
-
end
|
78
|
-
|
79
|
-
it "manages proxy-related ENV vars" do
|
80
|
-
# Sets proxy settings.
|
81
|
-
['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy'].each do |var|
|
82
|
-
expect(ENV).to receive(:[]=).with(var, 'http://proxy.example.com:3128')
|
83
|
-
end
|
84
|
-
|
85
|
-
# Resets proxy settings when done.
|
86
|
-
expect(ENV).to receive(:update).with(hash_including('HTTPS_PROXY' => nil))
|
87
|
-
|
88
|
-
subject.clone(remote)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe "updating the repo" do
|
94
|
-
let(:tag_090) { subject.git_dir + 'refs' + 'tags' + '0.9.0' }
|
95
|
-
let(:packed_refs) { subject.git_dir + 'packed-refs' }
|
96
|
-
|
97
|
-
before do
|
98
|
-
subject.clone(remote)
|
99
|
-
tag_090.delete if tag_090.exist?
|
100
|
-
packed_refs.delete if packed_refs.exist?
|
101
|
-
end
|
102
|
-
|
103
|
-
it "fetches objects from the remote" do
|
104
|
-
expect(subject.tags).to_not include('0.9.0')
|
105
|
-
subject.fetch
|
106
|
-
expect(subject.tags).to include('0.9.0')
|
107
|
-
end
|
108
|
-
|
109
|
-
context "without a proxy" do
|
110
|
-
before(:each) do
|
111
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return(nil)
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'does not change proxy ENV' do
|
115
|
-
expect(ENV).to_not receive(:[]=)
|
116
|
-
expect(ENV).to_not receive(:update)
|
117
|
-
|
118
|
-
subject.fetch
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context "with a proxy" do
|
123
|
-
before(:each) do
|
124
|
-
allow(R10K::Git).to receive(:get_proxy_for_remote).with(remote).and_return('http://proxy.example.com:3128')
|
125
|
-
end
|
126
|
-
|
127
|
-
it "manages proxy-related ENV vars" do
|
128
|
-
# Sets proxy settings.
|
129
|
-
['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy'].each do |var|
|
130
|
-
expect(ENV).to receive(:[]=).with(var, 'http://proxy.example.com:3128')
|
131
|
-
end
|
132
|
-
|
133
|
-
# Resets proxy settings when done.
|
134
|
-
expect(ENV).to receive(:update).with(hash_including('HTTPS_PROXY' => nil))
|
135
|
-
|
136
|
-
subject.fetch
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "listing branches" do
|
142
|
-
before do
|
143
|
-
subject.clone(remote)
|
144
|
-
end
|
145
|
-
|
146
|
-
it "lists the local branches" do
|
147
|
-
expect(subject.branches).to eq(%w[master])
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
describe "listing the origin" do
|
152
|
-
it "is nil if the remote is not set" do
|
153
|
-
expect(subject.origin).to be_nil
|
154
|
-
end
|
155
|
-
|
156
|
-
it "is the remote URL when set" do
|
157
|
-
subject.clone(remote)
|
158
|
-
expect(subject.origin).to eq remote
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "checking out ref" do
|
163
|
-
before(:each) do
|
164
|
-
subject.clone(remote)
|
165
|
-
File.open(File.join(subject.path, 'README.markdown'), 'a') { |f| f.write('local modifications!') }
|
166
|
-
end
|
167
|
-
|
168
|
-
context "with force = true" do
|
169
|
-
it "should revert changes in managed files" do
|
170
|
-
subject.checkout(subject.head, {:force => true})
|
171
|
-
expect(File.read(File.join(subject.path, 'README.markdown')).include?('local modifications!')).to eq false
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
context "with force = false" do
|
176
|
-
it "should not revert changes in managed files" do
|
177
|
-
subject.checkout(subject.head, {:force => false})
|
178
|
-
expect(File.read(File.join(subject.path, 'README.markdown')).include?('local modifications!')).to eq true
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
describe "checking if worktree is dirty" do
|
184
|
-
before do
|
185
|
-
subject.clone(remote)
|
186
|
-
end
|
187
|
-
|
188
|
-
context "with no local changes" do
|
189
|
-
it "reports worktree as not dirty" do
|
190
|
-
expect(subject.dirty?).to be false
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
context "with local changes" do
|
195
|
-
before(:each) do
|
196
|
-
File.open(File.join(subject.path, 'README.markdown'), 'a') { |f| f.write('local modifications!') }
|
197
|
-
end
|
198
|
-
|
199
|
-
it "logs and reports worktree as dirty" do
|
200
|
-
expect(subject.logger).to receive(:debug).with(/found local modifications in.*README\.markdown/i)
|
201
|
-
expect(subject.logger).to receive(:debug1)
|
202
|
-
|
203
|
-
expect(subject.dirty?).to be true
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
shared_examples_for "a git repository" do
|
2
|
-
|
3
|
-
it "does not exist if the repo is not present" do
|
4
|
-
expect(subject.exist?).to be_falsey
|
5
|
-
end
|
6
|
-
|
7
|
-
describe "listing tags" do
|
8
|
-
before do
|
9
|
-
subject.clone(remote)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "lists all tags in alphabetical order" do
|
13
|
-
expect(subject.tags).to eq(%w[0.9.0 0.9.0-rc1 1.0.0 1.0.1])
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "resolving refs" do
|
18
|
-
before do
|
19
|
-
subject.clone(remote)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "can resolve branches" do
|
23
|
-
expect(subject.resolve('master')).to eq '157011a4eaa27f1202a9d94335ee4876b26d377e'
|
24
|
-
end
|
25
|
-
|
26
|
-
it "can resolve tags" do
|
27
|
-
expect(subject.resolve('1.0.0')).to eq '14cbb45ae3a5f764320b7e63f1a54a25a1ef6c9c'
|
28
|
-
end
|
29
|
-
|
30
|
-
it "can resolve commits" do
|
31
|
-
expect(subject.resolve('3084373e8d181cf2fea5b4ade2690ba22872bd67')).to eq '3084373e8d181cf2fea5b4ade2690ba22872bd67'
|
32
|
-
end
|
33
|
-
|
34
|
-
it "returns nil when the object cannot be resolved" do
|
35
|
-
expect(subject.resolve('1.2.3')).to be_nil
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
shared_examples_for "a puppetfile action" do
|
4
|
-
describe "initializing" do
|
5
|
-
it "accepts the :root option" do
|
6
|
-
described_class.new({root: "/some/nonexistent/path"}, [], {})
|
7
|
-
end
|
8
|
-
|
9
|
-
it "accepts the :puppetfile option" do
|
10
|
-
described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [], {})
|
11
|
-
end
|
12
|
-
|
13
|
-
it "accepts the :moduledir option" do
|
14
|
-
described_class.new({moduledir: "/some/nonexistent/path/modules"}, [], {})
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
shared_examples_for "a puppetfile install action" do
|
21
|
-
describe "initializing" do
|
22
|
-
it "accepts the :root option" do
|
23
|
-
described_class.new({root: "/some/nonexistent/path"}, [], {})
|
24
|
-
end
|
25
|
-
|
26
|
-
it "accepts the :puppetfile option" do
|
27
|
-
described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [], {})
|
28
|
-
end
|
29
|
-
|
30
|
-
it "accepts the :moduledir option" do
|
31
|
-
described_class.new({moduledir: "/some/nonexistent/path/modules"}, [], {})
|
32
|
-
end
|
33
|
-
|
34
|
-
it "accepts the :force option" do
|
35
|
-
described_class.new({force: true}, [], {})
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'r10k/settings/collection'
|
4
|
-
require 'r10k/settings/list'
|
5
|
-
|
6
|
-
shared_examples_for "a setting with ancestors" do
|
7
|
-
describe '#parent=' do
|
8
|
-
it "allows assignment to a collection" do
|
9
|
-
parent = R10K::Settings::Collection.new(:parent, [])
|
10
|
-
|
11
|
-
subject.parent = parent
|
12
|
-
|
13
|
-
expect(subject.parent).to eq parent
|
14
|
-
end
|
15
|
-
|
16
|
-
it "allows assignment to a list" do
|
17
|
-
parent = R10K::Settings::List.new(:parent, [])
|
18
|
-
|
19
|
-
subject.parent = parent
|
20
|
-
|
21
|
-
expect(subject.parent).to eq parent
|
22
|
-
end
|
23
|
-
|
24
|
-
it "rejects assignment when argument is not a settings collection or list" do
|
25
|
-
parent = Hash.new
|
26
|
-
|
27
|
-
expect { subject.parent = parent }.to raise_error do |error|
|
28
|
-
expect(error.message).to match /may only belong to a settings collection or list/i
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "rejects re-assignment" do
|
33
|
-
parent = R10K::Settings::Collection.new(:parent, [])
|
34
|
-
step_parent = R10K::Settings::Collection.new(:step_parent, [])
|
35
|
-
|
36
|
-
subject.parent = parent
|
37
|
-
|
38
|
-
expect { subject.parent = step_parent }.to raise_error do |error|
|
39
|
-
expect(error.message).to match /cannot be reassigned.*new parent/i
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|