[PATCH] findstr: Added test for findstr. (try 2)
Kaipeng Zeng
kaipeng94 at gmail.com
Tue Mar 24 00:55:40 CDT 2015
Thanks Stefan!
Superseded patch 110143 .
ChangeLog:
- Exclude change to configure
- Return exit code of findstr in runcmd()
-------------- next part --------------
>From 5b5d02a05f3f7607c307501426f3be77905ccbd3 Mon Sep 17 00:00:00 2001
From: Kaipeng Zeng <kaipeng94 at gmail.com>
Date: Tue, 24 Mar 2015 12:51:51 +0800
Subject: [PATCH] findstr: Added test for findstr.
---
configure.ac | 1 +
programs/findstr/tests/Makefile.in | 5 ++
programs/findstr/tests/findstr.c | 96 ++++++++++++++++++++++++++++++++++++++
3 files changed, 102 insertions(+)
create mode 100644 programs/findstr/tests/Makefile.in
create mode 100644 programs/findstr/tests/findstr.c
diff --git a/configure.ac b/configure.ac
index d23227a..822affe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3432,6 +3432,7 @@ WINE_CONFIG_PROGRAM(expand,,[install])
WINE_CONFIG_PROGRAM(explorer,,[install,po])
WINE_CONFIG_PROGRAM(extrac32,,[install])
WINE_CONFIG_PROGRAM(findstr,,[install])
+WINE_CONFIG_TEST(programs/findstr/tests)
WINE_CONFIG_PROGRAM(hh,,[install])
WINE_CONFIG_PROGRAM(hostname,,[install,po])
WINE_CONFIG_PROGRAM(icinfo,,[install])
diff --git a/programs/findstr/tests/Makefile.in b/programs/findstr/tests/Makefile.in
new file mode 100644
index 0000000..b5195d0
--- /dev/null
+++ b/programs/findstr/tests/Makefile.in
@@ -0,0 +1,5 @@
+TESTDLL = findstr.exe
+
+C_SRCS = \
+ findstr.c
+
diff --git a/programs/findstr/tests/findstr.c b/programs/findstr/tests/findstr.c
new file mode 100644
index 0000000..22539e8
--- /dev/null
+++ b/programs/findstr/tests/findstr.c
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2015 Kaipeng Zeng
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <windows.h>
+
+#include "wine/test.h"
+
+
+static DWORD runcmd(const char *cmd, char *output)
+{
+ char *wcmd;
+ SECURITY_ATTRIBUTES sa;
+ HANDLE hRead, hWrite;
+ STARTUPINFOA si;
+ PROCESS_INFORMATION pi;
+ DWORD bytesRead;
+ DWORD result;
+
+ wcmd = HeapAlloc(GetProcessHeap(), 0, strlen(cmd) + 1);
+ strcpy(wcmd, cmd);
+
+ sa.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sa.lpSecurityDescriptor = NULL;
+ sa.bInheritHandle = TRUE;
+ if (!CreatePipe(&hRead, &hWrite, &sa, 0))
+ return 260;
+
+ si.cb = sizeof(STARTUPINFOA);
+ GetStartupInfoA(&si);
+ si.hStdError = hWrite;
+ si.hStdOutput = hWrite;
+ si.wShowWindow = SW_HIDE;
+ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
+ if (!CreateProcessA(NULL, wcmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
+ {
+ HeapFree(GetProcessHeap(), 0, wcmd);
+ CloseHandle(hWrite);
+ CloseHandle(hRead);
+ return 260;
+ }
+ CloseHandle(hWrite);
+ HeapFree(GetProcessHeap(), 0, wcmd);
+ while (ReadFile(hRead, output, GetFileSize(hRead, NULL), &bytesRead, NULL))
+ ;
+
+ CloseHandle(hRead);
+ GetExitCodeProcess(pi.hProcess, &result);
+
+ return result;
+}
+
+void init_env(void)
+{
+ char text_for_test[] = "Wine Is Not an Emulator.\n"
+ "Wine will always be free software.\n"
+ "Wine is heavily reliant on its user community too.";
+ HANDLE file;
+ DWORD dwBytesToWrite = (DWORD)strlen(text_for_test);
+ DWORD dwBytesWritten = 0;
+
+ file = CreateFileA("test.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL,
+ CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ WriteFile(file, text_for_test, dwBytesToWrite, &dwBytesWritten, NULL);
+ CloseHandle(file);
+}
+
+void test_without_arg(void)
+{
+ char buffer[2048] = {0};
+
+ init_env();
+ todo_wine ok(!runcmd("findstr free test.txt", buffer), "'findstr free test.txt' fails\n");
+ todo_wine ok(!strcmp(buffer, "Wine will always be free software.\n"),
+ "Return wrong string.\n");
+ DeleteFileA("test.txt");
+}
+
+START_TEST(findstr)
+{
+ test_without_arg();
+}
--
2.1.0
More information about the wine-patches
mailing list