Author: mjansen
Date: Fri Jul 14 20:35:11 2017
New Revision: 75342
URL:
http://svn.reactos.org/svn/reactos?rev=75342&view=rev
Log:
[APPHELP_APITEST] Convert test_match_ex to a data driven test + fix a bug in the apitest.
Modified:
trunk/rostests/apitests/apphelp/db.cpp
trunk/rostests/apitests/apphelp/testdb.xml
Modified: trunk/rostests/apitests/apphelp/db.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/apphelp/db.cpp?r…
==============================================================================
--- trunk/rostests/apitests/apphelp/db.cpp [iso-8859-1] (original)
+++ trunk/rostests/apitests/apphelp/db.cpp [iso-8859-1] Fri Jul 14 20:35:11 2017
@@ -110,6 +110,7 @@
#define TAG_APP_NAME (0x6 | TAG_TYPE_STRINGREF)
#define TAG_COMMAND_LINE (0x8 | TAG_TYPE_STRINGREF)
#define TAG_COMPANY_NAME (0x9 | TAG_TYPE_STRINGREF)
+#define TAG_WILDCARD_NAME (0xB | TAG_TYPE_STRINGREF)
#define TAG_PRODUCT_NAME (0x10 | TAG_TYPE_STRINGREF)
#define TAG_PRODUCT_VERSION (0x11 | TAG_TYPE_STRINGREF)
#define TAG_FILE_DESCRIPTION (0x12 | TAG_TYPE_STRINGREF)
@@ -1265,17 +1266,12 @@
if (RtlDosPathNameToNtPathName_U(exename, &exenameNT, NULL, NULL))
{
+ /*
+ ERROR,AslPathGetLongFileNameLongpath,110,Long path conversion failed 123
[c0000001]
+ ERROR,AslPathBuildSignatureLongpath,1086,AslPathGetLongFileNameLongpath failed
for \??\C:\Users\MARK~1.DEV\AppData\Local\Temp\apphelp_test\test_allow.exe [c0000001]
+ */
ret = pSdbGetMatchingExe(hsdb, exenameNT.Buffer, NULL, NULL, 0,
(SDBQUERYRESULT_VISTA*)&query);
- if (!ret && g_WinVersion >= WINVER_WIN10)
- {
- /*
- ERROR,AslPathGetLongFileNameLongpath,110,Long path conversion failed 123
[c0000001]
- ERROR,AslPathBuildSignatureLongpath,1086,AslPathGetLongFileNameLongpath
failed for \??\C:\Users\MARK~1.DEV\AppData\Local\Temp\apphelp_test\test_allow.exe
[c0000001]
- */
- trace("Using DOS path for Win10\n");
- ret = pSdbGetMatchingExe(hsdb, exename, NULL, NULL, 0,
(SDBQUERYRESULT_VISTA*)&query);
- }
- ok(ret, "SdbGetMatchingExe should not fail for %d.\n", cur);
+ ok(!ret, "SdbGetMatchingExe should not succeed for %d.\n", cur);
RtlFreeUnicodeString(&exenameNT);
}
@@ -1372,51 +1368,56 @@
}
template<typename SDBQUERYRESULT_T>
-static BOOL test_match_ex(const WCHAR* workdir, HSDB hsdb, int cur)
+static void test_match_ex(const WCHAR* workdir, HSDB hsdb)
{
WCHAR exename[MAX_PATH];
- WCHAR* Vendor;
+ PWCHAR Vendor, AppName, TestName;
SDBQUERYRESULT_T query;
- TAGID tagid, exetag;
+ TAGID dbtag, exetag, tagid;
BOOL ret, Succeed;
PDB pdb;
memset(&query, 0xab, sizeof(query));
- swprintf(exename, L"%s\\test_match%d.exe", workdir, cur);
-
ret = pSdbTagRefToTagID(hsdb, 0, &pdb, &tagid);
ok(pdb != NULL && pdb != (PDB)0x12345678, "Expected pdb to be set to a
valid pdb, was: %p\n", pdb);
- tagid = pSdbFindFirstTag(pdb, TAGID_ROOT, TAG_DATABASE);
- ok(tagid != TAGID_NULL, "Expected to get a valid TAG_DATABASE\n");
-
- exetag = pSdbFindFirstNamedTag(pdb, tagid, TAG_EXE, TAG_NAME, exename +
wcslen(workdir) + 1);
-
- if (!exetag)
- {
- /* Test done */
- return FALSE;
- }
-
- tagid = pSdbFindFirstTag(pdb, exetag, TAG_VENDOR);
- Vendor = pSdbGetStringTagPtr(pdb, tagid);
- Succeed = tagid != TAGID_NULL && Vendor && !wcsicmp(Vendor,
L"Succeed");
-
- test_create_exe(exename, 0);
-
- ret = pSdbGetMatchingExe(hsdb, exename, NULL, NULL, 0,
(SDBQUERYRESULT_VISTA*)&query);
- DWORD exe_count = Succeed ? 1 : 0;
-
- if (Succeed)
- ok(ret, "SdbGetMatchingExe should not fail for %d.\n", cur);
- else
- ok(!ret, "SdbGetMatchingExe should not succeed for %d.\n", cur);
-
- ok(query.dwExeCount == exe_count, "Expected dwExeCount to be %d, was %d for
%d\n", exe_count, query.dwExeCount, cur);
- DeleteFileW(exename);
- /* Try the next file */
- return TRUE;
+ dbtag = pSdbFindFirstTag(pdb, TAGID_ROOT, TAG_DATABASE);
+ ok(dbtag != TAGID_NULL, "Expected to get a valid TAG_DATABASE\n");
+
+ for (exetag = pSdbFindFirstTag(pdb, dbtag, TAG_EXE); exetag; exetag =
pSdbFindNextTag(pdb, dbtag, exetag))
+ {
+ tagid = pSdbFindFirstTag(pdb, exetag, TAG_VENDOR);
+ Vendor = pSdbGetStringTagPtr(pdb, tagid);
+ if (!Vendor)
+ continue;
+ Succeed = !wcsicmp(Vendor, L"Succeed");
+ if (!Succeed && wcsicmp(Vendor, L"Fail"))
+ continue;
+ tagid = pSdbFindFirstTag(pdb, exetag, TAG_APP_NAME);
+ AppName = pSdbGetStringTagPtr(pdb, tagid);
+ if (!AppName)
+ continue;
+
+ tagid = pSdbFindFirstTag(pdb, exetag, TAG_NAME);
+ TestName = pSdbGetStringTagPtr(pdb, tagid);
+ if (!TestName)
+ continue;
+
+ swprintf(exename, L"%s\\%s", workdir, AppName);
+ test_create_exe(exename, 0);
+
+ ret = pSdbGetMatchingExe(hsdb, exename, NULL, NULL, 0,
(SDBQUERYRESULT_VISTA*)&query);
+ DWORD exe_count = Succeed ? 1 : 0;
+
+ if (Succeed)
+ ok(ret, "SdbGetMatchingExe should not fail for %s.\n",
wine_dbgstr_w(TestName));
+ else
+ ok(!ret, "SdbGetMatchingExe should not succeed for %s.\n",
wine_dbgstr_w(TestName));
+
+ ok(query.dwExeCount == exe_count, "Expected dwExeCount to be %d, was %d for
%s\n", exe_count, query.dwExeCount, wine_dbgstr_w(TestName));
+ DeleteFileW(exename);
+ }
}
@@ -1449,13 +1450,8 @@
}
else
{
- size_t n;
/* now that our enviroment is setup, let's go ahead and run the actual
tests.. */
- for (n = 0;; ++n)
- {
- if (!test_match_ex<SDBQUERYRESULT_T>(workdir, hsdb, n))
- break;
- }
+ test_match_ex<SDBQUERYRESULT_T>(workdir, hsdb);
pSdbReleaseDatabase(hsdb);
}
}
Modified: trunk/rostests/apitests/apphelp/testdb.xml
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/apphelp/testdb.x…
==============================================================================
--- trunk/rostests/apitests/apphelp/testdb.xml [iso-8859-1] (original)
+++ trunk/rostests/apitests/apphelp/testdb.xml [iso-8859-1] Fri Jul 14 20:35:11 2017
@@ -9,7 +9,7 @@
<!-- Verify that we are able to match this -->
<EXE>
<NAME>test_match0.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
+ <APP_NAME>test_match0.exe</APP_NAME>
<VENDOR>Succeed</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
@@ -28,7 +28,7 @@
<!-- Verify that we are able to match this -->
<EXE>
<NAME>test_match1.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
+ <APP_NAME>test_match1.exe</APP_NAME>
<VENDOR>Succeed</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
@@ -47,8 +47,8 @@
<!-- SIZE wrong -->
<EXE>
<NAME>test_match2.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match2.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2047</SIZE>
@@ -64,8 +64,8 @@
<!-- CHECKSUM wrong -->
<EXE>
<NAME>test_match3.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match3.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -81,8 +81,8 @@
<!-- PRODUCT_VERSION too high -->
<EXE>
<NAME>test_match4.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match4.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -98,8 +98,8 @@
<!-- PRODUCT_VERSION too low -->
<EXE>
<NAME>test_match5.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match5.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -115,8 +115,8 @@
<!-- FILE_VERSION wrong -->
<EXE>
<NAME>test_match6.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match6.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -132,8 +132,8 @@
<!-- FILE_DESCRIPTION wrong -->
<EXE>
<NAME>test_match7.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match7.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -149,8 +149,8 @@
<!-- COMPANY_NAME wrong -->
<EXE>
<NAME>test_match8.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match8.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -166,8 +166,8 @@
<!-- ORIGINAL_FILENAME wrong -->
<EXE>
<NAME>test_match9.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match9.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -183,8 +183,8 @@
<!-- INTERNAL_NAME wrong -->
<EXE>
<NAME>test_match10.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match10.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -200,8 +200,8 @@
<!-- Show that strings are checked for the full length(1) -->
<EXE>
<NAME>test_match11.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match11.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>
@@ -217,8 +217,8 @@
<!-- Show that strings are checked for the full length(2) -->
<EXE>
<NAME>test_match12.exe</NAME>
- <APP_NAME>Generic name</APP_NAME>
- <VENDOR>Generic Description</VENDOR>
+ <APP_NAME>test_match12.exe</APP_NAME>
+ <VENDOR>Fail</VENDOR>
<MATCHING_FILE>
<NAME>*</NAME>
<SIZE>2048</SIZE>