Commit graph

2205 commits

Author SHA1 Message Date
Mark Jansen
411b92440f [APPHELP_APITEST] Fix tests for Win10 + restore some tests for x64 2025-08-01 21:53:38 +02:00
Mark Jansen
552f858018 [ROSAUTOTEST] Add option to use libcurl 2025-08-01 20:49:29 +02:00
Timo Kreuzer
76ef3c45a5 [PSDK] Add minwinbase.h 2025-07-31 16:00:13 +03:00
Hermès Bélusca-Maïto
ba36b907ad
[WINLOGON][WLNTFYTESTS] Implement loading notification DLLs in safe-boot mode (#8278)
Historical note:
Investigation shows that this functionality, introduced between builds
1902 and 1906 of Windows NT 5.0 (future 2000) Beta 3, has always been
"nop-ed" and has remained this way till Windows Server 2003.
The value read from the "SafeMode" registry value is unconditionally
overridden afterwards, causing the notification DLLs to always be loaded.

In ReactOS, this functionality is restored, and only the notifications
tagged as such are loaded in SafeMode.

Furthermore:
Analysis of strings in Win2000 and WinXP/2003 winlogon.exe, show that
the "Safe" registry value doesn't exist for notifications; instead,
it is named "SafeMode".
The "Safe" value appears only for the SensLogn (SENS Winlogon Event) handler
registry entry. My hypothesis is that the value name is a typo for the
"SafeMode" value. It has been introduced in the `\Winlogon\Notify\SensLogn`
registry entry for SensLogn around Windows NT 5.0 build 1946.
2025-07-30 17:46:54 +02:00
Hermès Bélusca-Maïto
b74e243579
[WINLOGON][WLNTFYTESTS] The "Enabled" registry value doesn't exist for notifications (#8276)
Analysis of strings in Win2000 and WinXP/2003 winlogon.exe, show that
the "Enabled" registry value doesn't exist for notifications.

This value is actually only used by the ScCertProp (Smart Card Certificate
Propagation) notifications, in wlnotify.dll, to enable or disable certificate
progagation.[^1]

Note that whatever the "Enabled" registry value is, the notification DLL
is still loaded within winlogon.exe.

We however keep the `bEnabled` internal flag, so as to be able to disable
at runtime notifications that could not be delay-loaded, or that behave
erratically, etc.

[WLNOTIFY] Add a comment about the "Enabled" value in scard.c!SCardStartCertProp()

[^1]: For more information, see:
https://www.microfocus.com/documentation/securelogin/9.0/administration_guide/blm54qb.html?view=print
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/925884
2025-07-30 12:37:23 +02:00
Carl J. Bialorucki
b86422cd4b
[SHELL32_APITEST] Several fixes (#8266)
Fix the shell32 apitests so that they pass on Windows Server 2003 - Windows 10. Many of these fixes are for Vista+, but the most important fixes are for ShellExecCmdLine and FindExecutable which had issues closing windows after tests and deleting test files. Failing to delete these files breaks the other test (i.e. running ShellExecCmdLine would break FindExecutable and vis-versa.)
2025-07-29 14:06:13 -06:00
Carl J. Bialorucki
c9842e5aad
Move /sdk/include/reactos/wine to /sdk/include/wine, reorder global includes, remove unneeded includes (#8258)
- Move sdk\include\reactos\wine to sdk\include\wine
- Reorder the directories in include_directories() to be closer to alphabetical. This should make it easier to determine what global include directories can be removed in the future.
2025-07-29 13:57:12 -06:00
Justin Miller
6891f03119
[SHELL32_WINETEST] Disable GetDisplayName test which is acting weird on Windows (#8273)
Disable GetDisplayName test which is acting weird on Windows
2025-07-28 22:39:04 -07:00
Hermès Bélusca-Maïto
50b1242e99
[WLNTFYTESTS] Add extended tests for the Winlogon notifications
Introduce and use a minimal testing framework (minitest.h) based on
an updated version of `wine/test.h`.

Each notification handler becomes its own test. Useful macro and
function helpers have been introduced to simplify the code that is
duplicated for each handler.

See commit 38d07d3a24 (PR #8234) for the details of how to install
and use the notification dll.

These tests can exercise the notifications in the four cases, where
asynchronous events and user impersonation can be independently
enabled or disabled. To do this, the `Asynchronous` and `Impersonate`
registry `REG_DWORD` values, inside the `WLNotifyTests` subkey of:
  `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify`
must be set to their intended values[^1].

----

[^1]: https://learn.microsoft.com/en-us/windows/win32/secauthn/registry-entries

----

Current test results:

- When each notification is emitted, the DLL is loaded then unloaded:
  ```
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1307)
  WLNOTIFY(ac.b0):  Entering `DllMain`(hInst: 0x10000000, dwReason: 0x1, pReserved: 0x00000000)
  ...
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1307)
  WLNOTIFY(ac.b0):  Entering `DllMain`(hInst: 0x10000000, dwReason: 0x0, pReserved: 0x00000000)
  ```
  This doesn't happen on Windows. And indeed, it should _not_ happen,
  because otherwise the DLL would loose any of its internal global state
  between consecutive notification calls. This currently happens in
  ReactOS, where we can observe the following:
  ```
  modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:788: Test failed: **** WLEventLogon: ERROR: Wrong state NON-INITIALIZED, expected Startup or Logoff
  ...
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1036) **** WLEventLogon: Changing state NON-INITIALIZED to Logon
  ```
  and similar for every other notification.

- Test results for each notification:
  ```
  WLEventStartup: 30 tests executed (0 marked as todo, 1 failure), 0 skipped.
  WLEventLogon: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventStartShell: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  -- Note: missing WLEventPostShell --
  WLEventLock: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventUnlock: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventStartScreenSaver: 30 tests executed (0 marked as todo, 10 failures), 0 skipped.
  WLEventStopScreenSaver: 30 tests executed (0 marked as todo, 9 failures), 0 skipped.
  WLEventLogoff: 30 tests executed (0 marked as todo, 5 failures), 2 skipped.
  WLEventShutdown: 31 tests executed (0 marked as todo, 5 failures), 0 skipped.
  ```
2025-07-28 22:04:05 +02:00
Timo Kreuzer
4d21384d8f [COMPILER_APITEST] Add a test for collided unwind 2025-07-20 10:42:26 +03:00
Timo Kreuzer
6334168bf5 [COMPILER_APITEST] Enable some SEH tests for MSVC builds 2025-07-20 10:42:26 +03:00
Katayama Hirofumi MZ
d958a24678
[NTUSER][USER32_APITEST] Support ShowWindow.SW_FORCEMINIMIZE (#8261)
One more step to support ghost windows.
JIRA issue: CORE-19671
- Add IntForceMinimizeWindow helper
  function.
- Use IntForceMinimizeWindow in
  co_WinPosShowWindow function.
- Enhance ShowWindow testcase in
  user32_apitest.
- Add mask to the return value of
  GetWindowLong.
2025-07-20 13:14:01 +09:00
Carl J. Bialorucki
117cd33b49
[PSDK] Sync winerror.h with wine-10.0 (#8244)
- Sync winerror.h to wine-10.0
- Fix a couple hacks that existed because we didn't do this sooner
- Fix an instance where Wine compares a pointer to S_OK to see if it's null
2025-07-11 14:12:09 -06:00
Timo Kreuzer
6d2eb03402 [COMPILER_APITEST] More SEH tests 2025-07-10 11:15:23 +03:00
Timo Kreuzer
ff8d24cabb [PSEH3] Fix _SEH3_LEAVE
Previously, when leave was used in the except or finally block of a nested try block, it would jump back to the start of the except/finally block, resulting in an endless loop. This is fixed by jumping back to a label at the beginning of the try block, which is only visible from within the try block itself and from there to the end of the SEH block.
Fixes seh0055 testcase of MS SEH tests.
2025-07-10 11:15:23 +03:00
Hermès Bélusca-Maïto
38d07d3a24
[WINLOGON/WLNTFYTESTS] Add semi-"interactive" tests for Winlogon notifications (#8234)
Add a `wlntfytests.dll` in `ReactOS\bin\suppl`, containing tests for Winlogon notifications.

To use it:
- Register the dll with `regsvr32 <path_to>\wlntfytests.dll` and reboot
  the machine.
- With a debugger, observe the traces emitted by the dll, whenever any
  Winlogon notification is emitted. If Winlogon debugging is enabled,
  a debug-break is made everytime a notification is invoked.
- Once testing is done, unregister the dll with `regsvr32 /u <path_to>\wlntfytests.dll`
  and reboot the machine.

For each received notification, the handlers dump the contents of the
`WLX_NOTIFICATION_INFO` structure, and verify that the notifications
are received in the correct expected order. This is done by keeping
what the previous received notification was, before comparing it with
the expected one(s) that must precede the new notification being received.

References:
- https://learn.microsoft.com/en-us/windows/win32/secauthn/creating-a-winlogon-notification-package
- https://learn.microsoft.com/en-us/windows/win32/secauthn/winlogon-notification-events
- https://rsdn.org/article/baseserv/winlogon.xml
2025-07-08 21:21:11 +02:00
Hermès Bélusca-Maïto
9c053ec989
[ROSTESTS] Add the interactive buttonvistest to the build 2025-07-07 19:28:14 +02:00
Whindmar Saksit
212a1a5c74
[SDK][SHELL32_APITEST] Fix some warnings (#7031) 2025-07-06 21:12:37 +02:00
Whindmar Saksit
c0ea1c0e9f
[USER32][APITESTS] Use the correct user32 icon resource ids (#7807) 2025-07-06 15:24:25 +02:00
Whindmar Saksit
2a901a72f3
[SHELL32_APITEST] Try to close windows opened by each test (#7861) 2025-07-06 13:47:12 +02:00
Carl J. Bialorucki
a753f34e30
[PSDK][XDK][NDK][INCLUDE/WINE] Make header changes to sync crypt32, kernel32, and user32 winetests (#8114)
- [PSDK] Sync wincrypt.h to Wine 10.0, keeping our SAL annotated function definitions behind an #ifdef guard
- [XDK] Add definitions to our winnt header that Wine 10.0's winternl.h depends on.
- [INCLUDE/WINE] Sync winternl.h to Wine 10.0
- [OTHER] Fix breaking changes with the synced winternl.h.
2025-07-05 15:14:31 -06:00
Carl J. Bialorucki
a993c589ae
[SHLWAPI_APITEST] Fix heap assertion and test failures (#8217)
- Properly initialize a string in SHPropertyBag test. This prevents a heap assertion failure on Vista+ when freed and connected to a debugger.
- Adjust a value against Windows 8+ instead of Vista as originally assumed in the IsQSForward test.
- Use GetVersion() to check if we are running on NT6+ and test appropriately in the PathIsUNC and PathIsUNCServer tests.
2025-07-05 15:09:23 -06:00
Carl J. Bialorucki
410db43f20
[IPHLPAPI_APITEST] Test failure fixes (#8214)
- liCreateTimestamp isn't set in TCP tables on several Windows versions. If it isn't, then we can't compare it to the current system time; so don't.
- GetInterfaceName had some test failures unique to Vista, guard them.
- icmp: Accept either ERROR_INVALID_HANDLE  or ERROR_INVALID_PARAMETER as a last error in a couple tests.
2025-07-04 19:14:24 -06:00
Dmitry Borisov
0462ebf0d6
[COMCTL32_APITEST] Add a testcase for product version string (#8216)
Addendum to commit b5f763447c.

- KVM x86: https://reactos.org/testman/compare.php?ids=102897,102903
- KVM x64: https://reactos.org/testman/compare.php?ids=102898,102905

comctl32:tooltipv6: 1 tests executed (0 marked as todo, 0 failures), 0 skipped.
2025-07-04 21:26:37 +03:00
Carl J. Bialorucki
33336d0369
[APITESTS] Add GetNTVersion() macro for version detection on Windows 8.x+ (#8225)
Grab the NT version from KUSER_SHARED_DATA and expose it in GetNTVersion().
2025-07-03 14:51:10 -06:00
Carl J. Bialorucki
19e8fbb20e
[KMTESTS] Fixes for 2003, Vista, 7, 8, 10 x86 and x64 (#8175)
Fix several kmtests in preparation for testbots with newer versions of Windows. There's still more kmtests to fix, but this fixes all the kmtests that bugchecked during my testing.
2025-07-03 14:33:59 -06:00
Timo Kreuzer
00f45a4a73 [KMTEST] Remove totally broken PoolsCorruption test
It was already disabled.
2025-07-01 10:50:48 +00:00
Hermès Bélusca-Maïto
12e01218ad
[SYSTEMINFO] Do some code lift-up; use Conutils lib to be able to display localized unicode strings
In particular:
- unhardcode buffer sizes and API flags;
- add our standard file header in the .c file (I haven't done it for
  the other files);
- merge systeminfo.rc and rsrc.rc together.
2025-06-29 23:03:10 +02:00
Hermès Bélusca-Maïto
dc7c7fb9f5
[SYSTEMINFO] Review translations (#8169)
- Improve help/usage display formatting for all languages.

- Fix sk-SK Slovak typos and file encoding.
  With Notepad++:
  * "Encoding->Convert to ANSI", then Save;
  * "Encoding->Character encoding->Central Europe Languages->OEM 852", then Save;
  * "Encoding->Convert to UTF-8 (without BOM)"

- Fix and finish French (fr-FR) translation.
2025-06-29 21:04:23 +02:00
Hermès Bélusca-Maïto
af96e9f353
[TRANSLATIONS] Fix some typos in French translations (#8164) 2025-06-29 16:31:39 +02:00
Katayama Hirofumi MZ
76daabf6d1 [CYLFRAC] Fix build; Japanese (ja-JP) translation
Fix mistake in:
4ac1aacc17

CORE-18706
2025-06-29 22:06:05 +09:00
Katayama Hirofumi MZ
3120d985ff [VCDCONTROLTOOL] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 22:02:00 +09:00
Katayama Hirofumi MZ
056bfd312e [SYSTEMINFO] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:53:24 +09:00
Katayama Hirofumi MZ
30dad221ed [STARFIELD] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:38:29 +09:00
Katayama Hirofumi MZ
0fc26352d8 [SSSTARS] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:36:14 +09:00
Katayama Hirofumi MZ
672fc60b5a [MAZESCR] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:31:10 +09:00
Katayama Hirofumi MZ
bc79a9a2cf [MATRIX] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:23:41 +09:00
Katayama Hirofumi MZ
4ac1aacc17 [CYLFRAC] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:17:48 +09:00
Katayama Hirofumi MZ
4642da06e1 [CIRCLES] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:15:11 +09:00
Katayama Hirofumi MZ
046679ddf3 [BUTTERFLIES] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:12:01 +09:00
Katayama Hirofumi MZ
5cd0ec8575 [BLANKSCR] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 21:05:33 +09:00
Katayama Hirofumi MZ
8c2a6aae31 [VGAFONTEDIT] Add Japanese (ja-JP) translation
CORE-18706
2025-06-29 20:59:33 +09:00
Timo Kreuzer
5549fbd6a4 [NTDLL_APITEST] Remove unused / broken definitions 2025-06-29 09:31:14 +00:00
Katayama Hirofumi MZ
f7c36c6d94
[SHELL32_APITEST] Certainly close newly-opened windows (#8171)
It's frustrating when windows open
during a test and remain after the test
is over.
JIRA issue: ROSTESTS-402
- Delete closewnd.cpp. Enhance
  closewnd.h.
- Modify ShellExecCmdLine,
  ShellExec_RunDLL, ShellExecuteEx,
  and ShellExecuteW testcases.
- Certainly close the newly-opened
  windows.
2025-06-26 18:20:49 +09:00
Katayama Hirofumi MZ
aaed9f77d9
[SHELL32_APITEST] Enhance SHAppBarMessage testcase (#8149)
SHAppBarMessage testcase has to
cover the auto-hide feature. Make the
testcase more stable.
JIRA issue: CORE-7237
Add more tests.
2025-06-25 08:48:30 +09:00
Hermès Bélusca-Maïto
28f733a9a4
[UNITTESTS][PATHCCH] Add unit compilation-tests for the pathcch library (#8085)
CORE-12686

Test the following compilation scenarii:
- using the `pathcch_static` library (function implementations
  statically linked into the test);
- using the `pathcch_kernelbase` library (linking directly to
  kernelbase.dll);
- using the `pathcch` MS PSDK-compatible library (linking to
  the api-ms-win-core-path-l1-1-0.dll APISET dll).
2025-06-24 16:48:04 +02:00
Timo Kreuzer
6243d16945 [CRT_APITEST] Add tests for _isnan(f) 2025-06-23 17:35:21 +00:00
Timo Kreuzer
b3dff9df15 [CRT_APITEST] Add tests for _finite(f) 2025-06-23 17:35:21 +00:00
Timo Kreuzer
39e534bddc [CRT_APITEST] Add a tests for tan(f) / __libm_sse2_tan(f) 2025-06-23 17:35:21 +00:00
Timo Kreuzer
85e2f6b26c [CRT_APITEST] Add tests for sqrt(f) / _libm_sqrt_precise 2025-06-23 17:35:21 +00:00