1####################################################### 2# 3# Test adding *second* package 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 "$(g.pm) --populate-available bluesky:3.1:x666"; 37 "$(g.pm) --add bluesky:*:*"; 38} 39 40####################################################### 41 42bundle agent test 43{ 44 vars: 45 "name" string => "imagisoft"; 46 47 packages: 48 "$(name)" 49 package_policy => "add", 50 package_method => mock, 51 package_version => "1.0i", 52 classes => test_set_class("pass","fail"); 53} 54 55body package_method mock 56{ 57 package_changes => "individual"; 58 package_list_command => "$(g.pm) --list-installed"; 59 package_list_name_regex => "^[^:]*"; 60 package_list_version_regex => ":(?<=:).*(?=:)"; 61 package_installed_regex => "^[^:]*"; 62 63 package_add_command => "$(g.pm) --add "; 64 package_update_command => "$(g.pm) --update "; 65 package_delete_command => "$(g.pm) --delete "; 66 package_verify_command => "$(g.pm) --verify "; 67 68} 69 70body classes test_set_class(ok_class,notok_class) 71{ 72 promise_kept => { "$(ok_class)" }; 73 promise_repaired => { "$(ok_class)" }; 74 repair_failed => { "$(notok_class)" }; 75} 76 77####################################################### 78 79bundle agent check 80{ 81 vars: 82 "pkgs" string => execresult("$(g.pm) --list-installed", "noshell"); 83 84 classes: 85 "has_pkg" expression => regcmp(".*imagisoft:1\.0i:x666.*", "$(pkgs)"); 86 87 "ok" expression => "pass.!fail.has_pkg"; 88 89 reports: 90 DEBUG.pass:: 91 "pass"; 92 DEBUG.has_pkg:: 93 "has_pkg"; 94 95 ok:: 96 "$(this.promise_filename) Pass"; 97 !ok:: 98 "$(this.promise_filename) FAIL"; 99} 100 101body classes successfully_executed(class) 102{ 103 kept_returncodes => { "0" }; 104 promise_kept => { "$(class)" }; 105} 106 107### PROJECT_ID: core 108### CATEGORY_ID: 29 109