From: Justin Cinkelj <[email protected]>
Committer: Nadav Har'El <[email protected]>
Branch: master

tests: add test for commandline runscript option

Also, double 'return false' is removed from one function.

Signed-off-by: Justin Cinkelj <[email protected]>
Message-Id: <[email protected]>

---
diff --git a/tests/tst-commands.cc b/tests/tst-commands.cc
--- a/tests/tst-commands.cc
+++ b/tests/tst-commands.cc
@@ -9,6 +9,7 @@
 #include <cstdio>

 #include <osv/commands.hh>
+#include <fstream>

 static int tests = 0, fails = 0;

@@ -283,7 +284,6 @@ static bool test_cpiod_haproxy()

     for (size_t i = 0; i < result.size(); i++) {
         if (result[i][0] != cmd[i]) {
-        return false;
             return false;
         }
     }
@@ -299,6 +299,60 @@ static bool test_cpiod_haproxy()
     return true;
 }

+static bool test_runscript_multiple_with_args_quotes()
+{
+    // Script without \n at the end
+    std::ofstream of1("/zpool-list", std::ios::out | std::ios::binary);
+    of1 << "/zpool.so list";
+    of1.close();
+    // Script with \n at the end
+    std::ofstream of2("/myprog-prm");
+    of2 << "/myprog.so prm1 \"prm2a prm2b\" prm3\n";
+    of2.close();
+
+    std::vector<std::vector<std::string> > result;
+    std::vector<std::string> cmd = { "/zpool.so", "/myprog.so" };
+    bool ok;
+
+    result = osv::parse_command_line(
+        std::string("runscript \"/zpool-list\"; runscript /myprog-prm  "),
+        ok);
+
+    if (!ok) {
+        return false;
+    }
+
+    if (result.size() != 2) {
+        return false;
+    }
+
+    if (result[0].size() != 3) {
+        return false;
+    }
+
+    if (result[1].size() != 5) {
+        return false;
+    }
+
+    for (size_t i = 0; i < result.size(); i++) {
+        if (result[i][0] != cmd[i]) {
+            return false;
+        }
+    }
+
+    if (result[1][1] != std::string("prm1")) {
+        return false;
+    }
+    if (result[1][2] != std::string("prm2a prm2b")) {
+        return false;
+    }
+    if (result[1][3] != std::string("prm3")) {
+        return false;
+    }
+
+    return true;
+}
+
 int main(int argc, char *argv[])
 {
     report(test_parse_simplest(), "simplest command line");
@@ -313,6 +367,8 @@ int main(int argc, char *argv[])
            "simple multiple commands with quotes");
     report(test_cpiod_haproxy(),
            "cpiod upload and haproxy launch");
+    report(test_runscript_multiple_with_args_quotes(),
+           "runscript multiple with args and quotes");
     printf("SUMMARY: %d tests, %d failures\n", tests, fails);
     return 0;
 }

--
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to