summaryrefslogtreecommitdiff
path: root/Tests
AgeCommit message (Collapse)Author
2022-01-04Tests: Link some tests directly against LibUnicodeDataTimothy Flynn
These were missed in 565a880ce5a14bac817c73916e91ebfa04c8b99b. This wasn't an issue because these tests don't pledge/unveil anything, so they could happily dlopen() the library at runtime. But this is now needed in order to migrate LibUnicode towards weak symbols instead.
2022-01-04AK: Add `mix`Jelle Raaijmakers
2022-01-02Tests: Add floor and ceil tests to test-mathsin-ack
Co-Authored-By: Daniel Bertalan <dani@danielbertalan.dev>
2022-01-02LibC: Support `X` modifier for `scanf`Jesse Buhagiar
This was currently crashing Half-Life because it was a considered an "Unknown" specifier. We can use the same case statement as the regular hex format conversion (lower case 'x'), as the backend to convert the number already supports upper/lower case input, hence we get it for free :^)
2022-01-01LibCore: Add FilePermissionsMaskXavier Defrang
This class parses UNIX file permissions definitions in numeric (octal) or symbolic (ugoa+rwx) format and can apply them on a given file mode.
2022-01-01Tests/LibCore: Add regression test for the read_until_any_of OOB readDaniel Bertalan
2021-12-31test-wasm: Convert WebAssemblyModule::create() to ThrowCompletionOrLinus Groh
This exposed a missing exception check in parseWebAssemblyModule(), which could throw but still return a normal completion (which currently works as we check VM::exception() at the right point, but breaks when moving everything to exceptions).
2021-12-30LibJS: Convert resolve_binding() to ThrowCompletionOrdavidot
The spec has a note stating that resolve binding will always return a reference whose [[ReferencedName]] field is name. However this is not correct as the underlying method GetIdentifierReference may throw on env.HasBinding(name) thus it can throw. However, there are some scenarios where it cannot throw because the reference is known to exist in that case we use MUST with a comment.
2021-12-29LibJS: Detect invalid unicode and stop lexing at that pointdavidot
Previously we might swallow invalid unicode point which would skip valid ascii characters. This could be dangerous as we might skip a '"' thus not closing a string where we should. This might have been exploitable as it would not have been clear what code gets executed when looking at a script. Another approach to this would be simply replacing all invalid characters with the replacement character (this is what v8 does). But our lexer and parser are currently not set up for such a change.
2021-12-28LibCore: Fix race conditions in TestLibCoreStreamAndreas Kling
It was possible for the "local_socket_read" and "local_socket_write" tests to fail because we had exited the EventLoop before BackgroundAction got around to invoking the completion callback. The crash happened when trying to deferred_invoke() on the background thread, calling Core::EventLoop::current() after said EventLoop had returned from exec(). Fix this by not passing a completion callback, since we didn't need one in the first place.
2021-12-27LibCore+Services: Make TCPServer propagate errorsSam Atkins
2021-12-25LibRegex: Make FailForks fail all forks up to the last save pointAli Mohammad Pur
This makes negative lookarounds with more than one fork behave correctly. Fixes #11350.
2021-12-24AK: Make `Disjoint*::is_empty()` not call sizeMichel Hermier
This is a raffinement of 49cbd4dcca037336ad5e2e4fcb1e3cc613b46cce. Previously, the container was scanned to compute the size in the unhappy path. Now, using `all_of` happy and unhappy path should be fast.
2021-12-24Tests: Benchmark `DisjointChunck::is_empty`Michel Hermier
2021-12-23LibC: Allow multiple includes of `<assert.h>`Michel Hermier
ISO C requires in section 7.2: The assert macro is redefined according to the current state of NDEBUG each time that <assert.h> is included. Also add tests for `assert` multiple inclusion accordingly.
2021-12-21AK: Add convert_to_uint_from_octalXavier Defrang
2021-12-21LibRegex: Parse capture group names according to the ECMA262 specdavidot
2021-12-21LibRegex: Disallow duplicate named capture groups in ECMA262 parserdavidot
2021-12-20Kernel: Return EINVAL when specifying -1 for setuid and similar syscallsLiav A
For setreuid and setresuid syscalls, -1 means to set the current uid/euid/gid/egid value, to be more convenient for programming. However, for other syscalls where we pass only one argument, there's no justification to specify -1. This behavior is identical to how Linux handles the value -1, and is influenced by the fact that the manual pages for the group of one argument syscalls that handle ID operations is ambiguous about this topic.
2021-12-19LibTest: Add `EXPECT_NO_CRASH`Michel Hermier
2021-12-19LibTest: Add `EXPECT_CRASH_WITH_SIGNAL`Michel Hermier
2021-12-19Tests: Add test for `raise`Michel Hermier
2021-12-19Tests: Add test for `assert`Michel Hermier
2021-12-19Tests: Add test for `abort`Michel Hermier
2021-12-18AK: Add BuiltinWrappers.hNick Johnson
The goal of this file is to enable C++ overloaded functions for standard builtin functions that we use. It contains fallback implementations for systems that do not have the builtins available.
2021-12-16AK: Make JsonValue::from_string("") return a null JsonValueAndreas Kling
This unbreaks the /var/run/utmp system which starts out as an empty string, and is then turned into an object by the first update. This isn't necessarily the best way for this to work, but it's how it used to work, so this just fixes the regression for now.
2021-12-16Tests: Implement tests for the Serenity Stream APIsin-ack
2021-12-16AK+Tests: Use less space in ErrorOrBen Wiederhake
2021-12-15LibRegex: Merge alternations based on blocks and not instructionsAli Mohammad Pur
The instructions can have dependencies (e.g. Repeat), so only unify equal blocks instead of consecutive instructions. Fixes #11247. Also adds the minimal test case(s) from that issue.
2021-12-12LibCore: Add support for range-based for loops on LineIteratorsSahan Fernando
2021-12-12Tests: Add tests for sigwait/sigwaitinfo/sigtimedwaitIdan Horowitz
2021-12-08LibCrypto+Tests: Avoid implicitly copying ByteBufferBen Wiederhake
2021-12-08AK+Tests: Avoid implicitly copying ByteBufferBen Wiederhake
2021-12-05Tests: Cast unused smart-pointer return values to voidSam Atkins
2021-12-04LibSQL: Gracefully react to unimplemented valid SQLJan de Visser
Fixes a crash that was caused by a syntax error which is difficult to catch by the parser: usually identifiers are accepted in column lists, but they are not in a list of column values to be inserted in an INSERT. Fixed this by putting in a heuristic check; we probably need a better way to do this. Included tests for this case. Also introduced a new SQL Error code, `NotYetImplemented`, and return that instead of crashing when encountering unimplemented SQL.
2021-12-04LibSQL: Improve error handlingJan de Visser
The handling of filesystem level errors was basically non-existing or consisting of `VERIFY_NOT_REACHED` assertions. Addressed this by * Adding `open` methods to `Heap` and `Database` which return errors. * Changing the interface of methods of these classes and clients downstream to propagate these errors. The constructors of `Heap` and `Database` don't open the underlying filesystem file anymore. The SQL statement handlers return an `SQLErrorCode::InternalError` error code if an error comes back from the lower levels. Note that some of these errors are things like duplicate index entry errors that should be caught before the SQL layer attempts to actually update the database. Added tests to catch attempts to open weird or non-existent files as databases. Finally, in between me writing this patch and submitting the PR the AK::Result<Foo, Bar> template got deprecated in favour of ErrorOr<Foo>. This resulted in more busywork.
2021-12-01Tests: Add a test to ensure sigaltstack() is working correctlyIdan Horowitz
2021-11-30LibUnicode: Support code point names that apply to ranges of code pointsTimothy Flynn
For example, consider the following adjacent entries in UnicodeData.txt: 3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; 4DBF;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; Our current implementation would assign the display name "CJK Ideograph Extension A" to code points U+3400 & U+4DBF, but not to the code points in between. Not only should those code points be assigned a name, but the Unicode spec also has formatting rules on what the names should be (the names for these ranged code points are not as they appear in UnicodeData.txt). The spec also defines names for code point ranges that actually are listed individually in UnicodeData.txt. For example: 2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; 2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; 2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; Code points are only coalesced into a range if all fields after the name are equivalent. Our parser will insert the range and its name formatting pattern when it comes across the first code point in that range, then ignore other code points in that range. This reduces the number of names we generated by nearly 2,000.
2021-11-30LibCore: Fix relative seeking in IODeviceArne Elster
The recently introduced read buffer in IODevice broke relative seeking. The amount of data in the buffer wouldn't get taken into account.
2021-11-29Tests: Add a simple LibGL render-testHendiadyoin1
At the moment we just check if we *can* render a simple triangle, we do not yet actually test if the image is indeed the triangle we wanted. This test also outputs the rendered image when GL_DEBUG is enabled to a file called "picture.bmp" for manual verification. Co-authored-by: sunverwerth <s.unverwerth@serenityos.org>
2021-11-26Tests: Fix TestLibCoreArgsParser with add_positional_argument API changeBrian Gianforcaro
Since we no longer populate a Vector<String> the lifetime of the strings in all of these tests is now messed up, as the Vector<StringView> now points to free'd memory. We attempt to fix this for the unit tests, by saving the results in a RAII type that should live as long as the test wants to validate some output of the ArgParser.
2021-11-26Userland: Use Core::ArgsParser's Vector<StringView> API everywhereAndreas Kling
...and remove the Vector<String> variant since there are no remaining users of this API.
2021-11-23LibCore+AK: Move MappedFile from AK to LibCoreAndreas Kling
MappedFile is strictly a userspace thing, so it doesn't belong in AK (which is supposed to be user/kernel agnostic.)
2021-11-21LibGfx: Make ImageDecoderPlugin::frame() return ErrorOr<>Andreas Kling
This is a first step towards better error propagation from image codecs.
2021-11-19LibUnicode: Support locales-without-script aliases for ECMA-402Timothy Flynn
As noted by ECMA-402, if a supported locale contains all of a language, script, and region subtag, then the implementation must also support the locale without the script subtag. The most complicated example of this is the zh-TW locale. The list of locales in the CLDR database does not include zh-TW or its maximized zh-Hant-TW variant. Instead, it inlcudes the zh-Hant locale. However, zh-Hant-TW is listed in the default-content locale list in the cldr-core package. This defines an alias from zh-Hant-TW to zh-Hant. We must then also support the zh-Hant-TW alias without the script subtag: zh-TW. This transitively maps zh-TW to zh-Hant, which is a case quite heavily tested by test262.
2021-11-18AK: Implement `acos<T>` correctlyJelle Raaijmakers
This is a naive implementation based on the symmetry with `asin`. Before, I'm not really sure what we were doing, but it was returning wildly incorrect results.
2021-11-18LibRegex: Avoid rewriting `a+` as `a*` as part of atomic rewritingAli Mohammad Pur
The initial `ForkStay` is only needed if the looping block has a following block, if there's no following block or the following block does not attempt to match anything, we should not insert the ForkStay, otherwise we would be rewriting `a+` as `a*` by allowing the 'end' to be executed. Fixes #10952.
2021-11-17AK: Convert AK::Format formatting helpers to returning ErrorOr<void>Andreas Kling
This isn't a complete conversion to ErrorOr<void>, but a good chunk. The end goal here is to propagate buffer allocation failures to the caller, and allow the use of TRY() with formatting functions.
2021-11-17AK: Make JSON parser return ErrorOr<JsonValue> (instead of Optional)Andreas Kling
Also add slightly richer parse errors now that we can include a string literal with returned errors. This will allow us to use TRY() when working with JSON data.
2021-11-16LibCrypto: Fix subtracting two negative `SignedBigInteger`sLinus Groh
Currently, we get the following results -1 - -2 = -1 -2 - -1 = 1 Correct would be: -1 - -2 = 1 -2 - -1 = -1 This was already attempted to be fixed in 7ed8970, but that change was incorrect. This directly translates to LibJS BigInts having the same incorrect behavior - it even was tested.