mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2024, Dan Klishch <danilklishch@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <AK/LexicalPath.h>
|
|
#include <LibCore/Process.h>
|
|
#include <LibFileSystem/TempFile.h>
|
|
#include <LibTest/TestCase.h>
|
|
|
|
auto temp_directory = [] {
|
|
return MUST(FileSystem::TempFile::create_temp_directory());
|
|
}();
|
|
|
|
static ByteBuffer run(ByteString executable)
|
|
{
|
|
static auto path_to_captured_output = LexicalPath::join(temp_directory->path(), "output"sv);
|
|
|
|
auto process = MUST(Core::Process::spawn(Core::ProcessSpawnOptions {
|
|
.executable = move(executable),
|
|
.file_actions = {
|
|
Core::FileAction::OpenFile {
|
|
.path = path_to_captured_output.string(),
|
|
.mode = Core::File::OpenMode::Write,
|
|
.fd = 1,
|
|
},
|
|
},
|
|
}));
|
|
MUST(process.wait_for_termination());
|
|
auto output = MUST(Core::File::open(path_to_captured_output.string(), Core::File::OpenMode::Read));
|
|
return MUST(output->read_until_eof());
|
|
}
|
|
|
|
TEST_CASE(order)
|
|
{
|
|
{
|
|
auto expected = R"(TestOrderLib1.cpp:init
|
|
TestOrderLib2.cpp:init
|
|
TestOrderExe.cpp:init
|
|
TestOrderExe.cpp:main
|
|
f() returns: TestOrderLib1.cpp
|
|
)"sv;
|
|
auto output = run("TestOrderExe1.elf");
|
|
EXPECT_EQ(StringView(output.bytes()), expected);
|
|
}
|
|
|
|
{
|
|
auto expected = R"(TestOrderLib1.cpp:init
|
|
TestOrderLib2.cpp:init
|
|
TestOrderExe.cpp:init
|
|
TestOrderExe.cpp:main
|
|
f() returns: TestOrderLib2.cpp
|
|
)"sv;
|
|
auto output = run("TestOrderExe2.elf");
|
|
EXPECT_EQ(StringView(output.bytes()), expected);
|
|
}
|
|
}
|