Skip to content

Commit

Permalink
Merge branch 'release/1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
npruehs committed May 19, 2020
2 parents 58cd7cf + 7647c87 commit 8546898
Show file tree
Hide file tree
Showing 176 changed files with 4,397 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,6 @@ Plugins/*/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*
DaedalicTestAutomationPlugin.Automation/obj/
DaedalicTestAutomationPlugin/Binaries/
DaedalicTestAutomationPlugin/Intermediate/
47 changes: 47 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Contributing

You'd like to help make Daedalic Test Automation Plugin even more awesome? Seems like today's our lucky day! In order to maintain stability of the plugin and its code base, please adhere to the following steps, and we'll be pleased to include your additions in our next release.

Note that Daedalic Test Automation Plugin is distributed under the [MIT License](https://github.com/DaedalicEntertainment/ue4-test-automation/blob/develop/LICENSE). So will be your code.

## How to contribute

### Step 1: Choose what to do

If you've got no idea how to help, head over to our [issue tracker](https://github.com/DaedalicEntertainment/ue4-test-automation/issues) and see what you'd like to do most. You can basically pick anything you want to, as long as it's not already assigned to anyone.

If you know exactly what you're missing, [open a new issue](https://github.com/DaedalicEntertainment/ue4-test-automation/issues/new) to begin a short discussion about your idea and how it fits the project. If we all agree, you're good to go!

### Step 2: Fork the project and check out the code

Daedalic Test Automation Plugin is developed using the [GitFlow branching model](https://nvie.com/posts/a-successful-git-branching-model). In order to contribute, you should check out the latest `develop` branch, and create a new feature or hotfix branch to be merged back.

### Step 3: Implement your feature or bugfix

Clearly, everybody's got their own approach here. However, we'd still like you to keep a few things in mind, to ensure the stability and consistency of the plugin for everyone:

* We're using our own [Coding Conventions](https://github.com/DaedalicEntertainment/unreal-coding-conventions), which are largely based on the official [Coding Standard](https://docs.unrealengine.com/latest/INT/Programming/Development/CodingStandard/index.html) provided by Epic Games. If you're used to working with that one, in general, you should be fine.
* When you're adding support for a newer engine version, make sure that you don't break support for previously supported engine versions. We must not force our users to upgrade their engine just because of updating the plugin.
* Note that renaming or reordering parameters is a breaking change. This includes the blueprint macro libraries shipped with the plugin. You should avoid that, if possible.

### Step 4: Open a pull request

Finally, [open a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) so we can review your changes together, and finally integrate it into the next release.


## Release Checklist

Internally, we're using the following checklist when preparing for a new release:

* Check pending pull requests
* Create release branch
* Add examples for new features where appropriate
* Run all tests
* Update documentation (README, images, spelling, table of contents)
* Increase version number (and engine version, if necessary)
* Create plugin package
* Check plugin package in another project
* Merge release branch with tag
* Add a new GitHub release with release notes
* Update GitHub issues and milestones
* Notify community (e.g. forums)
25 changes: 25 additions & 0 deletions DaedalicTestAutomationPlugin.Automation/DaeGauntletTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Gauntlet;

namespace DaedalicTestAutomationPlugin.Automation
{
public class DaeGauntletTest : UnrealTestNode<DaeTestConfig>
{
public DaeGauntletTest(UnrealTestContext InContext) : base(InContext)
{
}

public override DaeTestConfig GetConfiguration()
{
DaeTestConfig Config = base.GetConfiguration();

// Start a single instance of the game.
UnrealTestRole ClientRole = Config.RequireRole(UnrealTargetRole.Client);
ClientRole.Controllers.Add("DaeGauntletTestController");

// Ignore user account management.
Config.NoMCP = true;

return Config;
}
}
}
35 changes: 35 additions & 0 deletions DaedalicTestAutomationPlugin.Automation/DaeTestConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Gauntlet;
using System.Collections.Generic;

namespace DaedalicTestAutomationPlugin.Automation
{
public class DaeTestConfig : EpicGame.EpicGameTestConfig
{
/// <summary>
/// Where to write a JUnit XML report to.
/// </summary>
[AutoParam]
public string JUnitReportPath;

/// <summary>
/// Which single test to run, instead of all available tests.
/// </summary>
[AutoParam]
public string TestName;

public override void ApplyToConfig(UnrealAppConfig AppConfig, UnrealSessionRole ConfigRole, IEnumerable<UnrealSessionRole> OtherRoles)
{
base.ApplyToConfig(AppConfig, ConfigRole, OtherRoles);

if (!string.IsNullOrEmpty(JUnitReportPath))
{
AppConfig.CommandLine += string.Format(" JUnitReportPath=\"{0}\"", JUnitReportPath);
}

if (!string.IsNullOrEmpty(TestName))
{
AppConfig.CommandLine += string.Format(" TestName=\"{0}\"", TestName);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C008207C-E5DF-41F3-B0ED-6A1A80F7234B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DaedalicTestAutomationPlugin.Automation</RootNamespace>
<AssemblyName>DaedalicTestAutomationPlugin.Automation</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>$(UNREAL_ENGINE_4_PATH)\Engine\Binaries\DotNET\AutomationScripts\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Development|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>$(UNREAL_ENGINE_4_PATH)\Engine\Binaries\DotNET\AutomationScripts\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DaeGauntletTest.cs" />
<Compile Include="DaeTestConfig.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(UNREAL_ENGINE_4_PATH)\Engine\Source\Programs\AutomationTool\Gauntlet\Gauntlet.Automation.csproj">
<Project>{767B4F85-AB56-4B00-A033-04C7600ACC3D}</Project>
<Name>Gauntlet.Automation</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
35 changes: 35 additions & 0 deletions DaedalicTestAutomationPlugin.Automation/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DaedalicTestAutomationPlugin.Automation")]
[assembly: AssemblyDescription("Tells the Unreal Automation Tool to use our custom Gauntlet controllers.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Daedalic Entertainment GmbH")]
[assembly: AssemblyProduct("DaedalicTestAutomationPlugin.Automation")]
[assembly: AssemblyCopyright("Copyright 2020 Daedalic Entertainment GmbH")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c008207c-e5df-41f3-b0ed-6a1a80f7234b")]

// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
36 changes: 36 additions & 0 deletions DaedalicTestAutomationPlugin/DaedalicTestAutomationPlugin.uplugin
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0.0",
"FriendlyName": "Daedalic Test Automation Plugin",
"Description": "Facilitates setting up integration test suits with Gauntlet.",
"Category": "Daedalic Entertainment",
"CreatedBy": "Daedalic Entertainment GmbH",
"CreatedByURL": "https://www.daedalic.com/",
"DocsURL": "https://github.com/DaedalicEntertainment/ue4-test-automation",
"EngineVersion": "4.23",
"MarketplaceURL": "",
"SupportURL": "https://github.com/DaedalicEntertainment/ue4-test-automation/issues",
"EnabledByDefault": false,
"CanContainContent": true,
"IsBetaVersion": false,
"Installed": false,
"Modules": [
{
"Name": "DaedalicTestAutomationPlugin",
"Type": "Developer",
"LoadingPhase": "Default"
},
{
"Name": "DaedalicTestAutomationPluginEditor",
"Type": "Developer",
"LoadingPhase": "PreDefault"
}
],
"Plugins": [
{
"Name": "Gauntlet",
"Enabled": true
}
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.

namespace UnrealBuildTool.Rules
{
public class DaedalicTestAutomationPlugin : ModuleRules
{
public DaedalicTestAutomationPlugin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
}
);

PrivateIncludePaths.AddRange(
new string[] {
// ... add other private include paths required here ...
}
);

PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"CoreUObject",
"Engine",
"InputCore",
"Gauntlet",
"UMG",
"SlateCore"
}
);

PrivateDependencyModuleNames.AddRange(
new string[]
{
// ... add private dependencies that you statically link with here ...
}
);

DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include "DaeDelayFramesAction.h"

FDaeDelayFramesAction::FDaeDelayFramesAction(const FLatentActionInfo& LatentInfo, int32 NumFrames)
: FramesRemaining(NumFrames)
, ExecutionFunction(LatentInfo.ExecutionFunction)
, OutputLink(LatentInfo.Linkage)
, CallbackTarget(LatentInfo.CallbackTarget)
{
}

void FDaeDelayFramesAction::UpdateOperation(FLatentResponse& Response)

{
--FramesRemaining;
Response.FinishAndTriggerIf(FramesRemaining <= 0, ExecutionFunction, OutputLink,
CallbackTarget);
}

#if WITH_EDITOR
FString FDaeDelayFramesAction::GetDescription() const
{
return FString::Printf(TEXT("Delay ({0} frames left)"), FramesRemaining);
}
#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "DaeDelayUntilTriggeredAction.h"
#include "DaeTestTriggerBox.h"

FDaeDelayUntilTriggeredAction::FDaeDelayUntilTriggeredAction(const FLatentActionInfo& LatentInfo,
ADaeTestTriggerBox* InTestTriggerBox)
: TestTriggerBox(InTestTriggerBox)
, ExecutionFunction(LatentInfo.ExecutionFunction)
, OutputLink(LatentInfo.Linkage)
, CallbackTarget(LatentInfo.CallbackTarget)
{
}

void FDaeDelayUntilTriggeredAction::UpdateOperation(FLatentResponse& Response)

{
bool bWasTriggered = !IsValid(TestTriggerBox) || TestTriggerBox->WasTriggered();
Response.FinishAndTriggerIf(bWasTriggered, ExecutionFunction, OutputLink, CallbackTarget);
}

#if WITH_EDITOR
FString FDaeDelayUntilTriggeredAction::GetDescription() const
{
FString TriggerBoxName = IsValid(TestTriggerBox) ? TestTriggerBox->GetName() : TEXT("nullptr");
return FString::Printf(TEXT("Delay (until {0} was triggered)"), *TriggerBoxName);
}
#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include "DaeGauntletStates.h"

FName FDaeGauntletStates::LoadingNextMap = TEXT("Gauntlet_LoadingNextMap");
FName FDaeGauntletStates::DiscoveringTests = TEXT("Gauntlet_DiscoveringTests");
FName FDaeGauntletStates::Running = TEXT("Gauntlet_Running");
FName FDaeGauntletStates::Finished = TEXT("Gauntlet_Finished");
Loading

0 comments on commit 8546898

Please sign in to comment.