[MSVCRT_APITEST]: Commit a simple test for popen(), by Andreas Maier.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Mon, 17 Jul 2017 15:27:40 +0000 (15:27 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Mon, 17 Jul 2017 15:27:40 +0000 (15:27 +0000)
CORE-11568

svn path=/trunk/; revision=75364

rostests/apitests/msvcrt/CMakeLists.txt
rostests/apitests/msvcrt/popen.c [new file with mode: 0644]
rostests/apitests/msvcrt/testlist.c

index 8be74f0..60f3cde 100644 (file)
@@ -4,6 +4,7 @@ add_subdirectory(CmdLineUtil)
 list(APPEND SOURCE
     CommandLine.c
     ieee.c
 list(APPEND SOURCE
     CommandLine.c
     ieee.c
+    popen.c
     splitpath.c
     testlist.c)
 
     splitpath.c
     testlist.c)
 
diff --git a/rostests/apitests/msvcrt/popen.c b/rostests/apitests/msvcrt/popen.c
new file mode 100644 (file)
index 0000000..c32550f
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * PROJECT:         ReactOS API Tests
+ * LICENSE:         See COPYING in the top level directory
+ * PURPOSE:         Test for CRT process handling.
+ * PROGRAMMER:      Andreas Maier <andy1.m@gmx.de>
+ */
+
+#include <apitest.h>
+
+#define WIN32_NO_STATUS
+#include <stdio.h>
+
+static void Test_popen()
+{
+    FILE * f;
+    int r;
+    char str[20];
+
+    /* NOTE: We suppose that the NT test installation has an accessible cmd.exe */
+    f = _popen("cmd.exe /C \"echo Hallo\"", "r");
+    ok(f != NULL, "_popen returns NULL!\n");
+
+    ZeroMemory(str, sizeof(str));
+    fgets(str, sizeof(str) - 1, f);
+    ok(lstrcmp(str, "Hallo\n") == 0, "fgets: expected \"Hallo\", got %s.\n", str);
+
+    r = _pclose(f);
+    ok(r == 0, "_pclose: expected 0, got %i.\n", r);
+    r = *_errno();
+    ok(r == 0, "_errno: expected 0, got %i,\n", r);
+}
+
+START_TEST(popen)
+{
+    Test_popen();
+}
+
+/* EOF */
index 96a9ef4..d358dd9 100644 (file)
@@ -5,12 +5,14 @@
 
 extern void func_CommandLine(void);
 extern void func_ieee(void);
 
 extern void func_CommandLine(void);
 extern void func_ieee(void);
+extern void func_popen(void);
 extern void func_splitpath(void);
 
 const struct test winetest_testlist[] =
 {
     { "CommandLine", func_CommandLine },
     { "ieee", func_ieee },
 extern void func_splitpath(void);
 
 const struct test winetest_testlist[] =
 {
     { "CommandLine", func_CommandLine },
     { "ieee", func_ieee },
+    { "popen", func_popen },
     { "splitpath", func_splitpath },
 
     { 0, 0 }
     { "splitpath", func_splitpath },
 
     { 0, 0 }