diff --git a/acceptance/tests/environment/dynamic.rb b/acceptance/tests/environment/dynamic.rb index 9d5a1d5f8..46b89db16 100644 --- a/acceptance/tests/environment/dynamic.rb +++ b/acceptance/tests/environment/dynamic.rb @@ -1,127 +1,131 @@ test_name "dynamic environments" require 'puppet/acceptance/environment_utils' extend Puppet::Acceptance::EnvironmentUtils require 'puppet/acceptance/classifier_utils' extend Puppet::Acceptance::ClassifierUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + classify_nodes_as_agent_specified_if_classifer_present step "setup environments" stub_forge_on(master) testdir = create_tmpdir_for_user master, "confdir" puppet_conf_backup_dir = create_tmpdir_for_user(master, "puppet-conf-backup-dir") apply_manifest_on(master, environment_manifest(testdir), :catch_failures => true) results = {} review = {} #################### step "[ Run Tests ]" existing_dynamic_scenario = "Test a specific, existing dynamic environment configuration" step existing_dynamic_scenario master_opts = { 'main' => { 'environmentpath' => '', 'manifest' => '$confdir/dynamic/$environment/manifests', 'modulepath' => '$confdir/dynamic/$environment/modules', 'config_version' => '$confdir/static-version.sh', } } if master.is_pe? master_opts['main']['modulepath'] << ":#{master['sitemoduledir']}" end results[existing_dynamic_scenario] = use_an_environment("testing", "dynamic testing", master_opts, testdir, puppet_conf_backup_dir) default_environment_scenario = "Test behavior of default environment" step default_environment_scenario results[default_environment_scenario] = use_an_environment(nil, "default environment", master_opts, testdir, puppet_conf_backup_dir) non_existent_environment_scenario = "Test for an environment that does not exist" step non_existent_environment_scenario results[non_existent_environment_scenario] = use_an_environment("doesnotexist", "non existent environment", master_opts, testdir, puppet_conf_backup_dir) ######################################## step "[ Report on Environment Results ]" confdir = master.puppet['confdir'] step "Reviewing: #{existing_dynamic_scenario}" review[existing_dynamic_scenario] = review_results(results[existing_dynamic_scenario], :puppet_config => { :exit_code => 0, :matches => [%r{manifest.*#{confdir}/dynamic/testing/manifests$}, %r{modulepath.*#{confdir}/dynamic/testing/modules(?::#{master['sitemoduledir']})?$}, %r{config_version.*#{confdir}/static-version.sh$}] }, :puppet_module_install => { :exit_code => 0, :matches => [%r{Preparing to install into #{confdir}/dynamic/testing/modules}, %r{pmtacceptance-nginx}], }, :puppet_module_uninstall => { :exit_code => 0, :matches => [%r{Removed.*pmtacceptance-nginx.*from #{confdir}/dynamic/testing/modules}], }, :puppet_apply => { :exit_code => 0, :matches => [%r{include dynamic testing environment testing_mod}], }, :puppet_agent => { :exit_code => 2, :matches => [%r{Applying configuration version 'static'}, %r{in dynamic testing environment site.pp}, %r{include dynamic testing environment testing_mod}], } ) step "Reviewing: #{default_environment_scenario}" default_expectations = lambda do |env| { :puppet_config => { :exit_code => 0, :matches => [%r{manifest.*#{confdir}/dynamic/#{env}/manifests$}, %r{modulepath.*#{confdir}/dynamic/#{env}/modules(?::#{master['sitemoduledir']})?$}, %r{^config_version.*#{confdir}/static-version.sh$}] }, :puppet_module_install => { :exit_code => 0, :matches => [%r{Preparing to install into #{confdir}/dynamic/#{env}/modules}, %r{pmtacceptance-nginx}], }, :puppet_module_uninstall => { :exit_code => 0, :matches => [%r{Removed.*pmtacceptance-nginx.*from #{confdir}/dynamic/#{env}/modules}], }, :puppet_apply => { :exit_code => 1, :matches => [%r{Error:.*Could not find class ::testing_mod}], }, :puppet_agent => { :exit_code => 0, :matches => [%r{Applying configuration version 'static'}], :does_not_match => [%r{in default environment site.pp}, %r{include default environment testing_mod}, %r{Notice: include}], }, } end review[default_environment_scenario] = review_results( results[default_environment_scenario], default_expectations.call('production') ) step "Reviewing: #{non_existent_environment_scenario}" review[non_existent_environment_scenario] = review_results( results[non_existent_environment_scenario], default_expectations.call('doesnotexist') ) ######################### step "[ Assert Success ]" assert_review(review) diff --git a/acceptance/tests/environment/static.rb b/acceptance/tests/environment/static.rb index 6d283e792..288b97602 100644 --- a/acceptance/tests/environment/static.rb +++ b/acceptance/tests/environment/static.rb @@ -1,126 +1,130 @@ test_name "legacy environments" require 'puppet/acceptance/environment_utils' extend Puppet::Acceptance::EnvironmentUtils require 'puppet/acceptance/classifier_utils' extend Puppet::Acceptance::ClassifierUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + classify_nodes_as_agent_specified_if_classifer_present step "setup environments" stub_forge_on(master) testdir = create_tmpdir_for_user master, "confdir" puppet_conf_backup_dir = create_tmpdir_for_user(master, "puppet-conf-backup-dir") apply_manifest_on(master, environment_manifest(testdir), :catch_failures => true) results = {} review = {} #################### step "[ Run Tests ]" existing_legacy_scenario = "Test a specific, existing legacy environment configuration" step existing_legacy_scenario master_opts = { 'main' => { 'environmentpath' => '', }, 'testing' => { 'manifest' => "$confdir/testing-manifests", 'modulepath' => "$confdir/testing-modules", 'config_version' => "$confdir/static-version.sh", }, } if master.is_pe? master_opts['testing']['modulepath'] << ":#{master['sitemoduledir']}" end results[existing_legacy_scenario] = use_an_environment("testing", "legacy testing", master_opts, testdir, puppet_conf_backup_dir) default_environment_scenario = "Test behavior of default environment" step default_environment_scenario results[default_environment_scenario] = use_an_environment(nil, "default environment", master_opts, testdir, puppet_conf_backup_dir) non_existent_environment_scenario = "Test for an environment that does not exist" step non_existent_environment_scenario results[non_existent_environment_scenario] = use_an_environment("doesnotexist", "non existent environment", master_opts, testdir, puppet_conf_backup_dir) ######################################## step "[ Report on Environment Results ]" confdir = master.puppet['confdir'] step "Reviewing: #{existing_legacy_scenario}" review[existing_legacy_scenario] = review_results(results[existing_legacy_scenario], :puppet_config => { :exit_code => 0, :matches => [%r{manifest.*#{confdir}/testing-manifests$}, %r{modulepath.*#{confdir}/testing-modules(?::#{master['sitemoduledir']})?$}, %r{config_version.*#{confdir}/static-version.sh$}] }, :puppet_module_install => { :exit_code => 0, :matches => [%r{Preparing to install into #{confdir}/testing-modules}, %r{pmtacceptance-nginx}], }, :puppet_module_uninstall => { :exit_code => 0, :matches => [%r{Removed.*pmtacceptance-nginx.*from #{confdir}/testing-modules}], }, :puppet_apply => { :exit_code => 0, :matches => [%r{include legacy testing environment testing_mod}], }, :puppet_agent => { :exit_code => 2, :matches => [%r{Applying configuration version 'static'}, %r{in legacy testing environment site.pp}, %r{include legacy testing environment testing_mod}], } ) step "Reviewing: #{default_environment_scenario}" default_expectations = { :puppet_config => { :exit_code => 0, :matches => [%r{manifest.*#{confdir}/manifests/site.pp$}, %r{modulepath.*#{confdir}/modules:.*}, %r{^config_version\s+=\s*$}] }, :puppet_module_install => { :exit_code => 0, :matches => [%r{Preparing to install into #{confdir}/modules}, %r{pmtacceptance-nginx}], }, :puppet_module_uninstall => { :exit_code => 0, :matches => [%r{Removed.*pmtacceptance-nginx.*from #{confdir}/modules}], }, :puppet_apply => { :exit_code => 0, :matches => [%r{include default environment testing_mod}], }, :puppet_agent => { :exit_code => 2, :matches => [%r{Applying configuration version '\d+'}, %r{in default environment site.pp}, %r{include default environment testing_mod}], }, } review[default_environment_scenario] = review_results( results[default_environment_scenario], default_expectations ) step "Reviewing: #{non_existent_environment_scenario}" review[non_existent_environment_scenario] = review_results( results[non_existent_environment_scenario], default_expectations ) ######################### step "[ Assert Success ]" assert_review(review) diff --git a/acceptance/tests/modules/changes/module_with_modified_file.rb b/acceptance/tests/modules/changes/module_with_modified_file.rb index aa0f4889c..a350f6e99 100644 --- a/acceptance/tests/modules/changes/module_with_modified_file.rb +++ b/acceptance/tests/modules/changes/module_with_modified_file.rb @@ -1,23 +1,27 @@ test_name 'puppet module changes (on a module with a modified file)' +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + step 'Setup' stub_forge_on(master) testdir = master.tmpdir('module_changes_with_modified_file') on master, puppet("module install pmtacceptance-nginx --modulepath #{testdir}") on master, "echo >> #{testdir}/nginx/README" step 'Run module changes to check a module with a modified file' on( master, puppet("module changes #{testdir}/nginx"), :acceptable_exit_codes => [0] ) do pattern = Regexp.new([ %Q{.*Warning: 1 files modified.*}, ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.stderr) assert_equal <<-OUTPUT, stdout README OUTPUT end diff --git a/acceptance/tests/modules/changes/module_with_removed_file.rb b/acceptance/tests/modules/changes/module_with_removed_file.rb index 33c2391a1..aab0aff38 100644 --- a/acceptance/tests/modules/changes/module_with_removed_file.rb +++ b/acceptance/tests/modules/changes/module_with_removed_file.rb @@ -1,24 +1,28 @@ test_name 'puppet module changes (on a module with a removed file)' +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + step 'Setup' stub_forge_on(master) testdir = master.tmpdir('module_changes_with_removed_file') on master, puppet("module install pmtacceptance-nginx --modulepath #{testdir}") on master, "rm -rf #{testdir}/nginx/README" step 'Run module changes to check a module with a removed file' on( master, puppet("module changes #{testdir}/nginx"), :acceptable_exit_codes => [0] ) do pattern = Regexp.new([ %Q{.*Warning: 1 files modified.*}, ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.stderr) assert_equal <<-OUTPUT, stdout README OUTPUT end diff --git a/acceptance/tests/modules/changes/unmodified_module.rb b/acceptance/tests/modules/changes/unmodified_module.rb index d53c78a2d..a3e60dfc6 100644 --- a/acceptance/tests/modules/changes/unmodified_module.rb +++ b/acceptance/tests/modules/changes/unmodified_module.rb @@ -1,15 +1,19 @@ test_name 'puppet module changes (on an unmodified module)' +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + step 'Setup' stub_forge_on(master) testdir = master.tmpdir('module_changes_with_unmodified') on master, puppet("module install pmtacceptance-nginx --modulepath #{testdir}") step 'Run module changes to check an unmodified module' on( master, puppet("module changes #{testdir}/nginx"), :acceptable_exit_codes => [0] ) do assert_match /No modified files/, stdout end diff --git a/acceptance/tests/modules/install/already_installed.rb b/acceptance/tests/modules/install/already_installed.rb index 496448154..491085036 100644 --- a/acceptance/tests/modules/install/already_installed.rb +++ b/acceptance/tests/modules/install/already_installed.rb @@ -1,51 +1,55 @@ test_name "puppet module install (already installed)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_reference = "#{module_author}-#{module_name}" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step "Setup" do stub_forge_on(master) end step "Check that module is not installed" do assert_module_not_installed_on_disk(master, module_name) end step "Install module" do on master, puppet("module install #{module_reference}") assert_module_installed_on_disk(master, module_name) end step "Try to install a module that is already installed" do on master, puppet("module install #{module_reference}"), :acceptable_exit_codes => [0] do assert_match(/#{module_reference}.*is already installed/, stdout, "Error that module was already installed was not displayed") end assert_module_installed_on_disk(master, module_name) end step "Try to install a specific version of a module that is already installed" do on master, puppet("module install #{module_reference} --version 1.x"), :acceptable_exit_codes => [1] do assert_match(/Could not install module '#{module_reference}' \(v1.x\)/, stderr, "Error that specified module version could not be installed was not displayed") assert_match(/#{module_reference}.*is already installed/, stderr, "Error that module was already installed was not displayed") end assert_module_installed_on_disk(master, module_name) end step "Install a module that is already installed (with --force)" do on master, puppet("module install #{module_reference} --force") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) end diff --git a/acceptance/tests/modules/install/already_installed_elsewhere.rb b/acceptance/tests/modules/install/already_installed_elsewhere.rb index 6170dd2b0..a22a42eb9 100644 --- a/acceptance/tests/modules/install/already_installed_elsewhere.rb +++ b/acceptance/tests/modules/install/already_installed_elsewhere.rb @@ -1,65 +1,69 @@ test_name "puppet module install (already installed elsewhere)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_reference = "#{module_author}-#{module_name}" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) apply_manifest_on master, <<-PP file { [ '#{master['sitemoduledir']}', '#{master['sitemoduledir']}/#{module_name}', ]: ensure => directory; '#{master['sitemoduledir']}/#{module_name}/metadata.json': content => '{ "name": "#{module_author}/#{module_name}", "version": "0.0.1", "source": "", "author": "#{module_author}", "license": "MIT", "dependencies": [] }'; } PP default_moduledir = get_default_modulepath_for_host(master) step "Try to install a module that is already installed" on master, puppet("module install #{module_author}-#{module_name}") do assert_match(/#{module_reference}.*is already installed/, stdout, "Error that module was already installed was not displayed") end assert_module_not_installed_on_disk(master, module_name, default_moduledir) step "Try to install a specific version of a module that is already installed" on master, puppet("module install #{module_author}-#{module_name} --version 1.x"), :acceptable_exit_codes => [1] do assert_match(/Could not install module '#{module_author}-#{module_name}' \(v1.x\)/, stderr, "Error that specified module version could not be installed was not displayed") assert_match(/#{module_author}-#{module_name}.*is already installed/, stderr, "Error that module was already installed was not displayed") end assert_module_not_installed_on_disk(master, module_name, default_moduledir) step "Install a specifc module version that is already installed (with --force)" on master, puppet("module install #{module_author}-#{module_name} --force --version 0.0.1") do assert_module_installed_ui(stdout, module_author, module_name, '0.0.1', '==') end assert_module_installed_on_disk(master, module_name, default_moduledir) step "Install a module that is already installed (with --force)" on master, puppet("module install #{module_author}-#{module_name} --force") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name, default_moduledir) diff --git a/acceptance/tests/modules/install/already_installed_with_local_changes.rb b/acceptance/tests/modules/install/already_installed_with_local_changes.rb index b043898b8..42bf30479 100644 --- a/acceptance/tests/modules/install/already_installed_with_local_changes.rb +++ b/acceptance/tests/modules/install/already_installed_with_local_changes.rb @@ -1,51 +1,55 @@ test_name "puppet module install (already installed with local changes)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_reference = "#{module_author}-#{module_name}" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' do stub_forge_on(master) end step "Check that module is not installed" do assert_module_not_installed_on_disk(master, module_name) end step "Install module" do on master, puppet("module install #{module_reference}") assert_module_installed_on_disk(master, module_name) end step "Make local changes in installed module" do module_path = "#{get_default_modulepath_for_host(master)}/#{module_name}" on master, "echo 'changed' >> #{module_path}/README" end step "Try to install a specific version of a module that is already installed" do on master, puppet("module install #{module_reference} --version 1.x"), :acceptable_exit_codes => [1] do assert_match(/Could not install module '#{module_reference}' \(v1.x\)/, stderr, "Error that specified module version could not be installed was not displayed") assert_match(/#{module_reference}.*is already installed/, stderr, "Error that module was already installed was not displayed") assert_match(/changes made locally/, stderr, "Error that module has local changes was not displayed") end assert_module_installed_on_disk(master, module_name) end step "Install a module that is already installed (with --force)" do on master, puppet("module install #{module_reference} --force") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) #validate checksum end diff --git a/acceptance/tests/modules/install/basic_install.rb b/acceptance/tests/modules/install/basic_install.rb index 719a2724b..5ad9b1fb2 100644 --- a/acceptance/tests/modules/install/basic_install.rb +++ b/acceptance/tests/modules/install/basic_install.rb @@ -1,23 +1,27 @@ test_name "puppet module install (agent)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end agents.each do |agent| step 'setup' stub_forge_on(agent) step "install module '#{module_author}-#{module_name}'" on(agent, puppet("module install #{module_author}-#{module_name}")) do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(agent, module_name) end diff --git a/acceptance/tests/modules/install/force_ignores_dependencies.rb b/acceptance/tests/modules/install/force_ignores_dependencies.rb index f83d19b15..92015293c 100644 --- a/acceptance/tests/modules/install/force_ignores_dependencies.rb +++ b/acceptance/tests/modules/install/force_ignores_dependencies.rb @@ -1,35 +1,39 @@ test_name "puppet module install (force ignores dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "git" module_dependencies = ["apache"] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Try to install an unsatisfiable module" on master, puppet("module install #{module_author}-#{module_name}"), :acceptable_exit_codes => [1] do assert_match(/No version of '#{module_author}-#{module_name}' can satisfy all dependencies/, stderr, "Error that module dependencies could not be met was not displayed") end assert_module_not_installed_on_disk(master, module_name) module_dependencies.each do |dependency| assert_module_not_installed_on_disk(master, dependency) end step "Install an unsatisfiable module with force" on master, puppet("module install #{module_author}-#{module_name} --force") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) module_dependencies.each do |dependency| assert_module_not_installed_on_disk(master, dependency) end diff --git a/acceptance/tests/modules/install/ignoring_dependencies.rb b/acceptance/tests/modules/install/ignoring_dependencies.rb index aa1a0082a..1dd1e6755 100644 --- a/acceptance/tests/modules/install/ignoring_dependencies.rb +++ b/acceptance/tests/modules/install/ignoring_dependencies.rb @@ -1,24 +1,28 @@ test_name "puppet module install (ignoring dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_dependencies = ["stdlub"] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Install a module, but ignore dependencies" on master, puppet("module install #{module_author}-#{module_name} --ignore-dependencies") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) module_dependencies.each do |dependency| assert_module_not_installed_on_disk(master, dependency) end diff --git a/acceptance/tests/modules/install/nonexistent_directory.rb b/acceptance/tests/modules/install/nonexistent_directory.rb index 3ee753cb9..cd69134ff 100644 --- a/acceptance/tests/modules/install/nonexistent_directory.rb +++ b/acceptance/tests/modules/install/nonexistent_directory.rb @@ -1,37 +1,41 @@ test_name "puppet module install (nonexistent directory)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_dependencies = [] default_moduledir = get_default_modulepath_for_host(master) orig_installed_modules = get_installed_modules_for_hosts hosts teardown do on master, "mv #{default_moduledir}-bak #{default_moduledir}", :acceptable_exit_codes => [0, 1] rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) apply_manifest_on master, <<-PP file { '/tmp/modules': ensure => absent, recurse => true, force => true } PP step "Try to install a module to a non-existent directory" on master, puppet("module install #{module_author}-#{module_name} --target-dir /tmp/modules") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name, '/tmp/modules') step "Try to install a module to a non-existent implicit directory" # This test relies on destroying the default module directory... on master, "mv #{default_moduledir} #{default_moduledir}-bak" on master, puppet("module install #{module_author}-#{module_name}") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name, default_moduledir) diff --git a/acceptance/tests/modules/install/nonexistent_module.rb b/acceptance/tests/modules/install/nonexistent_module.rb index 19b63ef28..47ba72eaa 100644 --- a/acceptance/tests/modules/install/nonexistent_module.rb +++ b/acceptance/tests/modules/install/nonexistent_module.rb @@ -1,44 +1,48 @@ test_name "puppet module install (nonexistent module)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nonexistent" module_dependencies = [] default_moduledir = get_default_modulepath_for_host(master) orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Try to install a non-existent module" on master, puppet("module install #{module_author}-#{module_name}"), :acceptable_exit_codes => [1] do assert_match(/could not install '#{module_author}-#{module_name}'/i, stderr, "Error that module could not be installed was not displayed") assert_match(/no releases are available from/i, stderr, "Error that no releases were found was not displayed") end step "Try to install a non-existent module (JSON rendering)" on master, puppet("module --render-as json install #{module_author}-#{module_name}") do require 'json' str = stdout.lines.to_a.last json = JSON.parse(str) oneline_expectation = /could not install '#{module_author}-#{module_name}'; no releases are available from/i multiline_expectation = /could not install '#{module_author}-#{module_name}'.*no releases are available from.*have at least one published release.*\z/im assert_equal 'failure', json['result'] assert_equal "#{module_author}-#{module_name}", json['module_name'] assert_equal '>= 0.0.0', json['module_version'] assert_equal default_moduledir, json['install_dir'] assert_match oneline_expectation, json['error']['oneline'] assert_match multiline_expectation, json['error']['multiline'] end diff --git a/acceptance/tests/modules/install/with_debug.rb b/acceptance/tests/modules/install/with_debug.rb index 29223dcd3..87cb1d75f 100644 --- a/acceptance/tests/modules/install/with_debug.rb +++ b/acceptance/tests/modules/install/with_debug.rb @@ -1,22 +1,26 @@ test_name "puppet module install (with debug)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Install a module with debug output" on master, puppet("module install #{module_author}-#{module_name} --debug") do assert_match(/Debug: Executing/, stdout, "No 'Debug' output displayed!") end diff --git a/acceptance/tests/modules/install/with_dependencies.rb b/acceptance/tests/modules/install/with_dependencies.rb index e89b3b7f8..c58d52b64 100644 --- a/acceptance/tests/modules/install/with_dependencies.rb +++ b/acceptance/tests/modules/install/with_dependencies.rb @@ -1,28 +1,32 @@ test_name "puppet module install (with dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_dependencies = ["stdlub"] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Install a module with dependencies" on master, puppet("module install #{module_author}-#{module_name}") do assert_module_installed_ui(stdout, module_author, module_name) module_dependencies.each do |dependency| assert_module_installed_ui(stdout, module_author, dependency) end end assert_module_installed_on_disk(master, module_name) module_dependencies.each do |dependency| assert_module_installed_on_disk(master, dependency) end diff --git a/acceptance/tests/modules/install/with_environment.rb b/acceptance/tests/modules/install/with_environment.rb index fa608f230..b7fc76dfe 100644 --- a/acceptance/tests/modules/install/with_environment.rb +++ b/acceptance/tests/modules/install/with_environment.rb @@ -1,72 +1,76 @@ test_name 'puppet module install (with environment)' require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + tmpdir = master.tmpdir('environmentpath') module_author = "pmtacceptance" module_name = "nginx" orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) puppet_conf = generate_base_legacy_and_directory_environments(tmpdir) check_module_install_in = lambda do |environment_path, module_install_args| on master, "puppet module install #{module_author}-#{module_name} --config=#{puppet_conf} #{module_install_args}" do assert_module_installed_ui(stdout, module_author, module_name) assert_match(/#{environment_path}/, stdout, "Notice of non default install path was not displayed") end assert_module_installed_on_disk(master, module_name, environment_path) end step 'Install a module into a non default legacy environment' do check_module_install_in.call("#{tmpdir}/legacyenv/modules", "--environment=legacyenv") end step 'Enable directory environments' do on master, puppet("config", "set", "environmentpath", "#{tmpdir}/environments", "--section", "main", "--config", puppet_conf) end step 'Install a module into a non default directory environment' do check_module_install_in.call("#{tmpdir}/environments/direnv/modules", "--environment=direnv") end step 'Prepare a separate modulepath' modulepath_dir = master.tmpdir("modulepath") apply_manifest_on(master, <<-MANIFEST , :catch_failures => true) file { [ '#{tmpdir}/environments/production', '#{modulepath_dir}', ]: ensure => directory, owner => #{master['user']}, } MANIFEST step "Install a module into --modulepath #{modulepath_dir} despite the implicit production directory env existing" do check_module_install_in.call(modulepath_dir, "--modulepath=#{modulepath_dir}") end step "Uninstall so we can try a different scenario" do on master, "puppet module uninstall #{module_author}-#{module_name} --config=#{puppet_conf} --modulepath=#{modulepath_dir}" end step "Install a module into --modulepath #{modulepath_dir} with a directory env specified" do check_module_install_in.call(modulepath_dir, "--modulepath=#{modulepath_dir} --environment=direnv") end diff --git a/acceptance/tests/modules/install/with_existing_module_directory.rb b/acceptance/tests/modules/install/with_existing_module_directory.rb index 0802a93fb..ebfed1116 100644 --- a/acceptance/tests/modules/install/with_existing_module_directory.rb +++ b/acceptance/tests/modules/install/with_existing_module_directory.rb @@ -1,78 +1,82 @@ test_name "puppet module install (with existing module directory)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) apply_manifest_on master, <<-PP file { [ '#{default_moduledir}/#{module_name}', '#{default_moduledir}/apache', ]: ensure => directory; '#{default_moduledir}/#{module_name}/metadata.json': content => '{ "name": "not#{module_author}/#{module_name}", "version": "0.0.3", "source": "", "author": "not#{module_author}", "license": "MIT", "dependencies": [] }'; [ '#{default_moduledir}/#{module_name}/extra.json', '#{default_moduledir}/apache/extra.json', ]: content => ''; } PP step "Try to install a module with a name collision" module_name = "nginx" on master, puppet("module install #{module_author}-#{module_name}"), :acceptable_exit_codes => [1] do assert_match(/Installation would overwrite #{default_moduledir}\/#{module_name}/, stderr, "Error of module collision was not displayed") end on master, "[ -f #{default_moduledir}/#{module_name}/extra.json ]" step "Try to install a module with a path collision" module_name = "apache" on master, puppet("module install #{module_author}-#{module_name}"), :acceptable_exit_codes => [1] do assert_match(/Installation would overwrite #{default_moduledir}\/#{module_name}/, stderr, "Error of module collision was not displayed") end on master, "[ -f #{default_moduledir}/#{module_name}/extra.json ]" step "Try to install a module with a dependency that has collides" module_name = "php" on master, puppet("module install #{module_author}-#{module_name} --version 0.0.1"), :acceptable_exit_codes => [1] do assert_match(/Dependency .* would overwrite/, stderr, "Error of dependency collision was not displayed") end on master, "[ -f #{default_moduledir}/apache/extra.json ]" step "Install a module with a name collision by using --force" module_name = "nginx" on master, puppet("module install #{module_author}-#{module_name} --force"), :acceptable_exit_codes => [0] do assert_module_installed_ui(stdout, module_author, module_name) end on master, "[ ! -f #{default_moduledir}/#{module_name}/extra.json ]" step "Install an module with a name collision by using --force" module_name = "apache" on master, puppet("module install #{module_author}-#{module_name} --force"), :acceptable_exit_codes => [0] do assert_module_installed_ui(stdout, module_author, module_name) end on master, "[ ! -f #{default_moduledir}/#{module_name}/extra.json ]" diff --git a/acceptance/tests/modules/install/with_modulepath.rb b/acceptance/tests/modules/install/with_modulepath.rb index 12c72e2ec..7b634d33a 100644 --- a/acceptance/tests/modules/install/with_modulepath.rb +++ b/acceptance/tests/modules/install/with_modulepath.rb @@ -1,39 +1,43 @@ # encoding: UTF-8 test_name "puppet module install (with modulepath)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) # TODO: make helper take modulepath on master, "rm -rf #{master['puppetpath']}/modules2" end step 'Setup' stub_forge_on(master) on master, "mkdir -p #{master['puppetpath']}/modules2" step "Install a module with relative modulepath" on master, "cd #{master['puppetpath']}/modules2 && puppet module install #{module_author}-#{module_name} --modulepath=." do assert_module_installed_ui(stdout, module_author, module_name) assert_match(/#{master['puppetpath']}\/modules2/, stdout, "Notice of non default install path was not displayed") end assert_module_installed_on_disk(master, module_name, "#{master['puppetpath']}/modules2") step "Install a module with absolute modulepath" on master, "test -d #{master['puppetpath']}/modules2/#{module_name} && rm -rf #{master['puppetpath']}/modules2/#{module_name}" on master, puppet("module install #{module_author}-#{module_name} --modulepath=#{master['puppetpath']}/modules2") do assert_module_installed_ui(stdout, module_author, module_name) assert_match(/#{master['puppetpath']}\/modules2/, stdout, "Notice of non default install path was not displayed") end assert_module_installed_on_disk(master, module_name, "#{master['puppetpath']}/modules2") diff --git a/acceptance/tests/modules/install/with_necessary_upgrade.rb b/acceptance/tests/modules/install/with_necessary_upgrade.rb index ff31aa19c..740b2b9a6 100644 --- a/acceptance/tests/modules/install/with_necessary_upgrade.rb +++ b/acceptance/tests/modules/install/with_necessary_upgrade.rb @@ -1,36 +1,40 @@ test_name "puppet module install (with necessary dependency upgrade)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) step "Install an older module version" module_version = '1.6.0' on master, puppet("module install #{module_author}-#{module_name} --version #{module_version}") do assert_match(/#{module_author}-#{module_name} \(.*v#{module_version}.*\)/, stdout, "Notice of specific version installed was not displayed") end on master, "grep \"version '#{module_version}'\" #{default_moduledir}/#{module_name}/Modulefile" step "Install a module that requires the older module dependency be upgraded" on master, puppet("module install #{module_author}-apollo") do assert_module_installed_ui(stdout, module_author, module_name, module_version, '>') end on master, puppet("module list --modulepath #{default_moduledir}") do assert_module_installed_ui(stdout, module_author, module_name, module_version, '>') end diff --git a/acceptance/tests/modules/install/with_no_dependencies.rb b/acceptance/tests/modules/install/with_no_dependencies.rb index b4c7f3e00..f31d58a98 100644 --- a/acceptance/tests/modules/install/with_no_dependencies.rb +++ b/acceptance/tests/modules/install/with_no_dependencies.rb @@ -1,22 +1,26 @@ test_name "puppet module install (with no dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "nginx" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) step "Install a module with no dependencies" on master, puppet("module install #{module_author}-#{module_name}") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) diff --git a/acceptance/tests/modules/install/with_unnecessary_upgrade.rb b/acceptance/tests/modules/install/with_unnecessary_upgrade.rb index 76449f72c..61b943560 100644 --- a/acceptance/tests/modules/install/with_unnecessary_upgrade.rb +++ b/acceptance/tests/modules/install/with_unnecessary_upgrade.rb @@ -1,38 +1,42 @@ test_name "puppet module install (with unnecessary dependency upgrade)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_dependencies = ["stdlub"] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' default_moduledir = get_default_modulepath_for_host(master) stub_forge_on(master) step "Install an older module version" module_version = '1.7.0' on master, puppet("module install #{module_author}-#{module_name} --version #{module_version}") do assert_match(/#{module_author}-#{module_name} \(.*v#{module_version}.*\)/, stdout, "Notice of specific version installed was not displayed") end on master, "grep \"version '#{module_version}'\" #{default_moduledir}/#{module_name}/Modulefile" step "Install a module that depends on a dependency that could be upgraded, but already satisfies constraints" module_name = "apollo" on master, puppet("module install #{module_author}-#{module_name}") do assert_module_installed_ui(stdout, module_author, module_name) end on master, puppet("module list --modulepath #{default_moduledir}") do module_name = "java" assert_module_installed_ui(stdout, module_author, module_name, module_version, '==') end diff --git a/acceptance/tests/modules/install/with_unsatisfied_constraints.rb b/acceptance/tests/modules/install/with_unsatisfied_constraints.rb index 456b93fe2..b409fcea4 100644 --- a/acceptance/tests/modules/install/with_unsatisfied_constraints.rb +++ b/acceptance/tests/modules/install/with_unsatisfied_constraints.rb @@ -1,72 +1,76 @@ test_name "puppet module install (with unsatisfied constraints)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "git" module_reference = "#{module_author}-#{module_name}" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) apply_manifest_on master, <<-PP file { [ '#{master['distmoduledir']}/crakorn', ]: ensure => directory; '#{master['distmoduledir']}/crakorn/metadata.json': content => '{ "name": "jimmy/crakorn", "version": "0.0.1", "source": "", "author": "jimmy", "license": "MIT", "dependencies": [ { "name": "#{module_author}/stdlub", "version_requirement": "1.x" } ] }'; } PP step "Try to install a module that has an unsatisfiable dependency" on master, puppet("module install #{module_author}-#{module_name}"), :acceptable_exit_codes => [1] do assert_match(/No version.*can satisfy all dependencies/, stderr, "Unsatisfiable dependency error was not displayed") assert_match(/Use `puppet module install --ignore-dependencies/, stderr, "Use --ignore-dependencies error was not displayed") end assert_module_not_installed_on_disk(master, module_name) # FIXME I don't understand what behaviour this looking for? step "Install the module with an unsatisfiable dependency" on master, puppet("module install #{module_author}-#{module_name} --ignore-dependencies") do assert_module_installed_ui(stdout, module_author, module_name) end assert_module_installed_on_disk(master, module_name) step "Try to install a specific version of the unsatisfiable dependency" on master, puppet("module install #{module_author}-stdlub --version 1.x"), :acceptable_exit_codes => [1] do assert_match(/No version.* can satisfy all dependencies/, stderr, "Unsatisfiable dependency was not displayed") end assert_module_not_installed_on_disk(master, 'stdlub') step "Try to install any version of the unsatisfiable dependency" on master, puppet("module install #{module_author}-stdlub"), :acceptable_exit_codes => [1] do assert_match(/No version.* can satisfy all dependencies/, stderr, "Unsatisfiable dependency was not displayed") end assert_module_not_installed_on_disk(master, 'stdlub') step "Install the unsatisfiable dependency with --force" on master, puppet("module install #{module_author}-stdlub --force") do assert_module_installed_ui(stdout, module_author, 'stdlub') end assert_module_installed_on_disk(master, 'stdlub') diff --git a/acceptance/tests/modules/install/with_version.rb b/acceptance/tests/modules/install/with_version.rb index 41c5fdb5b..c2de5aeb7 100644 --- a/acceptance/tests/modules/install/with_version.rb +++ b/acceptance/tests/modules/install/with_version.rb @@ -1,31 +1,35 @@ test_name "puppet module install (with version)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_author = "pmtacceptance" module_name = "java" module_version = "1.7.0" module_dependencies = [] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end agents.each do |agent| step 'setup' stub_forge_on(agent) step " install module '#{module_author}-#{module_name}'" opts ||= Hash.new opts['ENV']=Command::DEFAULT_GIT_ENV command = agent['platform'] =~ /windows/ ? Command.new("'puppet module install --version \"<#{module_version}\" #{module_author}-#{module_name}'", [], opts) : puppet("module install --version \"<#{module_version}\" #{module_author}-#{module_name}") on(agent, command) do assert_module_installed_ui(stdout, module_author, module_name, module_version, '<') end assert_module_installed_on_disk(agent, module_name) end diff --git a/acceptance/tests/modules/list/with_environment.rb b/acceptance/tests/modules/list/with_environment.rb index e57138150..d3ffc8857 100644 --- a/acceptance/tests/modules/list/with_environment.rb +++ b/acceptance/tests/modules/list/with_environment.rb @@ -1,45 +1,49 @@ test_name 'puppet module list (with environment)' require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + tmpdir = master.tmpdir('environmentpath') step 'Setup' stub_forge_on(master) puppet_conf = generate_base_legacy_and_directory_environments(tmpdir) install_test_module_in = lambda do |environment| on master, puppet("module", "install", "pmtacceptance-nginx", "--config", puppet_conf, "--environment", environment) end check_module_list_in = lambda do |environment, environment_path| on master, puppet("module", "list", "--config", puppet_conf, "--environment", environment) do assert_match(/#{environment_path}/, stdout) assert_match(/pmtacceptance-nginx/, stdout) end end step 'List modules in a non default legacy environment' do install_test_module_in.call('legacyenv') check_module_list_in.call('legacyenv', "#{tmpdir}/legacyenv/modules") end step 'Enable directory environments' do on master, puppet("config", "set", "environmentpath", "#{tmpdir}/environments", "--section", "main", "--config", puppet_conf) end step 'List modules in a non default directory environment' do install_test_module_in.call('direnv') check_module_list_in.call('direnv', "#{tmpdir}/environments/direnv/modules") end diff --git a/acceptance/tests/modules/search/formatting.rb b/acceptance/tests/modules/search/formatting.rb index 244a192b6..2c290a21a 100644 --- a/acceptance/tests/modules/search/formatting.rb +++ b/acceptance/tests/modules/search/formatting.rb @@ -1,16 +1,20 @@ test_name 'puppet module search output should be well structured' +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + step 'Setup' stub_forge_on(master) step 'Search results should line up by column' on master, puppet("module search apache") do assert_match(/Searching/, stdout.lines.first) columns = stdout.lines.to_a[1].split(/\s{2}(?=\S)/) pattern = /^#{ columns.map { |c| c.chomp.gsub(/./, '.') }.join(' ') }$/ stdout.gsub(/\e.*?m/, '').lines.to_a[1..-1].each do |line| assert_match(pattern, line.chomp, 'columns were misaligned') end end diff --git a/acceptance/tests/modules/search/no_results.rb b/acceptance/tests/modules/search/no_results.rb index a250fcda2..e71bce3a3 100644 --- a/acceptance/tests/modules/search/no_results.rb +++ b/acceptance/tests/modules/search/no_results.rb @@ -1,12 +1,16 @@ test_name 'puppet module search should print a reasonable message for no results' +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + module_name = "module_not_appearing_in_this_forge" step 'Setup' stub_forge_on(master) step "Search for a module that doesn't exist" on master, puppet("module search #{module_name}") do |res| assert_match(/Searching/, res.stdout) assert_match(/No results found for '#{module_name}'/, res.stdout) end diff --git a/acceptance/tests/modules/uninstall/with_multiple_modules_installed.rb b/acceptance/tests/modules/uninstall/with_multiple_modules_installed.rb index 5a56091c7..1e43905ff 100644 --- a/acceptance/tests/modules/uninstall/with_multiple_modules_installed.rb +++ b/acceptance/tests/modules/uninstall/with_multiple_modules_installed.rb @@ -1,68 +1,72 @@ test_name "puppet module uninstall (with multiple modules installed)" +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + if master.is_pe? skip_test end step 'Setup' testdir = master.tmpdir('unistallmultiple') stub_forge_on(master) teardown do on master, "rm -rf #{master['distmoduledir']}/java" on master, "rm -rf #{master['distmoduledir']}/stdlub" end on master, "mkdir -p #{testdir}/modules" on master, "chown -R #{master['user']}:#{master['group']} #{testdir}" master_opts = { 'main' => { 'modulepath' => "#{testdir}/modules:#{master['sitemoduledir']}:#{master['distmoduledir']}" } } with_puppet_running_on master, master_opts, testdir do on master, puppet("module install pmtacceptance-java --version 1.6.0 --modulepath #{master['distmoduledir']}") on master, puppet("module install pmtacceptance-java --version 1.7.0 --modulepath #{testdir}/modules") on master, puppet("module list --modulepath #{master['distmoduledir']}") do pattern = Regexp.new([ "#{master['distmoduledir']}", "├── pmtacceptance-java \\(.*v1.6.0.*\\)", "└── pmtacceptance-stdlub \\(.*v1.0.0.*\\)" ].join("\n")) assert_match(pattern, result.output) end on master, puppet("module list --modulepath #{testdir}/modules") do pattern = Regexp.new([ "#{testdir}/modules", "├── pmtacceptance-java \\(.*v1.7.0.*\\)", "└── pmtacceptance-stdlub \\(.*v1.0.0.*\\)", ].join("\n")) assert_match(pattern, result.output) end step "Try to uninstall a module that exists multiple locations in the module path" on master, puppet("module uninstall pmtacceptance-java"), :acceptable_exit_codes => [1] do pattern = Regexp.new([ ".*Notice: Preparing to uninstall 'pmtacceptance-java' .*", ".*Error: Could not uninstall module 'pmtacceptance-java'", " Module 'pmtacceptance-java' appears multiple places in the module path", " 'pmtacceptance-java' \\(v1.7.0\\) was found in #{testdir}/modules", " 'pmtacceptance-java' \\(v1.6.0\\) was found in #{master['distmoduledir']}", " Use the `--modulepath` option to limit the search to specific directories.*" ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.output) end step "Uninstall a module that exists multiple locations by restricting the --modulepath" on master, puppet("module uninstall pmtacceptance-java --modulepath #{master['distmoduledir']}") do pattern = Regexp.new([ ".*Notice: Preparing to uninstall 'pmtacceptance-java' .*", "Removed 'pmtacceptance-java' \\(.*v1.6.0.*\\) from #{master['distmoduledir']}" ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.output) end end diff --git a/acceptance/tests/modules/upgrade/in_a_secondary_directory.rb b/acceptance/tests/modules/upgrade/in_a_secondary_directory.rb index 3b08574b9..58f33a6b4 100644 --- a/acceptance/tests/modules/upgrade/in_a_secondary_directory.rb +++ b/acceptance/tests/modules/upgrade/in_a_secondary_directory.rb @@ -1,34 +1,38 @@ test_name "puppet module upgrade (in a secondary directory)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) on master, "mkdir -p #{master['distmoduledir']}" on master, puppet("module install pmtacceptance-java --version 1.6.0 --target-dir #{master['distmoduledir']}") on master, puppet("module list --modulepath #{master['distmoduledir']}") do assert_equal <<-OUTPUT, stdout #{master['distmoduledir']} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Upgrade a module that has a more recent version published" on master, puppet("module upgrade pmtacceptance-java") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{master['distmoduledir']} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{master['distmoduledir']} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.1\e[0m) OUTPUT end diff --git a/acceptance/tests/modules/upgrade/introducing_new_dependencies.rb b/acceptance/tests/modules/upgrade/introducing_new_dependencies.rb index 5f4e23d37..1c26d949f 100644 --- a/acceptance/tests/modules/upgrade/introducing_new_dependencies.rb +++ b/acceptance/tests/modules/upgrade/introducing_new_dependencies.rb @@ -1,39 +1,43 @@ test_name "puppet module upgrade (introducing new dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-stdlub --version 1.0.0") on master, puppet("module install pmtacceptance-java --version 1.7.0") on master, puppet("module install pmtacceptance-postql --version 0.0.2") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.7.0\e[0m) ├── pmtacceptance-postql (\e[0;36mv0.0.2\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Upgrade a module to a version that introduces new dependencies" on master, puppet("module upgrade pmtacceptance-postql") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-postql' ...\e[0m \e[mNotice: Found 'pmtacceptance-postql' (\e[0;36mv0.0.2\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └─┬ pmtacceptance-postql (\e[0;36mv0.0.2 -> v1.0.0\e[0m) └── pmtacceptance-geordi (\e[0;36mv0.0.1\e[0m) OUTPUT end diff --git a/acceptance/tests/modules/upgrade/not_upgradable.rb b/acceptance/tests/modules/upgrade/not_upgradable.rb index aa503b3d0..78d855417 100644 --- a/acceptance/tests/modules/upgrade/not_upgradable.rb +++ b/acceptance/tests/modules/upgrade/not_upgradable.rb @@ -1,86 +1,90 @@ test_name "puppet module upgrade (not upgradable)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, "mkdir -p #{default_moduledir}" apply_manifest_on master, <<-PP file { [ '#{default_moduledir}/nginx', '#{default_moduledir}/unicorns', ]: ensure => directory; '#{default_moduledir}/unicorns/metadata.json': content => '{ "name": "notpmtacceptance/unicorns", "version": "0.0.3", "source": "", "author": "notpmtacceptance", "license": "MIT", "dependencies": [] }'; } PP on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── nginx (\e[0;36m???\e[0m) ├── notpmtacceptance-unicorns (\e[0;36mv0.0.3\e[0m) ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Try to upgrade a module that is not installed" on master, puppet("module upgrade pmtacceptance-nginx"), :acceptable_exit_codes => [1] do pattern = Regexp.new([ %Q{.*Notice: Preparing to upgrade 'pmtacceptance-nginx' .*}, %Q{.*Error: Could not upgrade module 'pmtacceptance-nginx'}, %Q{ Module 'pmtacceptance-nginx' is not installed}, %Q{ Use `puppet module install` to install this module.*}, ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.output) end # TODO: Determine the appropriate response for this test. # step "Try to upgrade a local module" # on master, puppet("module upgrade nginx"), :acceptable_exit_codes => [1] do # pattern = Regexp.new([ # %Q{.*Notice: Preparing to upgrade 'nginx' .*}, # %Q{.*Notice: Found 'nginx' \\(.*\\?\\?\\?.*\\) in #{default_moduledir} .*}, # %Q{.*Notice: Downloading from https://forgeapi.puppetlabs.com .*}, # %Q{.*Error: Could not upgrade module 'nginx' \\(\\?\\?\\? -> latest\\)}, # %Q{ Module 'nginx' does not exist on https://forgeapi.puppetlabs.com.*}, # ].join("\n"), Regexp::MULTILINE) # assert_match(pattern, result.output) # end step "Try to upgrade a module that doesn't exist in module_repository" on master, puppet("module upgrade notpmtacceptance-unicorns"), :acceptable_exit_codes => [1] do assert_match(/could not upgrade 'notpmtacceptance-unicorns'/i, stderr, 'Could not upgrade error not shown') assert_match(/no releases are available from/i, stderr, 'Upgrade failure reason not shown') end step "Try to upgrade an installed module to a version that doesn't exist in module_repository" on master, puppet("module upgrade pmtacceptance-java --version 2.0.0"), :acceptable_exit_codes => [1] do assert_match(/could not upgrade 'pmtacceptance-java'/i, stderr, 'Could not upgrade error not shown') assert_match(/no releases matching '2.0.0' are available from/i, stderr, 'Upgrade failure reason not shown') end diff --git a/acceptance/tests/modules/upgrade/to_a_specific_version.rb b/acceptance/tests/modules/upgrade/to_a_specific_version.rb index f5af4713a..15464442a 100644 --- a/acceptance/tests/modules/upgrade/to_a_specific_version.rb +++ b/acceptance/tests/modules/upgrade/to_a_specific_version.rb @@ -1,35 +1,39 @@ test_name "puppet module upgrade (to a specific version)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Upgrade a module to a specific (greater) version" on master, puppet("module upgrade pmtacceptance-java --version 1.7.0") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.0\e[0m) OUTPUT end diff --git a/acceptance/tests/modules/upgrade/to_installed_version.rb b/acceptance/tests/modules/upgrade/to_installed_version.rb index 02ff8b722..dbfa51e59 100644 --- a/acceptance/tests/modules/upgrade/to_installed_version.rb +++ b/acceptance/tests/modules/upgrade/to_installed_version.rb @@ -1,65 +1,69 @@ test_name "puppet module upgrade (to installed version)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Try to upgrade a module to the current version" on master, puppet("module upgrade pmtacceptance-java --version 1.6.x"), :acceptable_exit_codes => [0] do assert_match(/The installed version is already the latest version matching/, stdout, "Error that specified version was already satisfied was not displayed") end step "Upgrade a module to the current version with --force" on master, puppet("module upgrade pmtacceptance-java --version 1.6.x --force") do assert_match(/#{default_moduledir}/, stdout, 'Error that distmoduledir was not displayed') assert_match(/\'pmtacceptance-java\' \(.*v1\.6\.0.*\)/, stdout, 'Error that package name and version were not displayed') end step "Upgrade to the latest version" on master, puppet("module upgrade pmtacceptance-java") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.1\e[0m) OUTPUT end step "Try to upgrade a module to the latest version with the latest version installed" on master, puppet("module upgrade pmtacceptance-java"), :acceptable_exit_codes => [0] do assert_match(/The installed version is already the latest version matching.*latest/, stdout, "Error that latest version was already installed was not displayed") end step "Upgrade a module to the latest version with --force" on master, puppet("module upgrade pmtacceptance-java --force") do assert_match(/#{default_moduledir}/, stdout, 'Error that distmoduledir was not displayed') assert_match(/pmtacceptance-java \(.*v1\.7\.1.*\)/, stdout, 'Error that package name and version were not displayed') end diff --git a/acceptance/tests/modules/upgrade/with_constraints_on_it.rb b/acceptance/tests/modules/upgrade/with_constraints_on_it.rb index 32644faaa..3bb9acdb8 100644 --- a/acceptance/tests/modules/upgrade/with_constraints_on_it.rb +++ b/acceptance/tests/modules/upgrade/with_constraints_on_it.rb @@ -1,37 +1,41 @@ test_name "puppet module upgrade (with constraints on it)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-java --version 1.7.0") on master, puppet("module install pmtacceptance-apollo") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-apollo (\e[0;36mv0.0.1\e[0m) ├── pmtacceptance-java (\e[0;36mv1.7.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Upgrade a version-constrained module that has an upgrade" on master, puppet("module upgrade pmtacceptance-java") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.7.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.7.0 -> v1.7.1\e[0m) OUTPUT end diff --git a/acceptance/tests/modules/upgrade/with_constraints_on_its_dependencies.rb b/acceptance/tests/modules/upgrade/with_constraints_on_its_dependencies.rb index 5fd1ec043..ec1b487bd 100644 --- a/acceptance/tests/modules/upgrade/with_constraints_on_its_dependencies.rb +++ b/acceptance/tests/modules/upgrade/with_constraints_on_its_dependencies.rb @@ -1,83 +1,87 @@ test_name "puppet module upgrade (with constraints on its dependencies)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) apply_manifest_on master, <<-PP file { [ '#{default_moduledir}/unicorns', ]: ensure => directory; '#{default_moduledir}/unicorns/metadata.json': content => '{ "name": "notpmtacceptance/unicorns", "version": "0.0.3", "source": "", "author": "notpmtacceptance", "license": "MIT", "dependencies": [ { "name": "pmtacceptance/stdlub", "version_requirement": "0.0.2" } ] }'; } PP on master, puppet("module install pmtacceptance-stdlub --version 0.0.2") on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── notpmtacceptance-unicorns (\e[0;36mv0.0.3\e[0m) ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv0.0.2\e[0m) OUTPUT end step "Try to upgrade a module with constraints on its dependencies that cannot be met" on master, puppet("module upgrade pmtacceptance-java --version 1.7.1"), :acceptable_exit_codes => [1] do assert_match(/No version.* can satisfy all dependencies/, stderr, "Unsatisfiable dependency was not displayed") end step "Relax constraints" on master, puppet("module uninstall notpmtacceptance-unicorns") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv0.0.2\e[0m) OUTPUT end step "Upgrade a single module, ignoring its dependencies" on master, puppet("module upgrade pmtacceptance-java --version 1.7.0 --ignore-dependencies") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.0\e[0m) OUTPUT end step "Attempt to upgrade a module where dependency requires upgrade across major version" on master, puppet("module upgrade pmtacceptance-java"), :acceptable_exit_codes => [1] do assert_match(/There are 1 newer versions/, stderr, 'Number of newer releases was not displayed') assert_match(/Dependencies will not be automatically upgraded across major versions/, stderr, 'Dependency upgrade restriction message was not displayed') assert_match(/pmtacceptance-stdlub/, stderr, 'Potential culprit depdendency was not displayed') end diff --git a/acceptance/tests/modules/upgrade/with_environment.rb b/acceptance/tests/modules/upgrade/with_environment.rb index 3a4aa8c72..bbb76e890 100644 --- a/acceptance/tests/modules/upgrade/with_environment.rb +++ b/acceptance/tests/modules/upgrade/with_environment.rb @@ -1,51 +1,55 @@ test_name "puppet module upgrade (with environment)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + tmpdir = master.tmpdir('environmentpath') module_author = "pmtacceptance" module_name = "java" module_dependencies = ["stdlub"] orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) puppet_conf = generate_base_legacy_and_directory_environments(tmpdir) install_test_module_in = lambda do |environment| on master, puppet("module install #{module_author}-#{module_name} --config=#{puppet_conf} --version 1.6.0 --environment=#{environment}") do assert_module_installed_ui(stdout, module_author, module_name) end end check_module_upgrade_in = lambda do |environment, environment_path| on master, puppet("module upgrade #{module_author}-#{module_name} --config=#{puppet_conf} --environment=#{environment}") do assert_module_installed_ui(stdout, module_author, module_name) on master, "[ -f #{environment_path}/#{module_name}/Modulefile ]" on master, "grep 1.7.1 #{environment_path}/#{module_name}/Modulefile" end end step "Upgrade a module that has a more recent version published in a legacy environment" do install_test_module_in.call('legacyenv') check_module_upgrade_in.call('legacyenv', "#{tmpdir}/legacyenv/modules") end step 'Enable directory environments' do on master, puppet("config", "set", "environmentpath", "#{tmpdir}/environments", "--section", "main", "--config", puppet_conf) end step "Upgrade a module that has a more recent version published in a directory environment" do install_test_module_in.call('direnv') check_module_upgrade_in.call('direnv', "#{tmpdir}/environments/direnv/modules") end diff --git a/acceptance/tests/modules/upgrade/with_local_changes.rb b/acceptance/tests/modules/upgrade/with_local_changes.rb index f4f930a00..f51b0a551 100644 --- a/acceptance/tests/modules/upgrade/with_local_changes.rb +++ b/acceptance/tests/modules/upgrade/with_local_changes.rb @@ -1,57 +1,61 @@ test_name "puppet module upgrade (with local changes)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end apply_manifest_on master, <<-PP file { '#{default_moduledir}/java/README': content => "I CHANGE MY READMES"; '#{default_moduledir}/java/NEWFILE': content => "I don't exist.'"; } PP step "Try to upgrade a module with local changes" on master, puppet("module upgrade pmtacceptance-java"), :acceptable_exit_codes => [1] do pattern = Regexp.new([ %Q{.*Notice: Preparing to upgrade 'pmtacceptance-java' ....*}, %Q{.*Notice: Found 'pmtacceptance-java' \\(.*v1.6.0.*\\) in #{default_moduledir} ....*}, %Q{.*Error: Could not upgrade module 'pmtacceptance-java' \\(v1.6.0 -> latest\\)}, %Q{ Installed module has had changes made locally}, %Q{ Use `puppet module upgrade --ignore-changes` to upgrade this module anyway.*}, ].join("\n"), Regexp::MULTILINE) assert_match(pattern, result.output) end on master, %{[[ "$(cat #{default_moduledir}/java/README)" == "I CHANGE MY READMES" ]]} on master, "[ -f #{default_moduledir}/java/NEWFILE ]" step "Upgrade a module with local changes with --force" on master, puppet("module upgrade pmtacceptance-java --force") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.1\e[0m) OUTPUT end on master, %{[[ "$(cat #{default_moduledir}/java/README)" != "I CHANGE MY READMES" ]]} on master, "[ ! -f #{default_moduledir}/java/NEWFILE ]" diff --git a/acceptance/tests/modules/upgrade/with_update_available.rb b/acceptance/tests/modules/upgrade/with_update_available.rb index 3dffd2a8b..7368e13ab 100644 --- a/acceptance/tests/modules/upgrade/with_update_available.rb +++ b/acceptance/tests/modules/upgrade/with_update_available.rb @@ -1,38 +1,42 @@ test_name "puppet module upgrade (with update available)" require 'puppet/acceptance/module_utils' extend Puppet::Acceptance::ModuleUtils +hosts.each do |host| + skip_test "skip tests requiring forge certs on solaris and aix" if host['platform'] =~ /solaris/ +end + orig_installed_modules = get_installed_modules_for_hosts hosts teardown do rm_installed_modules_from_hosts orig_installed_modules, (get_installed_modules_for_hosts hosts) end step 'Setup' stub_forge_on(master) default_moduledir = get_default_modulepath_for_host(master) on master, puppet("module install pmtacceptance-java --version 1.6.0") on master, puppet("module list --modulepath #{default_moduledir}") do assert_equal <<-OUTPUT, stdout #{default_moduledir} ├── pmtacceptance-java (\e[0;36mv1.6.0\e[0m) └── pmtacceptance-stdlub (\e[0;36mv1.0.0\e[0m) OUTPUT end step "Upgrade a module that has a more recent version published" on master, puppet("module upgrade pmtacceptance-java") do assert_equal <<-OUTPUT, stdout \e[mNotice: Preparing to upgrade 'pmtacceptance-java' ...\e[0m \e[mNotice: Found 'pmtacceptance-java' (\e[0;36mv1.6.0\e[m) in #{default_moduledir} ...\e[0m \e[mNotice: Downloading from https://forgeapi.puppetlabs.com ...\e[0m \e[mNotice: Upgrading -- do not interrupt ...\e[0m #{default_moduledir} └── pmtacceptance-java (\e[0;36mv1.6.0 -> v1.7.1\e[0m) OUTPUT on master, "[ -d #{default_moduledir}/java ]" on master, "[ -f #{default_moduledir}/java/Modulefile ]" on master, "grep 1.7.1 #{default_moduledir}/java/Modulefile" end