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