From 5595a79c6c5c73203f55d3a759a7af921ed34c1a Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Sat, 22 Aug 2020 15:59:49 -0500
Subject: Improve test coverage of metadata keys

---
 hscript/meta.cc | 42 +++++++++++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 17 deletions(-)

(limited to 'hscript')

diff --git a/hscript/meta.cc b/hscript/meta.cc
index 1227e60..10b0589 100644
--- a/hscript/meta.cc
+++ b/hscript/meta.cc
@@ -214,8 +214,8 @@ bool Arch::execute() const {
     }
 
     arch_f << this->value() << std::endl;
-#endif
-    return true;
+#endif  /* HAS_INSTALL_ENV */
+    return true;  /* LCOV_EXCL_LINE */
 }
 
 
@@ -742,39 +742,47 @@ const std::string my_arch(const Horizon::Script *script) {
 
 bool Bootloader::validate() const {
     const std::string arch = my_arch(script);
+    bool valid_selection;
 
     /* 'true' and 'false' are always valid. */
     if(_value == "true" || _value == "false") return true;
 
     if(arch == "ppc64") {
         const static std::set<std::string> valid_ppc64 = {"grub-ieee1275"};
-        return valid_ppc64.find(this->value()) != valid_ppc64.end();
+        valid_selection = valid_ppc64.find(this->value()) != valid_ppc64.end();
     } else if(arch == "ppc") {
         const static std::set<std::string> valid_ppc = {"grub-ieee1275",
                                                         "iquik"};
-        return valid_ppc.find(this->value()) != valid_ppc.end();
+        valid_selection = valid_ppc.find(this->value()) != valid_ppc.end();
     } else if(arch == "aarch64") {
         const static std::set<std::string> valid_arm64 = {"grub-efi"};
-        return valid_arm64.find(this->value()) != valid_arm64.end();
+        valid_selection = valid_arm64.find(this->value()) != valid_arm64.end();
     } else if(arch == "armv7") {
         const static std::set<std::string> valid_arm = {};
-        return valid_arm.find(this->value()) != valid_arm.end();
+        valid_selection = valid_arm.find(this->value()) != valid_arm.end();
     } else if(arch == "pmmx") {
         const static std::set<std::string> valid_pmmx = {"grub-bios",
                                                          "grub-efi"};
-        return valid_pmmx.find(this->value()) != valid_pmmx.end();
+        valid_selection = valid_pmmx.find(this->value()) != valid_pmmx.end();
     } else if(arch == "x86_64") {
         const static std::set<std::string> valid_x86 = {"grub-bios",
                                                         "grub-efi"};
-        return valid_x86.find(this->value()) != valid_x86.end();
+        valid_selection = valid_x86.find(this->value()) != valid_x86.end();
     } else if(arch == "mips64" || arch == "mips" ||
               arch == "mips64el" || arch == "mipsel") {
         const static std::set<std::string> valid_mips = {};
-        return valid_mips.find(this->value()) != valid_mips.end();
+        valid_selection = valid_mips.find(this->value()) != valid_mips.end();
     } else {
         output_error(pos, "bootloader: unknown architecture", arch);
         return false;
     }
+
+    if(!valid_selection) {
+        output_error(pos, "bootloader: architecture does not support loader",
+                     this->value());
+    }
+
+    return valid_selection;
 }
 
 bool Bootloader::execute() const {
@@ -794,7 +802,7 @@ bool Bootloader::execute() const {
             if(fs::exists("/sys/firmware/efi")) {
                 method = "grub-efi";
             } else
-#endif
+#endif  /* HAS_INSTALL_ENV */
                 method = "grub-bios";
         } else {
             output_error(pos, "bootloader: no default for architecture", arch);
@@ -838,8 +846,8 @@ bool Bootloader::execute() const {
         mount(nullptr, efipath.c_str(), nullptr,
               MS_REMOUNT | MS_RDONLY | MS_NOEXEC | MS_NODEV | MS_NOSUID |
               MS_RELATIME, nullptr);
-#endif
-        return true;
+#endif  /* HAS_INSTALL_ENV */
+        return true;  /* LCOV_EXCL_LINE */
     }
     else if(method == "grub-bios") {
         if(script->options().test(Simulate)) {
@@ -862,8 +870,8 @@ bool Bootloader::execute() const {
             output_error(pos, "bootloader: failed to install GRUB");
             return false;
         }
-#endif
-        return true;
+#endif  /* HAS_INSTALL_ENV */
+        return true;  /* LCOV_EXCL_LINE */
     }
     else if(method == "iquik") {
         output_error(pos, "bootloader: iQUIK is not yet supported");
@@ -890,9 +898,9 @@ bool Bootloader::execute() const {
             output_error(pos, "bootloader: failed to install GRUB");
             return false;
         }
-#endif
-        return true;
+#endif  /* HAS_INSTALL_ENV */
+        return true;  /* LCOV_EXCL_LINE */
     }
 
-    return false;
+    return false;  /* LCOV_EXCL_LINE */
 }
-- 
cgit v1.2.3-70-g09d2