diff --git a/modules/packages/vendored/yum.mustache b/modules/packages/vendored/yum.mustache index c42ebb17e8..5625716b09 100755 --- a/modules/packages/vendored/yum.mustache +++ b/modules/packages/vendored/yum.mustache @@ -11,7 +11,7 @@ import re rpm_cmd = os.environ.get('CFENGINE_TEST_RPM_CMD', "/bin/rpm") rpm_quiet_option = ["--quiet"] -rpm_output_format = "Name=%{name}\nVersion=%{version}-%{release}\nArchitecture=%{arch}\n" +rpm_output_format = "Name=%{name}\nVersion=%{epoch}:%{version}-%{release}\nArchitecture=%{arch}\n" yum_cmd = os.environ.get('CFENGINE_TEST_YUM_CMD', "/usr/bin/yum") yum_options = ["--quiet", "-y"] @@ -87,7 +87,16 @@ def get_package_data(): # Absolute file. sys.stdout.write("PackageType=file\n") sys.stdout.flush() - return subprocess_call([rpm_cmd, "--qf", rpm_output_format, "-qp", pkg_string]) + process = subprocess_Popen([rpm_cmd, "--qf", rpm_output_format, "-qp", pkg_string], stdout=subprocess.PIPE) + (stdoutdata, _) = process.communicate() + + if process.returncode != 0: + return process.returncode + + for line in stdoutdata.decode("utf-8").splitlines(): + sys.stdout.write(line.replace("(none):","") + "\n") + + return 0 elif re.search("[:,]", pkg_string): # Contains an illegal symbol. sys.stdout.write(line + "ErrorMessage: Package string with illegal format\n") @@ -102,7 +111,16 @@ def list_installed(): # Ignore everything. sys.stdin.readlines() - return subprocess_call([rpm_cmd, "-qa", "--qf", rpm_output_format]) + process = subprocess_Popen([rpm_cmd, "-qa", "--qf", rpm_output_format], stdout=subprocess.PIPE) + (stdoutdata, _) = process.communicate() + + if process.returncode != 0: + return process.returncode + + for line in stdoutdata.decode("utf-8").splitlines(): + sys.stdout.write(line.replace("(none):","") + "\n") + + return 0 def list_updates(online): diff --git a/tests/unit/test_package_module_yum b/tests/unit/test_package_module_yum index a7864c4742..56902f99b4 100755 --- a/tests/unit/test_package_module_yum +++ b/tests/unit/test_package_module_yum @@ -151,11 +151,11 @@ assert check("list-updates-local", [], 18, assert check("list-installed", [], 6, ["Name=firefox\nVersion=24.5.0-1.el5.centos\nArchitecture=i386", "Name=yum\nVersion=3.2.29-43.el6_5\nArchitecture=noarch"], - 4, ["rpm -qa --qf Name=%{name}\nVersion=%{version}-%{release}\nArchitecture=%{arch}\n"]) + 4, ["rpm -qa --qf Name=%{name}\nVersion=%{epoch}:%{version}-%{release}\nArchitecture=%{arch}\n"]) assert check("get-package-data", ["File=/path/to/pkg"], 4, ["PackageType=file\nName=file_pkg\nVersion=10.0\nArchitecture=x86_64"], - 4, ["rpm --qf Name=%{name}\nVersion=%{version}-%{release}\nArchitecture=%{arch}\n -qp /path/to/pkg"]) + 4, ["rpm --qf Name=%{name}\nVersion=%{epoch}:%{version}-%{release}\nArchitecture=%{arch}\n -qp /path/to/pkg"]) assert check("get-package-data", ["File=repo_pkg"], 2, ["PackageType=repo\nName=repo_pkg"], 0, [])