-
-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathMonolithStartPieTests.cpp
More file actions
74 lines (63 loc) · 2.84 KB
/
Copy pathMonolithStartPieTests.cpp
File metadata and controls
74 lines (63 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright tumourlove. All Rights Reserved.
#if WITH_DEV_AUTOMATION_TESTS
#include "CoreMinimal.h"
#include "Dom/JsonObject.h"
#include "Dom/JsonValue.h"
#include "Engine/Blueprint.h"
#include "Misc/AutomationTest.h"
#include "MonolithEditorActions.h"
#include "MonolithToolRegistry.h"
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
FMonolithStartPieRejectsInvalidCompilePolicyTest,
"Monolith.Editor.PIE.StartPieRejectsInvalidCompilePolicy",
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FMonolithStartPieRejectsInvalidCompilePolicyTest::RunTest(const FString& /*Parameters*/)
{
TSharedPtr<FJsonObject> Params = MakeShared<FJsonObject>();
Params->SetStringField(TEXT("on_compile_errors"), TEXT("prompt"));
const FMonolithActionResult Result = FMonolithEditorActions::HandleStartPIE(Params);
TestFalse(TEXT("Invalid compile-error policy is rejected"), Result.bSuccess);
TestEqual(TEXT("Invalid policy is an invalid-params error"), Result.ErrorCode, -32602);
TestTrue(TEXT("Error names the accepted policies"),
Result.ErrorMessage.Contains(TEXT("refuse")) && Result.ErrorMessage.Contains(TEXT("suppress")));
return true;
}
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
FMonolithStartPieRefusesErroredBlueprintTest,
"Monolith.Editor.PIE.StartPieRefusesErroredBlueprint",
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FMonolithStartPieRefusesErroredBlueprintTest::RunTest(const FString& /*Parameters*/)
{
UBlueprint* BrokenBlueprint = NewObject<UBlueprint>(
GetTransientPackage(),
TEXT("MonolithStartPieBrokenBlueprint"));
BrokenBlueprint->Status = BS_Error;
BrokenBlueprint->bDisplayCompilePIEWarning = true;
const FMonolithActionResult Result = FMonolithEditorActions::HandleStartPIE(MakeShared<FJsonObject>());
TestFalse(TEXT("Default policy refuses an errored Blueprint"), Result.bSuccess);
TestTrue(TEXT("Refusal carries structured error data"), Result.ErrorData.IsValid());
bool bFoundTestBlueprint = false;
if (Result.ErrorData.IsValid() && Result.ErrorData->Type == EJson::Object)
{
const TSharedPtr<FJsonObject> ErrorData = Result.ErrorData->AsObject();
const TArray<TSharedPtr<FJsonValue>>* Blueprints = nullptr;
if (ErrorData.IsValid() && ErrorData->TryGetArrayField(TEXT("errored_blueprints"), Blueprints) && Blueprints)
{
for (const TSharedPtr<FJsonValue>& Value : *Blueprints)
{
const TSharedPtr<FJsonObject> Entry = Value.IsValid() ? Value->AsObject() : nullptr;
if (Entry.IsValid() && Entry->GetStringField(TEXT("name")) == BrokenBlueprint->GetName())
{
bFoundTestBlueprint = true;
break;
}
}
}
}
TestTrue(TEXT("Structured refusal lists the offending Blueprint"), bFoundTestBlueprint);
BrokenBlueprint->bDisplayCompilePIEWarning = false;
BrokenBlueprint->Status = BS_UpToDate;
BrokenBlueprint->MarkAsGarbage();
return true;
}
#endif // WITH_DEV_AUTOMATION_TESTS