UnitTests: Add setup error checking
Check return value of calls to File::CreateTempDir() from CoreTiming, FileSystem, and MMIO test classes to verify the test user directory exists, and fail the tests otherwise.
This commit is contained in:
parent
caff472dbf
commit
83f912b58a
|
@ -39,6 +39,10 @@ class ScopeInit final
|
||||||
public:
|
public:
|
||||||
ScopeInit() : m_profile_path(File::CreateTempDir())
|
ScopeInit() : m_profile_path(File::CreateTempDir())
|
||||||
{
|
{
|
||||||
|
if (!UserDirectoryExists())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
Core::DeclareAsCPUThread();
|
Core::DeclareAsCPUThread();
|
||||||
UICommon::SetUserDirectory(m_profile_path);
|
UICommon::SetUserDirectory(m_profile_path);
|
||||||
Config::Init();
|
Config::Init();
|
||||||
|
@ -48,6 +52,10 @@ public:
|
||||||
}
|
}
|
||||||
~ScopeInit()
|
~ScopeInit()
|
||||||
{
|
{
|
||||||
|
if (!UserDirectoryExists())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
CoreTiming::Shutdown();
|
CoreTiming::Shutdown();
|
||||||
PowerPC::Shutdown();
|
PowerPC::Shutdown();
|
||||||
SConfig::Shutdown();
|
SConfig::Shutdown();
|
||||||
|
@ -55,6 +63,7 @@ public:
|
||||||
Core::UndeclareAsCPUThread();
|
Core::UndeclareAsCPUThread();
|
||||||
File::DeleteDirRecursively(m_profile_path);
|
File::DeleteDirRecursively(m_profile_path);
|
||||||
}
|
}
|
||||||
|
bool UserDirectoryExists() const { return !m_profile_path.empty(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_profile_path;
|
std::string m_profile_path;
|
||||||
|
@ -77,6 +86,7 @@ static void AdvanceAndCheck(u32 idx, int downcount, int expected_lateness = 0,
|
||||||
TEST(CoreTiming, BasicOrder)
|
TEST(CoreTiming, BasicOrder)
|
||||||
{
|
{
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
||||||
|
@ -127,6 +137,7 @@ TEST(CoreTiming, SharedSlot)
|
||||||
using namespace SharedSlotTest;
|
using namespace SharedSlotTest;
|
||||||
|
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", FifoCallback<0>);
|
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", FifoCallback<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", FifoCallback<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", FifoCallback<1>);
|
||||||
|
@ -156,6 +167,7 @@ TEST(CoreTiming, SharedSlot)
|
||||||
TEST(CoreTiming, PredictableLateness)
|
TEST(CoreTiming, PredictableLateness)
|
||||||
{
|
{
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
||||||
|
@ -190,6 +202,7 @@ TEST(CoreTiming, ChainScheduling)
|
||||||
using namespace ChainSchedulingTest;
|
using namespace ChainSchedulingTest;
|
||||||
|
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
||||||
|
@ -245,6 +258,7 @@ TEST(CoreTiming, ScheduleIntoPast)
|
||||||
using namespace ScheduleIntoPastTest;
|
using namespace ScheduleIntoPastTest;
|
||||||
|
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
s_cb_next = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
s_cb_next = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
||||||
|
@ -282,6 +296,7 @@ TEST(CoreTiming, ScheduleIntoPast)
|
||||||
TEST(CoreTiming, Overclocking)
|
TEST(CoreTiming, Overclocking)
|
||||||
{
|
{
|
||||||
ScopeInit guard;
|
ScopeInit guard;
|
||||||
|
ASSERT_TRUE(guard.UserDirectoryExists());
|
||||||
|
|
||||||
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
CoreTiming::EventType* cb_a = CoreTiming::RegisterEvent("callbackA", CallbackTemplate<0>);
|
||||||
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
CoreTiming::EventType* cb_b = CoreTiming::RegisterEvent("callbackB", CallbackTemplate<1>);
|
||||||
|
|
|
@ -25,15 +25,31 @@ class FileSystemTest : public testing::Test
|
||||||
protected:
|
protected:
|
||||||
FileSystemTest() : m_profile_path{File::CreateTempDir()}
|
FileSystemTest() : m_profile_path{File::CreateTempDir()}
|
||||||
{
|
{
|
||||||
|
if (UserDirectoryCreationFailed())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
UICommon::SetUserDirectory(m_profile_path);
|
UICommon::SetUserDirectory(m_profile_path);
|
||||||
m_fs = IOS::HLE::Kernel{}.GetFS();
|
m_fs = IOS::HLE::Kernel{}.GetFS();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~FileSystemTest()
|
virtual ~FileSystemTest()
|
||||||
{
|
{
|
||||||
|
if (UserDirectoryCreationFailed())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
m_fs.reset();
|
m_fs.reset();
|
||||||
File::DeleteDirRecursively(m_profile_path);
|
File::DeleteDirRecursively(m_profile_path);
|
||||||
}
|
}
|
||||||
|
void SetUp()
|
||||||
|
{
|
||||||
|
if (UserDirectoryCreationFailed())
|
||||||
|
{
|
||||||
|
FAIL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool UserDirectoryCreationFailed() const { return m_profile_path.empty(); }
|
||||||
|
|
||||||
std::shared_ptr<FileSystem> m_fs;
|
std::shared_ptr<FileSystem> m_fs;
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ TEST(UniqueID, UniqueEnough)
|
||||||
TEST(IsMMIOAddress, SpecialAddresses)
|
TEST(IsMMIOAddress, SpecialAddresses)
|
||||||
{
|
{
|
||||||
const std::string profile_path = File::CreateTempDir();
|
const std::string profile_path = File::CreateTempDir();
|
||||||
|
ASSERT_FALSE(profile_path.empty());
|
||||||
UICommon::SetUserDirectory(profile_path);
|
UICommon::SetUserDirectory(profile_path);
|
||||||
Config::Init();
|
Config::Init();
|
||||||
SConfig::Init();
|
SConfig::Init();
|
||||||
|
|
Loading…
Reference in New Issue