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