1####################################################### 2# 3# Test adding a package using separate package_version attribute 4# 5####################################################### 6 7body common control 8{ 9 inputs => { "../default.cf.sub" }; 10 bundlesequence => { "G", "g", default("$(this.promise_filename)") }; 11 version => "1.0"; 12 cache_system_functions => "false"; 13} 14 15bundle common g 16{ 17 classes: 18 "mpm_declared" not => strcmp(getenv("MOCK_PACKAGE_MANAGER", "65535"), ""); 19 20 vars: 21 mpm_declared:: 22 "pm" string => getenv("MOCK_PACKAGE_MANAGER", "65535"); 23 24 !mpm_declared:: 25 "pm" string => "$(G.mock_package_manager)"; 26} 27 28####################################################### 29 30bundle agent init 31{ 32 commands: 33 "$(g.pm) --clear-installed"; 34 "$(g.pm) --clear-available"; 35 "$(g.pm) --populate-available imagisoft:1.0i:x666"; 36} 37 38####################################################### 39 40bundle agent test 41{ 42 vars: 43 "name" string => "imagisoft"; 44 45 packages: 46 "$(name)" 47 package_policy => "add", 48 package_method => mock, 49 package_version => "1.0i", 50 classes => test_set_class("pass","fail"); 51} 52 53body package_method mock 54{ 55 package_changes => "individual"; 56 package_list_command => "$(g.pm) --list-installed"; 57 package_list_name_regex => "^[^:]*"; 58 package_list_version_regex => ":(?<=:).*(?=:)"; 59 package_installed_regex => "^[^:]*"; 60 61 package_add_command => "$(g.pm) --add "; 62 package_update_command => "$(g.pm) --update "; 63 package_delete_command => "$(g.pm) --delete "; 64 package_verify_command => "$(g.pm) --verify "; 65} 66 67body classes test_set_class(ok_class,notok_class) 68{ 69 promise_kept => { "$(ok_class)" }; 70 promise_repaired => { "$(ok_class)" }; 71 repair_failed => { "$(notok_class)" }; 72} 73 74####################################################### 75 76bundle agent check 77{ 78 vars: 79 "pkgs" string => execresult("$(g.pm) --list-installed", "noshell"); 80 81 classes: 82 "has_pkg" expression => regcmp("imagisoft:1\.0i:x666", "$(pkgs)"); 83 84 "ok" expression => "pass.!fail.has_pkg"; 85 86 reports: 87 DEBUG.pass:: 88 "pass"; 89 DEBUG.has_pkg:: 90 "has_pkg"; 91 92 ok:: 93 "$(this.promise_filename) Pass"; 94 !ok:: 95 "$(this.promise_filename) FAIL"; 96} 97 98body classes successfully_executed(class) 99{ 100 kept_returncodes => { "0" }; 101 promise_kept => { "$(class)" }; 102} 103 104### PROJECT_ID: core 105### CATEGORY_ID: 29 106