Remove test files
This commit is contained in:
-370
@@ -1,370 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Factory/TestImpactBuildTargetDescriptorFactory.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class BuildTargetDescriptorFactoryTestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
protected:
|
||||
const AZStd::vector<AZStd::string> m_staticExclude = {".cmake"};
|
||||
const AZStd::vector<AZStd::string> m_inputExclude = {".jinja"};
|
||||
const AZStd::string m_autogenMatcher = {"(.*)\\..*"};
|
||||
|
||||
const AZStd::vector<AZStd::string> m_autogenInputs =
|
||||
{
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/Log.ScriptCanvasNode.xml",
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/DrawText.ScriptCanvasNode.xml",
|
||||
"Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasNode_Header.jinja",
|
||||
"Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasNode_Source.jinja"
|
||||
};
|
||||
|
||||
const AZStd::vector<AZStd::string> m_autogenOutputs =
|
||||
{
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.cpp",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.cpp"
|
||||
};
|
||||
|
||||
const AZStd::vector<AZStd::string> m_staticSources =
|
||||
{
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/precompiled.cpp",
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/precompiled.h",
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/scriptcanvasdiagnosticlibrary_autogen_files.cmake",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.cpp",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.cpp"
|
||||
};
|
||||
|
||||
const AZStd::vector<AZStd::string> m_expectedStaticSources =
|
||||
{
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/precompiled.cpp",
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/precompiled.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.cpp",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.cpp"
|
||||
};
|
||||
|
||||
const AZStd::string m_name = "ScriptCanvasDiagnosticLibrary.Static";
|
||||
const AZStd::string m_outputName = "ScriptCanvasDiagnosticLibrary";
|
||||
const AZStd::string m_path = "Gems/ScriptCanvasDiagnosticLibrary/Code";
|
||||
|
||||
const TestImpact::AutogenSources m_expectedAutogenSources =
|
||||
{
|
||||
{
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/Log.ScriptCanvasNode.xml",
|
||||
{
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/Log.generated.cpp"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Gems/ScriptCanvasDiagnosticLibrary/Code/Source/DrawText.ScriptCanvasNode.xml",
|
||||
{
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.h",
|
||||
"windows_vs2019/Gems/ScriptCanvasDiagnosticLibrary/Code/Azcg/Generated/Source/DrawText.generated.cpp"
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, NoRawData_ExpectArtifactException)
|
||||
{
|
||||
// Given an empty raw descriptor string
|
||||
const AZStd::string rawTargetDescriptor;
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, InvalidRawData_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw descriptor string of invalid data
|
||||
const AZStd::string rawTargetDescriptor = "abcde";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, NoAutogenMatcher_ExpectArtifactException)
|
||||
{
|
||||
// Given a valid raw descriptor string
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, m_staticSources, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor with an empty autogen matcher
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, "");
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, EmptyName_ExpectArtifactException)
|
||||
{
|
||||
// Given a invalid raw descriptor string lacking build meta-data name
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString("", m_outputName, m_path, m_staticSources, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, EmptyOutputName_ExpectArtifactException)
|
||||
{
|
||||
// Given a invalid raw descriptor string lacking build meta-data output name
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, "", m_path, m_staticSources, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, EmptyPath_ExpectArtifactException)
|
||||
{
|
||||
// Given a invalid raw descriptor string lacking build meta-data path
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, "", m_staticSources, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, NoStaticSources_ExpectValidDescriptor)
|
||||
{
|
||||
const TestImpact::BuildTargetDescriptor expectedBuiltTarget =
|
||||
GenerateBuildTargetDescriptor(m_name, m_outputName, m_path, {}, m_expectedAutogenSources);
|
||||
|
||||
// Given a valid raw descriptor string with no static sources
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, {}, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, {}, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Expect the constructed build target descriptor to match the specified descriptor
|
||||
EXPECT_TRUE(buildTarget == expectedBuiltTarget);
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, NoAutogenSources_ExpectValidDescriptor)
|
||||
{
|
||||
const TestImpact::BuildTargetDescriptor expectedBuiltTarget =
|
||||
GenerateBuildTargetDescriptor(m_name, m_outputName, m_path, m_expectedStaticSources, {});
|
||||
|
||||
// Given a valid raw descriptor string with no autogen sources
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, m_staticSources, {}, {});
|
||||
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Expect the constructed build target descriptor to match the specified descriptor
|
||||
EXPECT_TRUE(buildTarget == expectedBuiltTarget);
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, NoStaticOrAutogenSources_ExpectValidDescriptor)
|
||||
{
|
||||
const TestImpact::BuildTargetDescriptor expectedBuiltTarget = GenerateBuildTargetDescriptor(m_name, m_outputName, m_path, {}, {});
|
||||
|
||||
// Given a valid raw descriptor string with no static or autogen sources
|
||||
const AZStd::string rawTargetDescriptor = GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, {}, {}, {});
|
||||
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Expect the constructed build target descriptor to match the specified descriptor
|
||||
EXPECT_TRUE(buildTarget == expectedBuiltTarget);
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, AutogenOutputSourcesButNoAutogenInputSources_ExpectArtifactException)
|
||||
{
|
||||
// Given a valid raw descriptor string with autogen output sources but no autogen input sources
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, m_staticSources, {}, m_autogenOutputs);
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, AutogenInputSourcesButNoAutogenOutputSources_ExpectArtifactException)
|
||||
{
|
||||
// Given a valid raw descriptor string with autogen inout sources but no autogen output sources
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, m_staticSources, m_autogenInputs, {});
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(BuildTargetDescriptorFactoryTestFixture, StaticAndAutogenSources_ExpectValidDescriptor)
|
||||
{
|
||||
const TestImpact::BuildTargetDescriptor expectedBuiltTarget =
|
||||
GenerateBuildTargetDescriptor(m_name, m_outputName, m_path, m_expectedStaticSources, m_expectedAutogenSources);
|
||||
|
||||
// Given a valid raw descriptor string with static and autogen sources
|
||||
const AZStd::string rawTargetDescriptor =
|
||||
GenerateBuildTargetDescriptorString(m_name, m_outputName, m_path, m_staticSources, m_autogenInputs, m_autogenOutputs);
|
||||
|
||||
// When attempting to construct the build target descriptor
|
||||
const TestImpact::BuildTargetDescriptor buildTarget =
|
||||
TestImpact::BuildTargetDescriptorFactory(rawTargetDescriptor, m_staticExclude, m_inputExclude, m_autogenMatcher);
|
||||
|
||||
// Expect the constructed build target descriptor to match the specified descriptor
|
||||
EXPECT_TRUE(buildTarget == expectedBuiltTarget);
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-522
@@ -1,522 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Factory/TestImpactModuleCoverageFactory.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseEmptyString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an empty string
|
||||
const AZStd::string rawCoverage;
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the empty coverage
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseInvalidString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an invalid string
|
||||
const AZStd::string rawCoverage = "!@?";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the invalid coverage
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseEmptyCoverage_ExpectEmptyModuleCoverages)
|
||||
{
|
||||
// Given an empty coverage string
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617713965\" lines-covered=\"0\" lines-valid=\"0\" version=\"0\">"
|
||||
" <sources/>"
|
||||
" <packages/>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When attempting to parse the empty coverage
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect an empty module coverages
|
||||
EXPECT_TRUE(coverage.empty());
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetLineCoverageA_ReturnsValidLineCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetALineModuleCoverages();
|
||||
|
||||
// Given the raw line coverage output of TestTargetA
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617124634\" lines-covered=\"41\" lines-valid=\"41\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetA.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetA.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines>"
|
||||
" <line number=\"22\" hits=\"1\"/>"
|
||||
" <line number=\"23\" hits=\"1\"/>"
|
||||
" <line number=\"24\" hits=\"1\"/>"
|
||||
" <line number=\"25\" hits=\"1\"/>"
|
||||
" <line number=\"27\" hits=\"1\"/>"
|
||||
" <line number=\"28\" hits=\"1\"/>"
|
||||
" <line number=\"29\" hits=\"1\"/>"
|
||||
" <line number=\"30\" hits=\"1\"/>"
|
||||
" <line number=\"32\" hits=\"1\"/>"
|
||||
" <line number=\"33\" hits=\"1\"/>"
|
||||
" <line number=\"34\" hits=\"1\"/>"
|
||||
" <line number=\"35\" hits=\"1\"/>"
|
||||
" <line number=\"37\" hits=\"1\"/>"
|
||||
" <line number=\"38\" hits=\"1\"/>"
|
||||
" <line number=\"39\" hits=\"1\"/>"
|
||||
" <line number=\"40\" hits=\"1\"/>"
|
||||
" <line number=\"42\" hits=\"1\"/>"
|
||||
" <line number=\"43\" hits=\"1\"/>"
|
||||
" <line number=\"44\" hits=\"1\"/>"
|
||||
" <line number=\"45\" hits=\"1\"/>"
|
||||
" <line number=\"47\" hits=\"1\"/>"
|
||||
" <line number=\"48\" hits=\"1\"/>"
|
||||
" <line number=\"49\" hits=\"1\"/>"
|
||||
" <line number=\"50\" hits=\"1\"/>"
|
||||
" <line number=\"52\" hits=\"1\"/>"
|
||||
" <line number=\"53\" hits=\"1\"/>"
|
||||
" <line number=\"54\" hits=\"1\"/>"
|
||||
" <line number=\"55\" hits=\"1\"/>"
|
||||
" <line number=\"57\" hits=\"1\"/>"
|
||||
" <line number=\"58\" hits=\"1\"/>"
|
||||
" <line number=\"59\" hits=\"1\"/>"
|
||||
" <line number=\"60\" hits=\"1\"/>"
|
||||
" <line number=\"62\" hits=\"1\"/>"
|
||||
" <line number=\"63\" hits=\"1\"/>"
|
||||
" <line number=\"64\" hits=\"1\"/>"
|
||||
" <line number=\"65\" hits=\"1\"/>"
|
||||
" <line number=\"67\" hits=\"1\"/>"
|
||||
" <line number=\"68\" hits=\"1\"/>"
|
||||
" <line number=\"69\" hits=\"1\"/>"
|
||||
" <line number=\"70\" hits=\"1\"/>"
|
||||
" <line number=\"73\" hits=\"1\"/>"
|
||||
" </lines>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw line coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetSourceCoverageA_ReturnsValidSourceCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetASourceModuleCoverages();
|
||||
|
||||
// Given the raw source coverage output of TestTargetA
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617117760\" lines-covered=\"0\" lines-valid=\"0\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetA.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetA.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines/>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw source coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetLineCoverageB_ReturnsValidLineCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetBLineModuleCoverages();
|
||||
|
||||
// Given the raw line coverage output of TestTargetB
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617124605\" lines-covered=\"29\" lines-valid=\"29\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetB.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetB.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetB\\Code\\Tests\\TestImpactTestTargetB.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines>"
|
||||
" <line number=\"29\" hits=\"1\"/>"
|
||||
" <line number=\"30\" hits=\"1\"/>"
|
||||
" <line number=\"31\" hits=\"1\"/>"
|
||||
" <line number=\"32\" hits=\"1\"/>"
|
||||
" <line number=\"34\" hits=\"1\"/>"
|
||||
" <line number=\"35\" hits=\"1\"/>"
|
||||
" <line number=\"36\" hits=\"1\"/>"
|
||||
" <line number=\"37\" hits=\"1\"/>"
|
||||
" <line number=\"39\" hits=\"1\"/>"
|
||||
" <line number=\"40\" hits=\"1\"/>"
|
||||
" <line number=\"41\" hits=\"1\"/>"
|
||||
" <line number=\"42\" hits=\"1\"/>"
|
||||
" <line number=\"44\" hits=\"1\"/>"
|
||||
" <line number=\"45\" hits=\"1\"/>"
|
||||
" <line number=\"46\" hits=\"1\"/>"
|
||||
" <line number=\"47\" hits=\"1\"/>"
|
||||
" <line number=\"49\" hits=\"1\"/>"
|
||||
" <line number=\"50\" hits=\"1\"/>"
|
||||
" <line number=\"51\" hits=\"1\"/>"
|
||||
" <line number=\"52\" hits=\"1\"/>"
|
||||
" <line number=\"54\" hits=\"1\"/>"
|
||||
" <line number=\"55\" hits=\"1\"/>"
|
||||
" <line number=\"56\" hits=\"1\"/>"
|
||||
" <line number=\"57\" hits=\"1\"/>"
|
||||
" <line number=\"59\" hits=\"1\"/>"
|
||||
" <line number=\"66\" hits=\"1\"/>"
|
||||
" <line number=\"68\" hits=\"1\"/>"
|
||||
" <line number=\"75\" hits=\"1\"/>"
|
||||
" <line number=\"78\" hits=\"1\"/>"
|
||||
" </lines>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw line coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetSourceCoverageB_ReturnsValidSourceCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetBSourceModuleCoverages();
|
||||
|
||||
// Given the raw source coverage output of TestTargetB
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617117785\" lines-covered=\"0\" lines-valid=\"0\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetB.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetB.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetB\\Code\\Tests\\TestImpactTestTargetB.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines/>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw source coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetLineCoverageC_ReturnsValidLineCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetCLineModuleCoverages();
|
||||
|
||||
// Given the raw line coverage output of TestTargetC
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617124593\" lines-covered=\"25\" lines-valid=\"25\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetC.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetC.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines>"
|
||||
" <line number=\"32\" hits=\"1\"/>"
|
||||
" <line number=\"33\" hits=\"1\"/>"
|
||||
" <line number=\"34\" hits=\"1\"/>"
|
||||
" <line number=\"35\" hits=\"1\"/>"
|
||||
" <line number=\"37\" hits=\"1\"/>"
|
||||
" <line number=\"38\" hits=\"1\"/>"
|
||||
" <line number=\"39\" hits=\"1\"/>"
|
||||
" <line number=\"40\" hits=\"1\"/>"
|
||||
" <line number=\"42\" hits=\"1\"/>"
|
||||
" <line number=\"43\" hits=\"1\"/>"
|
||||
" <line number=\"44\" hits=\"1\"/>"
|
||||
" <line number=\"45\" hits=\"1\"/>"
|
||||
" <line number=\"47\" hits=\"1\"/>"
|
||||
" <line number=\"48\" hits=\"1\"/>"
|
||||
" <line number=\"49\" hits=\"1\"/>"
|
||||
" <line number=\"50\" hits=\"1\"/>"
|
||||
" <line number=\"52\" hits=\"1\"/>"
|
||||
" <line number=\"53\" hits=\"1\"/>"
|
||||
" <line number=\"54\" hits=\"1\"/>"
|
||||
" <line number=\"55\" hits=\"1\"/>"
|
||||
" <line number=\"57\" hits=\"1\"/>"
|
||||
" <line number=\"58\" hits=\"1\"/>"
|
||||
" <line number=\"59\" hits=\"1\"/>"
|
||||
" <line number=\"60\" hits=\"1\"/>"
|
||||
" <line number=\"63\" hits=\"1\"/>"
|
||||
" </lines>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw line coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetSourceCoverageC_ReturnsValidSourceCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetCSourceModuleCoverages();
|
||||
|
||||
// Given the raw source coverage output of TestTargetC
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617117796\" lines-covered=\"0\" lines-valid=\"0\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetC.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetC.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines/>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw source coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetLineCoverageD_ReturnsValidLineCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetDLineModuleCoverages();
|
||||
|
||||
// Given the raw line coverage output of TestTargetD
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"0.6470588235294118\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617124579\" lines-covered=\"55\" lines-valid=\"85\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetD.Tests.dll\" line-rate=\"0.6470588235294118\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetD.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line-rate=\"0.6470588235294118\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines>"
|
||||
" <line number=\"56\" hits=\"1\"/>"
|
||||
" <line number=\"57\" hits=\"1\"/>"
|
||||
" <line number=\"58\" hits=\"1\"/>"
|
||||
" <line number=\"59\" hits=\"1\"/>"
|
||||
" <line number=\"61\" hits=\"1\"/>"
|
||||
" <line number=\"62\" hits=\"0\"/>"
|
||||
" <line number=\"63\" hits=\"0\"/>"
|
||||
" <line number=\"64\" hits=\"0\"/>"
|
||||
" <line number=\"66\" hits=\"1\"/>"
|
||||
" <line number=\"67\" hits=\"1\"/>"
|
||||
" <line number=\"68\" hits=\"1\"/>"
|
||||
" <line number=\"69\" hits=\"1\"/>"
|
||||
" <line number=\"71\" hits=\"1\"/>"
|
||||
" <line number=\"72\" hits=\"1\"/>"
|
||||
" <line number=\"73\" hits=\"1\"/>"
|
||||
" <line number=\"74\" hits=\"1\"/>"
|
||||
" <line number=\"76\" hits=\"1\"/>"
|
||||
" <line number=\"77\" hits=\"1\"/>"
|
||||
" <line number=\"78\" hits=\"1\"/>"
|
||||
" <line number=\"79\" hits=\"1\"/>"
|
||||
" <line number=\"81\" hits=\"1\"/>"
|
||||
" <line number=\"82\" hits=\"1\"/>"
|
||||
" <line number=\"83\" hits=\"1\"/>"
|
||||
" <line number=\"84\" hits=\"1\"/>"
|
||||
" <line number=\"86\" hits=\"1\"/>"
|
||||
" <line number=\"87\" hits=\"1\"/>"
|
||||
" <line number=\"88\" hits=\"1\"/>"
|
||||
" <line number=\"89\" hits=\"1\"/>"
|
||||
" <line number=\"91\" hits=\"1\"/>"
|
||||
" <line number=\"92\" hits=\"0\"/>"
|
||||
" <line number=\"93\" hits=\"0\"/>"
|
||||
" <line number=\"94\" hits=\"0\"/>"
|
||||
" <line number=\"96\" hits=\"1\"/>"
|
||||
" <line number=\"97\" hits=\"0\"/>"
|
||||
" <line number=\"98\" hits=\"0\"/>"
|
||||
" <line number=\"99\" hits=\"0\"/>"
|
||||
" <line number=\"101\" hits=\"1\"/>"
|
||||
" <line number=\"102\" hits=\"1\"/>"
|
||||
" <line number=\"103\" hits=\"1\"/>"
|
||||
" <line number=\"104\" hits=\"1\"/>"
|
||||
" <line number=\"106\" hits=\"1\"/>"
|
||||
" <line number=\"107\" hits=\"0\"/>"
|
||||
" <line number=\"108\" hits=\"0\"/>"
|
||||
" <line number=\"109\" hits=\"0\"/>"
|
||||
" <line number=\"111\" hits=\"1\"/>"
|
||||
" <line number=\"112\" hits=\"0\"/>"
|
||||
" <line number=\"113\" hits=\"0\"/>"
|
||||
" <line number=\"114\" hits=\"0\"/>"
|
||||
" <line number=\"116\" hits=\"1\"/>"
|
||||
" <line number=\"117\" hits=\"0\"/>"
|
||||
" <line number=\"118\" hits=\"0\"/>"
|
||||
" <line number=\"119\" hits=\"0\"/>"
|
||||
" <line number=\"121\" hits=\"1\"/>"
|
||||
" <line number=\"128\" hits=\"1\"/>"
|
||||
" <line number=\"130\" hits=\"1\"/>"
|
||||
" <line number=\"137\" hits=\"1\"/>"
|
||||
" <line number=\"139\" hits=\"1\"/>"
|
||||
" <line number=\"146\" hits=\"1\"/>"
|
||||
" <line number=\"148\" hits=\"1\"/>"
|
||||
" <line number=\"155\" hits=\"1\"/>"
|
||||
" <line number=\"157\" hits=\"1\"/>"
|
||||
" <line number=\"158\" hits=\"1\"/>"
|
||||
" <line number=\"159\" hits=\"1\"/>"
|
||||
" <line number=\"160\" hits=\"1\"/>"
|
||||
" <line number=\"162\" hits=\"1\"/>"
|
||||
" <line number=\"163\" hits=\"0\"/>"
|
||||
" <line number=\"164\" hits=\"0\"/>"
|
||||
" <line number=\"165\" hits=\"0\"/>"
|
||||
" <line number=\"167\" hits=\"1\"/>"
|
||||
" <line number=\"168\" hits=\"1\"/>"
|
||||
" <line number=\"169\" hits=\"1\"/>"
|
||||
" <line number=\"170\" hits=\"1\"/>"
|
||||
" <line number=\"172\" hits=\"1\"/>"
|
||||
" <line number=\"173\" hits=\"0\"/>"
|
||||
" <line number=\"174\" hits=\"0\"/>"
|
||||
" <line number=\"175\" hits=\"0\"/>"
|
||||
" <line number=\"177\" hits=\"1\"/>"
|
||||
" <line number=\"178\" hits=\"0\"/>"
|
||||
" <line number=\"179\" hits=\"0\"/>"
|
||||
" <line number=\"180\" hits=\"0\"/>"
|
||||
" <line number=\"182\" hits=\"1\"/>"
|
||||
" <line number=\"183\" hits=\"0\"/>"
|
||||
" <line number=\"184\" hits=\"0\"/>"
|
||||
" <line number=\"185\" hits=\"0\"/>"
|
||||
" <line number=\"188\" hits=\"1\"/>"
|
||||
" </lines>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw line coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
|
||||
TEST(CoberturaModuleCoveragesFactory, ParseTestTargetSourceCoverageD_ReturnsValidSourceCoverage)
|
||||
{
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> expectedCoverage = GetTestTargetDSourceModuleCoverages();
|
||||
|
||||
// Given the raw source coverage output of TestTargetD
|
||||
const AZStd::string rawCoverage =
|
||||
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
"<coverage line-rate=\"1\" branch-rate=\"0\" complexity=\"0\" branches-covered=\"0\" branches-valid=\"0\" timestamp=\"1617117804\" lines-covered=\"0\" lines-valid=\"0\" version=\"0\">"
|
||||
" <sources>"
|
||||
" <source>C:</source>"
|
||||
" </sources>"
|
||||
" <packages>"
|
||||
" <package name=\"C:\\Lumberyard\\windows_vs2019\\bin\\debug\\TestImpact.TestTargetD.Tests.dll\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <classes>"
|
||||
" <class name=\"TestImpactTestTargetD.cpp\" filename=\"Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line-rate=\"1\" branch-rate=\"0\" complexity=\"0\">"
|
||||
" <methods/>"
|
||||
" <lines/>"
|
||||
" </class>"
|
||||
" </classes>"
|
||||
" </package>"
|
||||
" </packages>"
|
||||
"</coverage>"
|
||||
"";
|
||||
|
||||
// When the raw source coverage text is parsed
|
||||
const AZStd::vector<TestImpact::ModuleCoverage> coverage = TestImpact::Cobertura::ModuleCoveragesFactory(rawCoverage);
|
||||
|
||||
// Expect the generated suite data to match that of the raw coverage text
|
||||
EXPECT_TRUE(coverage == expectedCoverage);
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-150
@@ -1,150 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Static/TestImpactTargetDescriptorCompiler.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class TargetDescriptorCompilerTestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
public:
|
||||
void SetUp() override
|
||||
{
|
||||
AllocatorsTestFixture::SetUp();
|
||||
|
||||
m_buildTargetDescriptors.emplace_back(TestImpact::BuildTargetDescriptor{{"TestTargetA", "", ""}, {}});
|
||||
m_buildTargetDescriptors.emplace_back(TestImpact::BuildTargetDescriptor{{"TestTargetB", "", ""}, {}});
|
||||
m_buildTargetDescriptors.emplace_back(TestImpact::BuildTargetDescriptor{{"ProductionTargetA", "", ""}, {}});
|
||||
m_buildTargetDescriptors.emplace_back(TestImpact::BuildTargetDescriptor{{"ProductionTargetB", "", ""}, {}});
|
||||
m_buildTargetDescriptors.emplace_back(TestImpact::BuildTargetDescriptor{{"ProductionTargetC", "", ""}, {}});
|
||||
|
||||
m_testTargetMetaMap.emplace("TestTargetA", TestImpact::TestTargetMeta{"", TestImpact::LaunchMethod::TestRunner});
|
||||
m_testTargetMetaMap.emplace("TestTargetB", TestImpact::TestTargetMeta{"", TestImpact::LaunchMethod::StandAlone});
|
||||
}
|
||||
|
||||
protected:
|
||||
AZStd::vector<TestImpact::BuildTargetDescriptor> m_buildTargetDescriptors;
|
||||
TestImpact::TestTargetMetaMap m_testTargetMetaMap;
|
||||
};
|
||||
|
||||
TestImpact::ProductionTargetDescriptor ConstructProductionTargetDescriptor(const AZStd::string& name)
|
||||
{
|
||||
return TestImpact::ProductionTargetDescriptor{TestImpact::BuildTargetDescriptor{{name, "", ""}, {{}, {}}}};
|
||||
}
|
||||
|
||||
TestImpact::TestTargetDescriptor ConstructTestTargetDescriptor(const AZStd::string& name, TestImpact::LaunchMethod launchMethod)
|
||||
{
|
||||
return TestImpact::TestTargetDescriptor{
|
||||
TestImpact::BuildTargetDescriptor{{name, "", ""}, {{}, {}}}, TestImpact::TestTargetMeta{"", launchMethod}};
|
||||
}
|
||||
|
||||
TEST_F(TargetDescriptorCompilerTestFixture, EmptyBuildTargetDescriptorList_ExpectArtifactException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an empty build target descriptor list but valid test target meta map
|
||||
// When attempting to construct the test target
|
||||
const auto& [productionTargetDescriptors, testTargetDescriptors] =
|
||||
TestImpact::CompileTargetDescriptors({}, AZStd::move(m_testTargetMetaMap));
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(TargetDescriptorCompilerTestFixture, EmptyTestTargetMetaMap_ExpectArtifactException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given a valid build target descriptor list but empty test target meta map
|
||||
// When attempting to construct the test target
|
||||
const auto& [productionTargetDescriptors, testTargetDescriptors] =
|
||||
TestImpact::CompileTargetDescriptors(AZStd::move(m_buildTargetDescriptors), {});
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(TargetDescriptorCompilerTestFixture, TestTargetWithNoMatchingMeta_ExpectArtifactException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given a valid build target descriptor list but a test target meta map with an orphan entry
|
||||
m_testTargetMetaMap.emplace("Orphan", TestImpact::TestTargetMeta{"", TestImpact::LaunchMethod::TestRunner});
|
||||
|
||||
// When attempting to construct the test target
|
||||
const auto& [productionTargetDescriptors, testTargetDescriptors] =
|
||||
TestImpact::CompileTargetDescriptors(AZStd::move(m_buildTargetDescriptors), {});
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(TargetDescriptorCompilerTestFixture, ValidProductionTargetsAndTestTargetMetas_ExpectValidProductionAndTestTargets)
|
||||
{
|
||||
// Given a valid build target descriptor list and a valid test target meta map
|
||||
// When attempting to construct the test target
|
||||
const auto& [productionTargetDescriptors, testTargetDescriptors] =
|
||||
TestImpact::CompileTargetDescriptors(AZStd::move(m_buildTargetDescriptors), AZStd::move(m_testTargetMetaMap));
|
||||
|
||||
// Expect the production targets to match the expected targets
|
||||
EXPECT_TRUE(productionTargetDescriptors.size() == 3);
|
||||
EXPECT_TRUE(productionTargetDescriptors[0] == ConstructProductionTargetDescriptor("ProductionTargetA"));
|
||||
EXPECT_TRUE(productionTargetDescriptors[1] == ConstructProductionTargetDescriptor("ProductionTargetB"));
|
||||
EXPECT_TRUE(productionTargetDescriptors[2] == ConstructProductionTargetDescriptor("ProductionTargetC"));
|
||||
|
||||
// Expect the test targets to match the expected targets
|
||||
EXPECT_TRUE(testTargetDescriptors.size() == 2);
|
||||
EXPECT_TRUE(testTargetDescriptors[0] == ConstructTestTargetDescriptor("TestTargetA", TestImpact::LaunchMethod::TestRunner));
|
||||
EXPECT_TRUE(testTargetDescriptors[1] == ConstructTestTargetDescriptor("TestTargetB", TestImpact::LaunchMethod::StandAlone));
|
||||
}
|
||||
|
||||
} // namespace UnitTest
|
||||
-589
@@ -1,589 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Factory/TestImpactTestEnumerationSuiteFactory.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/containers/vector.h>
|
||||
#include <AzCore/std/string/regex.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
TEST(GTestEnumerationSuiteFactory, ParseEmptyString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an empty string
|
||||
const AZStd::string rawEnum;
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the empty suite
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(GTestEnumerationSuiteFactory, ParseInvalidString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an invalid string
|
||||
const AZStd::string rawEnum = "!@?";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the empty suite
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(GTestEnumerationSuiteFactory, ParseTestTargetA_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> expectedSuites = GetTestTargetATestEnumerationSuites();
|
||||
|
||||
// Given the raw enum output of TestTargetA
|
||||
const AZStd::string rawEnum =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||
"<testsuites tests=\"10\" name=\"AllTests\">\n"
|
||||
" <testsuite name=\"TestCase\" tests=\"7\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"22\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"27\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"32\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"37\" />\n"
|
||||
" <testcase name=\"Test5_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"42\" />\n"
|
||||
" <testcase name=\"Test6_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"47\" />\n"
|
||||
" <testcase name=\"Test7_WillFail\" file=\"C:\\Tests\\TestImpactTestTargetA.cpp\" line=\"52\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixture\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp\" line=\"57\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp\" line=\"62\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" file=\"C:\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp\" line=\"67\" />\n"
|
||||
" </testsuite>\n"
|
||||
"</testsuites>\n"
|
||||
"\n";
|
||||
|
||||
// When the raw enumeration text is parsed
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Expect the generated suite data to match that of the raw enum text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestEnumerationSuiteFactory, ParseTestTargetB_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> expectedSuites = GetTestTargetBTestEnumerationSuites();
|
||||
|
||||
// Given the raw enum output of TestTargetB
|
||||
const AZStd::string rawEnum =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||
"<testsuites tests=\"112\" name=\"AllTests\">\n"
|
||||
" <testsuite name=\"TestCase\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"29\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"34\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"39\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixture\" tests=\"1\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"44\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"PermutationA/TestFixtureWithParams\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithParams\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" <testcase name=\"Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestImpactTestTargetB.cpp\" line=\"49\" />\n"
|
||||
" </testsuite>\n"
|
||||
"</testsuites>\n"
|
||||
"\n";
|
||||
|
||||
// When the raw enumeration text is parsed
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Expect the generated suite data to match that of the raw enum text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestEnumerationSuiteFactory, ParseTestTargetC_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> expectedSuites = GetTestTargetCTestEnumerationSuites();
|
||||
|
||||
// Given the raw enum output of TestTargetC
|
||||
const AZStd::string rawEnum =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||
"<testsuites tests=\"18\" name=\"AllTests\">\n"
|
||||
" <testsuite name=\"TestFixture\" tests=\"2\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"32\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"37\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes/0\" tests=\"4\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"42\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"47\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"52\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"57\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes/1\" tests=\"4\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"42\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"47\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"52\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"57\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes/2\" tests=\"4\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"42\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"47\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"52\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"57\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes/3\" tests=\"4\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"42\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"47\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"52\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetC\\Code\\Tests\\TestImpactTestTargetC.cpp\" line=\"57\" />\n"
|
||||
" </testsuite>\n"
|
||||
"</testsuites>\n"
|
||||
"\n";
|
||||
|
||||
// When the raw enumeration text is parsed
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Expect the generated suite data to match that of the raw enum text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestEnumerationSuiteFactory, ParseTestTargetD_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> expectedSuites = GetTestTargetDTestEnumerationSuites();
|
||||
|
||||
// Given the raw enum output of TestTargetD
|
||||
const AZStd::string rawEnum =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||
"<testsuites tests=\"249\" name=\"AllTests\">\n"
|
||||
" <testsuite name=\"TestCase\" tests=\"5\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"56\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"61\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"66\" />\n"
|
||||
" <testcase name=\"Test4_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"71\" />\n"
|
||||
" <testcase name=\"Test5_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"76\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixture1\" tests=\"2\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"81\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"86\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixture2\" tests=\"2\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"91\" />\n"
|
||||
" <testcase name=\"Test2_WillPass\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"96\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/0\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"157\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"162\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"167\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/1\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"157\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"162\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"167\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/2\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"157\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"162\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"167\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/3\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"157\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"162\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"167\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/0\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"172\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"177\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"182\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/1\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"172\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"177\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"182\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/2\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"172\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"177\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"182\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/3\" tests=\"3\">\n"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"172\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"177\" />\n"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"182\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"PermutationA/TestFixtureWithParams1\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"TestFixtureWithParams1\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"101\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"PermutationA/DISABLED_TestFixtureWithParams2\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" </testsuite>\n"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithParams2\" tests=\"54\">\n"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" file=\"C:\\Tests\\TestTargetD\\Code\\Tests\\TestImpactTestTargetD.cpp\" line=\"111\" />\n"
|
||||
" </testsuite>\n"
|
||||
"</testsuites>\n"
|
||||
"\n";
|
||||
|
||||
// When the raw enumeration text is parsed
|
||||
const AZStd::vector<TestImpact::TestEnumerationSuite> suites = TestImpact::GTest::TestEnumerationSuitesFactory(rawEnum);
|
||||
|
||||
// Expect the generated suite data to match that of the raw enum text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-592
@@ -1,592 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Factory/TestImpactTestRunSuiteFactory.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/containers/vector.h>
|
||||
#include <AzCore/std/string/regex.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
TEST(GTestRunSuiteFactory, ParseEmptyString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an empty string
|
||||
const AZStd::string rawRun;
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the empty suite
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect a artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(GTestRunSuiteFactory, ParseInvalidString_ThrowsArtifactException)
|
||||
{
|
||||
// Given an invalid string
|
||||
const AZStd::string rawRun = "!@?";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to parse the invalid suite
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Do not expect the parsing to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect a artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(GTestRunSuiteFactory, ParseTestTargetA_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestRunSuite> expectedSuites = GetTestTargetATestRunSuites();
|
||||
|
||||
// Given the raw run output of TestTargetA
|
||||
const AZStd::string rawRun =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
"<testsuites tests=\"10\" failures=\"1\" disabled=\"0\" errors=\"0\" timestamp=\"2021-03-26T19:02:37\" time=\"0.051\" name=\"AllTests\">"
|
||||
" <testsuite name=\"TestCase\" tests=\"7\" failures=\"1\" disabled=\"0\" errors=\"0\" time=\"0.003\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test3_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test4_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test5_WillPass\" status=\"run\" time=\"0.001\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test6_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test7_WillFail\" status=\"run\" time=\"0.001\" classname=\"TestCase\">"
|
||||
" <failure message=\"C:\\Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp:54
Failed\" type=\"\"><![CDATA[C:\\Lumberyard\\Code\\Tools\\TestImpactFramework\\Runtime\\Code\\Tests\\TestTargetA\\Code\\Tests\\TestImpactTestTargetA.cpp:54"
|
||||
"Failed]]></failure>"
|
||||
" </testcase>"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixture\" tests=\"3\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.038\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.004\" classname=\"TestFixture\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"run\" time=\"0\" classname=\"TestFixture\" />"
|
||||
" <testcase name=\"Test3_WillPass\" status=\"run\" time=\"0.001\" classname=\"TestFixture\" />"
|
||||
" </testsuite>"
|
||||
"</testsuites>"
|
||||
"";
|
||||
|
||||
// When the raw run text is parsed
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Expect the generated suite data to match that of the raw run text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestRunSuiteFactory, ParseTestTargetB_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestRunSuite> expectedSuites = GetTestTargetBTestRunSuites();
|
||||
|
||||
// Given the raw run output of TestTargetB
|
||||
const AZStd::string rawRun =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
"<testsuites tests=\"112\" failures=\"0\" disabled=\"0\" errors=\"0\" timestamp=\"2021-03-27T11:56:14\" time=\"7.155\" name=\"AllTests\">"
|
||||
" <testsuite name=\"TestCase\" tests=\"3\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.202\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.003\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test3_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixture\" tests=\"1\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.062\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.005\" classname=\"TestFixture\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"PermutationA/TestFixtureWithParams\" tests=\"54\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"3.203\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithParams\" tests=\"54\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"3.36\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"run\" time=\"0.002\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" <testcase name=\"Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams\" />"
|
||||
" </testsuite>"
|
||||
"</testsuites>"
|
||||
"";
|
||||
|
||||
// When the raw run text is parsed
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Expect the generated suite data to match that of the raw run text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestRunSuiteFactory, ParseTestTargetC_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestRunSuite> expectedSuites = GetTestTargetCTestRunSuites();
|
||||
|
||||
// Given the raw run output of TestTargetC
|
||||
const AZStd::string rawRun =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
"<testsuites tests=\"18\" failures=\"0\" disabled=\"0\" errors=\"0\" timestamp=\"2021-03-27T12:35:40\" time=\"1.022\" name=\"AllTests\">"
|
||||
" <testsuite name=\"TestFixture\" tests=\"2\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.125\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.004\" classname=\"TestFixture\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"run\" time=\"0\" classname=\"TestFixture\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes/0\" tests=\"4\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.21\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/0\" />"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"int\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes/0\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes/0\" />"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"int\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes/0\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes/1\" tests=\"4\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.208\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes/1\" />"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"float\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes/1\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/1\" />"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"float\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes/2\" tests=\"4\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.199\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/2\" />"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/2\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/2\" />"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/2\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes/3\" tests=\"4\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.049\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/3\" />"
|
||||
" <testcase name=\"Test2_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/3\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/3\" />"
|
||||
" <testcase name=\"Test4_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes/3\" />"
|
||||
" </testsuite>"
|
||||
"</testsuites>"
|
||||
"";
|
||||
|
||||
// When the raw run text is parsed
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Expect the generated suite data to match that of the raw run text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
|
||||
TEST(GTestRunSuiteFactory, ParseTestTargetD_ReturnsValidSuitesAndTests)
|
||||
{
|
||||
const AZStd::vector<TestImpact::TestRunSuite> expectedSuites = GetTestTargetDTestRunSuites();
|
||||
|
||||
// Given the raw run output of TestTargetD
|
||||
const AZStd::string rawRun =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
"<testsuites tests=\"249\" failures=\"0\" disabled=\"181\" errors=\"0\" timestamp=\"2021-03-25T15:18:40\" time=\"0.314\" name=\"AllTests\">"
|
||||
" <testsuite name=\"TestCase\" tests=\"5\" failures=\"0\" disabled=\"1\" errors=\"0\" time=\"0.003\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.001\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" status=\"notrun\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test3_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test4_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" <testcase name=\"Test5_WillPass\" status=\"run\" time=\"0\" classname=\"TestCase\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixture1\" tests=\"2\" failures=\"0\" disabled=\"0\" errors=\"0\" time=\"0.004\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"run\" time=\"0.002\" classname=\"TestFixture1\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"run\" time=\"0\" classname=\"TestFixture1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixture2\" tests=\"2\" failures=\"0\" disabled=\"2\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixture2\" />"
|
||||
" <testcase name=\"Test2_WillPass\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixture2\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/0\" tests=\"3\" failures=\"0\" disabled=\"1\" errors=\"0\" time=\"0.001\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/0\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"int\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithTypes1/0\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/0\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/1\" tests=\"3\" failures=\"0\" disabled=\"1\" errors=\"0\" time=\"0.003\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithTypes1/1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"float\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithTypes1/1\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/2\" tests=\"3\" failures=\"0\" disabled=\"1\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"double\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithTypes1/2\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/2\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithTypes1/3\" tests=\"3\" failures=\"0\" disabled=\"1\" errors=\"0\" time=\"0.001\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/3\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"char\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithTypes1/3\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" status=\"run\" time=\"0\" classname=\"TestFixtureWithTypes1/3\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/0\" tests=\"3\" failures=\"0\" disabled=\"3\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"int\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/0\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"int\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/0\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"int\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/0\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/1\" tests=\"3\" failures=\"0\" disabled=\"3\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"float\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"float\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/1\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"float\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/2\" tests=\"3\" failures=\"0\" disabled=\"3\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"double\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"double\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/2\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"double\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/2\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithTypes2/3\" tests=\"3\" failures=\"0\" disabled=\"3\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass\" type_param=\"char\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/3\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass\" type_param=\"char\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/3\" />"
|
||||
" <testcase name=\"Test3_WillPass\" type_param=\"char\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithTypes2/3\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"PermutationA/TestFixtureWithParams1\" tests=\"54\" failures=\"0\" disabled=\"27\" errors=\"0\" time=\"0.173\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"run\" time=\"0.001\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"run\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/TestFixtureWithParams1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"TestFixtureWithParams1\" tests=\"54\" failures=\"0\" disabled=\"27\" errors=\"0\" time=\"0.102\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"run\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"run\" time=\"0.001\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"TestFixtureWithParams1\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"PermutationA/DISABLED_TestFixtureWithParams2\" tests=\"54\" failures=\"0\" disabled=\"54\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(1, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(1, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(1, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(1, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(1, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(1, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(1, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(1, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(1, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(2, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(2, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(2, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(2, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(2, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(2, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(2, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(2, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(2, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(4, '\\x3' (3), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(4, '\\x3' (3), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(4, '\\x3' (3), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(4, '\\x5' (5), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(4, '\\x5' (5), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(4, '\\x5' (5), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(4, '\\a' (7), -0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(4, '\\a' (7), 0)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(4, '\\a' (7), 1)\" status=\"notrun\" time=\"0\" classname=\"PermutationA/DISABLED_TestFixtureWithParams2\" />"
|
||||
" </testsuite>"
|
||||
" <testsuite name=\"DISABLED_TestFixtureWithParams2\" tests=\"54\" failures=\"0\" disabled=\"54\" errors=\"0\" time=\"0\">"
|
||||
" <testcase name=\"Test1_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"Test1_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/0\" value_param=\"(8, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/1\" value_param=\"(8, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/2\" value_param=\"(8, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/3\" value_param=\"(8, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/4\" value_param=\"(8, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/5\" value_param=\"(8, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/6\" value_param=\"(8, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/7\" value_param=\"(8, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/8\" value_param=\"(8, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/9\" value_param=\"(16, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/10\" value_param=\"(16, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/11\" value_param=\"(16, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/12\" value_param=\"(16, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/13\" value_param=\"(16, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/14\" value_param=\"(16, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/15\" value_param=\"(16, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/16\" value_param=\"(16, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/17\" value_param=\"(16, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/18\" value_param=\"(32, '\\t' (9), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/19\" value_param=\"(32, '\\t' (9), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/20\" value_param=\"(32, '\\t' (9), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/21\" value_param=\"(32, '\\r' (13, 0xD), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/22\" value_param=\"(32, '\\r' (13, 0xD), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/23\" value_param=\"(32, '\\r' (13, 0xD), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/24\" value_param=\"(32, '\\x11' (17), -10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/25\" value_param=\"(32, '\\x11' (17), 0.05)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" <testcase name=\"DISABLED_Test2_WillPass/26\" value_param=\"(32, '\\x11' (17), 10)\" status=\"notrun\" time=\"0\" classname=\"DISABLED_TestFixtureWithParams2\" />"
|
||||
" </testsuite>"
|
||||
"</testsuites>"
|
||||
"";
|
||||
|
||||
// When the raw run text is parsed
|
||||
const AZStd::vector<TestImpact::TestRunSuite> suites = TestImpact::GTest::TestRunSuitesFactory(rawRun);
|
||||
|
||||
// Expect the generated suite data to match that of the raw run text
|
||||
EXPECT_TRUE(suites == expectedSuites);
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-239
@@ -1,239 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Artifact/Factory/TestImpactTestTargetMetaMapFactory.h>
|
||||
#include <Artifact/TestImpactArtifactException.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
TEST(TestTargetMetaMapFactoryTest, NoRawData_ExpectArtifactException)
|
||||
{
|
||||
// Given an empty meta data string
|
||||
const AZStd::string rawTestTargetMetaData;
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, InvalidRawData_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw meta data string of invalid data
|
||||
const AZStd::string rawTestTargetMetaData = "abcde";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, EmptyTestMetaArray_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw meta data string of valid JSON that contains no tests
|
||||
const AZStd::string rawTestTargetMetaData =
|
||||
"{"
|
||||
" \"google\": {"
|
||||
" \"test\": {"
|
||||
" \"tests\": ["
|
||||
" ]"
|
||||
" }"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, EmptyName_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw meta data string with a test that has no name value
|
||||
const AZStd::string rawTestTargetMetaData =
|
||||
"{"
|
||||
" \"google\": {"
|
||||
" \"test\": {"
|
||||
" \"tests\": ["
|
||||
" { \"name\": \"\", \"namespace\": \"Legacy\", \"suite\": \"main\", \"launch_method\": \"test_runner\" }"
|
||||
" ]"
|
||||
" }"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, EmptyBuildType_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw meta data string with a test that has no build type
|
||||
const AZStd::string rawTestTargetMetaData =
|
||||
"{"
|
||||
" \"google\": {"
|
||||
" \"test\": {"
|
||||
" \"tests\": ["
|
||||
" { \"name\": \"TestName\", \"namespace\": \"Legacy\", \"suite\": \"main\", \"launch_method\": \"\" }"
|
||||
" ]"
|
||||
" }"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, InvalidBuildType_ExpectArtifactException)
|
||||
{
|
||||
// Given a raw meta data string with a test that has an invalid build type
|
||||
const AZStd::string rawTestTargetMetaData =
|
||||
"{"
|
||||
" \"google\": {"
|
||||
" \"test\": {"
|
||||
" \"tests\": ["
|
||||
" { \"name\": \"TestName\", \"namespace\": \"Legacy\", \"suite\": \"main\", \"launch_method\": \"Unknown\" }"
|
||||
" ]"
|
||||
" }"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
try
|
||||
{
|
||||
// When attempting to construct the test target
|
||||
const TestImpact::TestTargetMetaMap testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Do not expect this statement to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ArtifactException& e)
|
||||
{
|
||||
// Expect an artifact exception
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestTargetMetaMapFactoryTest, ValidMetaData_ExpectValidTestMetaData)
|
||||
{
|
||||
// Given a raw meta data string valid test meta-data
|
||||
const AZStd::string rawTestTargetMetaData =
|
||||
"{"
|
||||
" \"google\": {"
|
||||
" \"test\": {"
|
||||
" \"tests\": ["
|
||||
" { \"name\": \"TestA\", \"namespace\": \"Legacy\", \"suite\": \"main\", \"launch_method\": \"test_runner\" },"
|
||||
" { \"name\": \"TestB\", \"namespace\": \"\", \"suite\": \"main\", \"launch_method\": \"test_runner\" },"
|
||||
" { \"name\": \"TestC\", \"namespace\": \"\", \"suite\": \"\", \"launch_method\": \"test_runner\" },"
|
||||
" { \"name\": \"TestD\", \"namespace\": \"Legacy\", \"suite\": \"main\", \"launch_method\": \"stand_alone\" }"
|
||||
" ]"
|
||||
" }"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
// When attempting to construct the test target
|
||||
const auto testTargetMetaData = TestImpact::TestTargetMetaMapFactory(rawTestTargetMetaData);
|
||||
|
||||
// Expect the constructed test meta-data to match that of the supplied raw data
|
||||
EXPECT_EQ(testTargetMetaData.size(), 4);
|
||||
EXPECT_TRUE(testTargetMetaData.find("TestA") != testTargetMetaData.end());
|
||||
EXPECT_TRUE((testTargetMetaData.at("TestA") == TestImpact::TestTargetMeta{"main", TestImpact::LaunchMethod::TestRunner}));
|
||||
EXPECT_TRUE(testTargetMetaData.find("TestB") != testTargetMetaData.end());
|
||||
EXPECT_TRUE((testTargetMetaData.at("TestB") == TestImpact::TestTargetMeta{"main", TestImpact::LaunchMethod::TestRunner}));
|
||||
EXPECT_TRUE(testTargetMetaData.find("TestC") != testTargetMetaData.end());
|
||||
EXPECT_TRUE((testTargetMetaData.at("TestC") == TestImpact::TestTargetMeta{"", TestImpact::LaunchMethod::TestRunner}));
|
||||
EXPECT_TRUE(testTargetMetaData.find("TestD") != testTargetMetaData.end());
|
||||
EXPECT_TRUE((testTargetMetaData.at("TestD") == TestImpact::TestTargetMeta{"main", TestImpact::LaunchMethod::StandAlone}));
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-712
@@ -1,712 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Process/Scheduler/TestImpactProcessScheduler.h>
|
||||
|
||||
#include <AzCore/Debug/TraceMessageBus.h>
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/containers/vector.h>
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzCore/std/string/conversions.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
using SchedulerPermutation = AZStd::tuple
|
||||
<
|
||||
size_t, // Number of concurrent processes
|
||||
size_t // Number of processes to launch
|
||||
>;
|
||||
|
||||
class ProcessSchedulerTestFixtureWithParams
|
||||
: public AllocatorsTestFixture
|
||||
, private AZ::Debug::TraceMessageBus::Handler
|
||||
, public ::testing::WithParamInterface<SchedulerPermutation>
|
||||
{
|
||||
private:
|
||||
bool OnOutput(const char*, const char*) override;
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
|
||||
protected:
|
||||
void ConfigurePermutation();
|
||||
void ExpectSuccessfulLaunch(TestImpact::ProcessId pid);
|
||||
void ExpectGracefulExit(TestImpact::ProcessId pid);
|
||||
void ExpectUnsuccessfulLaunch(TestImpact::ProcessId pid);
|
||||
void ExpectExitCondition(
|
||||
TestImpact::ProcessId pid, AZStd::optional<TestImpact::ExitCondition> expectedExitCondition = AZStd::nullopt);
|
||||
void DoNotExpectExitCondition(TestImpact::ProcessId pid);
|
||||
void ExpectTerminatedProcess(TestImpact::ProcessId pid);
|
||||
void ExpectTimeoutProcess(TestImpact::ProcessId pid);
|
||||
void ExpectUnlaunchedProcess(TestImpact::ProcessId pid);
|
||||
void ExpectLargeStdOutput(TestImpact::ProcessId pid);
|
||||
void ExpectLargeStdError(TestImpact::ProcessId pid);
|
||||
void ExpectSmallStdOutput(TestImpact::ProcessId pid);
|
||||
void ExpectSmallStdError(TestImpact::ProcessId pid);
|
||||
void DoNotExpectStdOutput(TestImpact::ProcessId pid);
|
||||
void DoNotExpectStdError(TestImpact::ProcessId pid);
|
||||
|
||||
struct ProcessResult
|
||||
{
|
||||
AZStd::optional<TestImpact::LaunchResult> m_launchResult;
|
||||
AZStd::optional<TestImpact::ExitCondition> m_exitStatus;
|
||||
AZStd::optional<AZStd::chrono::high_resolution_clock::time_point> m_createTime;
|
||||
AZStd::optional<AZStd::chrono::high_resolution_clock::time_point> m_exitTime;
|
||||
AZStd::chrono::milliseconds m_duration = AZStd::chrono::milliseconds(0);
|
||||
AZStd::optional<TestImpact::ReturnCode> m_returnCode;
|
||||
TestImpact::StdContent m_std;
|
||||
};
|
||||
|
||||
size_t m_numMaxConcurrentProcesses = 0;
|
||||
size_t m_numProcessesToLaunch = 0;
|
||||
|
||||
AZStd::unique_ptr<TestImpact::ProcessScheduler> m_processScheduler;
|
||||
TestImpact::ProcessLaunchCallback m_processLaunchCallback;
|
||||
TestImpact::ProcessExitCallback m_processExitCallback;
|
||||
AZStd::vector<TestImpact::ProcessInfo> m_processInfos;
|
||||
AZStd::vector<ProcessResult> m_processResults;
|
||||
};
|
||||
|
||||
// Permutation values for small process batches
|
||||
const std::vector<size_t> SmallNumMaxConcurrentProcesses = {1, 4, 8};
|
||||
const std::vector<size_t> SmallNumProcessesToLaunch = {1, 8, 32};
|
||||
|
||||
// Permutation values for large process batches
|
||||
const std::vector<size_t> LargeNumMaxConcurrentProcesses = {16, 32, 64};
|
||||
const std::vector<size_t> LargeNumProcessesToLaunch = {128, 256, 512};
|
||||
|
||||
void ProcessSchedulerTestFixtureWithParams::ConfigurePermutation()
|
||||
{
|
||||
const auto& [numMaxConcurrentProcesses, numProcessesToLaunch] = GetParam();
|
||||
m_numMaxConcurrentProcesses = numMaxConcurrentProcesses;
|
||||
m_numProcessesToLaunch = numProcessesToLaunch;
|
||||
}
|
||||
|
||||
// Consume AZ log spam
|
||||
bool ProcessSchedulerTestFixtureWithParams::OnOutput([[maybe_unused]] const char*, [[maybe_unused]] const char*)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void ProcessSchedulerTestFixtureWithParams::SetUp()
|
||||
{
|
||||
UnitTest::AllocatorsTestFixture::SetUp();
|
||||
AZ::Debug::TraceMessageBus::Handler::BusConnect();
|
||||
ConfigurePermutation();
|
||||
|
||||
m_processLaunchCallback = [this](
|
||||
TestImpact::ProcessId pid,
|
||||
TestImpact::LaunchResult launchResult,
|
||||
AZStd::chrono::high_resolution_clock::time_point createTime)
|
||||
{
|
||||
m_processResults[pid].m_launchResult = launchResult;
|
||||
m_processResults[pid].m_createTime.emplace(createTime);
|
||||
return TestImpact::CallbackResult::Continue;
|
||||
};
|
||||
|
||||
m_processExitCallback = [this](
|
||||
TestImpact::ProcessId pid,
|
||||
TestImpact::ExitCondition exitStatus,
|
||||
TestImpact::ReturnCode returnCode,
|
||||
TestImpact::StdContent&& std,
|
||||
AZStd::chrono::high_resolution_clock::time_point exitTime)
|
||||
{
|
||||
m_processResults[pid].m_std = std::move(std);
|
||||
m_processResults[pid].m_returnCode.emplace(returnCode);
|
||||
m_processResults[pid].m_exitStatus = exitStatus;
|
||||
m_processResults[pid].m_exitTime = exitTime;
|
||||
m_processResults[pid].m_duration =
|
||||
AZStd::chrono::duration_cast<AZStd::chrono::milliseconds>(exitTime - *m_processResults[pid].m_createTime);
|
||||
return TestImpact::CallbackResult::Continue;
|
||||
};
|
||||
|
||||
m_processResults.resize(m_numProcessesToLaunch);
|
||||
}
|
||||
|
||||
void ProcessSchedulerTestFixtureWithParams::TearDown()
|
||||
{
|
||||
AZ::Debug::TraceMessageBus::Handler::BusDisconnect();
|
||||
UnitTest::AllocatorsTestFixture::TearDown();
|
||||
}
|
||||
|
||||
// Expects the process to have exited under the specified circumstances
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectExitCondition(
|
||||
TestImpact::ProcessId pid, AZStd::optional<TestImpact::ExitCondition> expectedExitCondition)
|
||||
{
|
||||
const auto& [launchResult, exitStatus, createTime, exitTime, duration, returnCode, std] = m_processResults[pid];
|
||||
|
||||
// Expect the processes to have exited
|
||||
EXPECT_TRUE(exitStatus.has_value());
|
||||
|
||||
// Expect the return code to be valid
|
||||
EXPECT_TRUE(returnCode.has_value());
|
||||
|
||||
if (expectedExitCondition.has_value())
|
||||
{
|
||||
// Expect the process to have exited under the specified conditions
|
||||
EXPECT_EQ(exitStatus, expectedExitCondition);
|
||||
|
||||
// Expect the return code to be that of the process's is (for gracefull exists) or that of the error code
|
||||
// associated with the abnormal exit condition
|
||||
EXPECT_EQ(returnCode,
|
||||
expectedExitCondition == TestImpact::ExitCondition::Gracefull
|
||||
? pid
|
||||
: static_cast<TestImpact::ReturnCode>(*exitStatus));
|
||||
}
|
||||
|
||||
// Expect the duration to be non zero and the create time and exit time to have values as the processes has been in-flight
|
||||
EXPECT_GT(duration.count(), 0);
|
||||
EXPECT_TRUE(createTime.has_value());
|
||||
EXPECT_TRUE(exitTime.has_value());
|
||||
|
||||
// Expect the exit time to be later than the start time
|
||||
EXPECT_GT(exitTime, createTime);
|
||||
}
|
||||
|
||||
// Expects the process to not have exited for to lack of being in-flight
|
||||
void ProcessSchedulerTestFixtureWithParams::DoNotExpectExitCondition(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& [launchResult, exitStatus, createTime, exitTime, duration, returnCode, std] = m_processResults[pid];
|
||||
|
||||
// Expect the processes to not have exited as the process has not been launched successfully
|
||||
EXPECT_FALSE(exitStatus.has_value());
|
||||
|
||||
// Expect the return code to be invalid
|
||||
EXPECT_FALSE(returnCode.has_value());
|
||||
|
||||
// Expect the duration to be zero as the process has not been in-flight
|
||||
EXPECT_EQ(duration.count(), 0);
|
||||
|
||||
// Do not expect the exit time to have a value
|
||||
EXPECT_FALSE(exitTime.has_value());
|
||||
}
|
||||
|
||||
// Expects the process to have been launched successfully, makes no assumptions about how it exited
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectSuccessfulLaunch(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& [launchResult, exitStatus, createTime, exitTime, duration, returnCode, std] = m_processResults[pid];
|
||||
|
||||
// Expect a launch to have been attempted by this process (not still in queue)
|
||||
EXPECT_TRUE(launchResult.has_value());
|
||||
|
||||
// Expect the process to have launched successfully
|
||||
EXPECT_EQ(launchResult, TestImpact::LaunchResult::Success);
|
||||
}
|
||||
|
||||
// Expects the process to have failed to launch
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectUnsuccessfulLaunch(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& [launchResult, exitStatus, createTime, exitTime, duration, returnCode, std] = m_processResults[pid];
|
||||
|
||||
// Expect a launch to have been attempted by this process (not still in queue)
|
||||
EXPECT_TRUE(launchResult.has_value());
|
||||
|
||||
// Expect the process to have launched unsuccessfully
|
||||
EXPECT_EQ(launchResult, TestImpact::LaunchResult::Failure);
|
||||
|
||||
// Expect the create time to have a value as the process was technically created
|
||||
EXPECT_TRUE(createTime.has_value());
|
||||
|
||||
DoNotExpectExitCondition(pid);
|
||||
}
|
||||
|
||||
// Expects the process to have exited gracefully of its own accord (i.e. not terminated for any reason by the scheduler)
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectGracefulExit(TestImpact::ProcessId pid)
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
ExpectExitCondition(pid, TestImpact::ExitCondition::Gracefull);
|
||||
}
|
||||
|
||||
// Expects the process to have been terminated by the client or scheduler
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectTerminatedProcess(TestImpact::ProcessId pid)
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
ExpectExitCondition(pid, TestImpact::ExitCondition::Terminated);
|
||||
}
|
||||
|
||||
// Expects the process to have been terminated by the scheduler due to the process or scheduler timing out
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectTimeoutProcess(TestImpact::ProcessId pid)
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
ExpectExitCondition(pid, TestImpact::ExitCondition::Timeout);
|
||||
}
|
||||
|
||||
// Expects the process to have not been attempted to launch (was still in the queue)
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectUnlaunchedProcess(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& [launchResult, exitStatus, createTime, exitTime, duration, returnCode, std] = m_processResults[pid];
|
||||
|
||||
// Expect a launch to not have been attempted by this process (still in queue)
|
||||
EXPECT_FALSE(launchResult.has_value());
|
||||
|
||||
// Expect the create time to have a value as the process was technically created
|
||||
EXPECT_FALSE(createTime.has_value());
|
||||
|
||||
DoNotExpectExitCondition(pid);
|
||||
}
|
||||
|
||||
// Expects the std output to have been captured from the process with a large volume of text
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectLargeStdOutput(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdOut = m_processResults[pid].m_std.m_out;
|
||||
|
||||
// Expect standard output to have a value
|
||||
EXPECT_TRUE(stdOut.has_value());
|
||||
|
||||
// Expect the output length to be that of the large text output from the child process
|
||||
EXPECT_EQ(stdOut.value().length(), LargeTextSize);
|
||||
}
|
||||
|
||||
// Expects the std error to have been captured from the process with a large volume of text
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectLargeStdError(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdErr = m_processResults[pid].m_std.m_err;
|
||||
|
||||
// Expect standard error to have a value
|
||||
EXPECT_TRUE(stdErr.has_value());
|
||||
|
||||
// Expect the error length to be that of the large text output from the child process
|
||||
EXPECT_EQ(stdErr.value().length(), LargeTextSize);
|
||||
}
|
||||
|
||||
// Expects the std output to have been captured from the process with a small known text string
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectSmallStdOutput(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdOut = m_processResults[pid].m_std.m_out;
|
||||
|
||||
// Expect standard output to have a value
|
||||
EXPECT_TRUE(stdOut.has_value());
|
||||
|
||||
// Expect the output to match the known stdout of the child
|
||||
EXPECT_EQ(stdOut.value(), KnownTestProcessOutputString(pid));
|
||||
}
|
||||
|
||||
// Expects the std error to have been captured from the process with a small known text string
|
||||
void ProcessSchedulerTestFixtureWithParams::ExpectSmallStdError(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdErr = m_processResults[pid].m_std.m_err;
|
||||
|
||||
// Expect standard error to have a value
|
||||
EXPECT_TRUE(stdErr.has_value());
|
||||
|
||||
// Expect the output to match the known stderr of the child
|
||||
EXPECT_EQ(stdErr.value(), KnownTestProcessErrorString(pid));
|
||||
}
|
||||
|
||||
// Expects no standard output from the child process
|
||||
void ProcessSchedulerTestFixtureWithParams::DoNotExpectStdOutput(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdOut = m_processResults[pid].m_std.m_out;
|
||||
|
||||
// Do not expect standard output to have a value
|
||||
EXPECT_FALSE(stdOut.has_value());
|
||||
}
|
||||
|
||||
// Expects no standard error from the child process
|
||||
void ProcessSchedulerTestFixtureWithParams::DoNotExpectStdError(TestImpact::ProcessId pid)
|
||||
{
|
||||
const auto& stdErr = m_processResults[pid].m_std.m_err;
|
||||
|
||||
// Do not expect standard error to have a value
|
||||
EXPECT_FALSE(stdErr.has_value());
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, ValidProcesses_SuccessfulLaunches)
|
||||
{
|
||||
// Given a set of processes to launch with valid arguments
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
ExpectGracefulExit(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, ValidAndInvalidProcesses_LaunchSuccessesAndFailures)
|
||||
{
|
||||
const size_t invalidProcessGroup = 4;
|
||||
|
||||
// Given a mixture of processes to launch with valid and invalid arguments
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid % invalidProcessGroup == 0)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
InvalidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid % invalidProcessGroup == 0)
|
||||
{
|
||||
ExpectUnsuccessfulLaunch(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExpectGracefulExit(pid);
|
||||
}
|
||||
|
||||
DoNotExpectStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, ProcessTimeouts_InFlightProcessesTimeout)
|
||||
{
|
||||
const size_t timeoutProcessGroup = 4;
|
||||
|
||||
// Given a mixture of processes to launch with some processes sleeping indefinately
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid % timeoutProcessGroup == 0)
|
||||
{
|
||||
m_processInfos.emplace_back(pid, ValidProcessPath, ConstructTestProcessArgs(pid, LongSleep));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_processInfos.emplace_back(pid, ValidProcessPath, ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes with a process timeout value
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::chrono::milliseconds(100),
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid % timeoutProcessGroup == 0)
|
||||
{
|
||||
ExpectTimeoutProcess(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExpectExitCondition(pid);
|
||||
}
|
||||
|
||||
DoNotExpectStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(
|
||||
ProcessSchedulerTestFixtureWithParams, ProcessLaunchCallbackAbort_InFlightProcessesTerminatedAndQueuedProcessesUnlaunched)
|
||||
{
|
||||
const size_t processToAbort = 8;
|
||||
|
||||
// Given a set of processes to launch
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
|
||||
// Given a launch callback that will return the abort value for the process to abort
|
||||
const auto abortingLaunchCallback = [this, processToAbort](
|
||||
TestImpact::ProcessId pid,
|
||||
TestImpact::LaunchResult launchResult,
|
||||
AZStd::chrono::high_resolution_clock::time_point createTime)
|
||||
{
|
||||
m_processLaunchCallback(pid, launchResult, createTime);
|
||||
|
||||
if (pid == processToAbort)
|
||||
{
|
||||
return TestImpact::CallbackResult::Abort;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TestImpact::CallbackResult::Continue;
|
||||
}
|
||||
};
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
abortingLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid < processToAbort)
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
}
|
||||
else if (pid == processToAbort)
|
||||
{
|
||||
ExpectTerminatedProcess(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExpectUnlaunchedProcess(pid);
|
||||
}
|
||||
|
||||
DoNotExpectStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, ProcessExitCallbackAbort_InFlightProcessesTerminated)
|
||||
{
|
||||
const size_t processToAbort = 4;
|
||||
|
||||
// Given a set of processes to launch
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
|
||||
// Given an exit callback that will return the abort value for the process to abort
|
||||
const auto abortingExitCallback = [this, processToAbort](
|
||||
TestImpact::ProcessId pid,
|
||||
TestImpact::ExitCondition exitStatus,
|
||||
TestImpact::ReturnCode returnCode,
|
||||
TestImpact::StdContent&& std,
|
||||
AZStd::chrono::high_resolution_clock::time_point exitTime)
|
||||
{
|
||||
m_processExitCallback(pid, exitStatus, returnCode, std::move(std), exitTime);
|
||||
|
||||
if (pid == processToAbort)
|
||||
{
|
||||
return TestImpact::CallbackResult::Abort;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TestImpact::CallbackResult::Continue;
|
||||
}
|
||||
};
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
abortingExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid < processToAbort)
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
}
|
||||
else if (pid == processToAbort)
|
||||
{
|
||||
ExpectGracefulExit(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_processResults[pid].m_launchResult.has_value())
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExpectUnlaunchedProcess(pid);
|
||||
}
|
||||
}
|
||||
|
||||
DoNotExpectStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, SchedulerTimeout_QueuedAndInFlightProcessesTerminated)
|
||||
{
|
||||
const size_t processToTimeout = 0;
|
||||
|
||||
// Given a set of processes to launch where one process will sleep indefinately
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid == processToTimeout)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, LongSleep));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgs(pid, NoSleep));
|
||||
}
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes with a scheduler timeout value
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::chrono::milliseconds(100)
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
if (pid == processToTimeout)
|
||||
{
|
||||
ExpectTimeoutProcess(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_processResults[pid].m_launchResult.has_value())
|
||||
{
|
||||
ExpectSuccessfulLaunch(pid);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExpectUnlaunchedProcess(pid);
|
||||
}
|
||||
}
|
||||
|
||||
DoNotExpectStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, RedirectStdOut_StdOutputIsLargeTextString)
|
||||
{
|
||||
// Given a set of processes to launch
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgsLargeText(pid, NoSleep));
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
ExpectGracefulExit(pid);
|
||||
ExpectLargeStdOutput(pid);
|
||||
DoNotExpectStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(ProcessSchedulerTestFixtureWithParams, RedirectStdError_StdErrorIsLargeTextString)
|
||||
{
|
||||
// Given a set of processes to launch
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
m_processInfos.emplace_back(
|
||||
pid,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
ConstructTestProcessArgsLargeText(pid, NoSleep));
|
||||
}
|
||||
|
||||
// When the process scheduler launches the processes
|
||||
m_processScheduler = AZStd::make_unique<TestImpact::ProcessScheduler>(
|
||||
m_processInfos,
|
||||
m_processLaunchCallback,
|
||||
m_processExitCallback,
|
||||
m_numMaxConcurrentProcesses,
|
||||
AZStd::nullopt,
|
||||
AZStd::nullopt
|
||||
);
|
||||
|
||||
for (size_t pid = 0; pid < m_numProcessesToLaunch; pid++)
|
||||
{
|
||||
ExpectGracefulExit(pid);
|
||||
DoNotExpectStdOutput(pid);
|
||||
ExpectLargeStdError(pid);
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
SmallConcurrentProcesses,
|
||||
ProcessSchedulerTestFixtureWithParams,
|
||||
::testing::Combine(
|
||||
::testing::ValuesIn(SmallNumMaxConcurrentProcesses),
|
||||
::testing::ValuesIn(SmallNumProcessesToLaunch)
|
||||
));
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
LargeConcurrentProcesses,
|
||||
ProcessSchedulerTestFixtureWithParams,
|
||||
::testing::Combine(
|
||||
::testing::ValuesIn(LargeNumMaxConcurrentProcesses),
|
||||
::testing::ValuesIn(LargeNumProcessesToLaunch)
|
||||
));
|
||||
} // namespace UnitTest
|
||||
@@ -1,491 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Process/TestImpactProcess.h>
|
||||
#include <Process/TestImpactProcessLauncher.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/string/conversions.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class ProcessTestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
protected:
|
||||
void SetUp() override
|
||||
{
|
||||
UnitTest::AllocatorsTestFixture::SetUp();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (m_process && m_process->IsRunning())
|
||||
{
|
||||
m_process->Terminate(0);
|
||||
}
|
||||
|
||||
UnitTest::AllocatorsTestFixture::TearDown();
|
||||
}
|
||||
|
||||
AZStd::unique_ptr<TestImpact::Process> m_process;
|
||||
static constexpr const TestImpact::ProcessId m_id = 1;
|
||||
static constexpr const TestImpact::ReturnCode m_terminateErrorCode = 666;
|
||||
};
|
||||
|
||||
TEST_F(ProcessTestFixture, LaunchValidProcess_ProcessReturnsSuccessfully)
|
||||
{
|
||||
// Given a process launched with a valid binary
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process has exited
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect the process to no longer be running
|
||||
EXPECT_FALSE(m_process->IsRunning());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LaunchInvalidProcessInfo_ThrowsProcessException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given a process launched with an invalid binary
|
||||
TestImpact::ProcessInfo processInfo(m_id, "");
|
||||
|
||||
// Do not expect this code to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ProcessException& e)
|
||||
{
|
||||
// Except a process exception to be thrown
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LaunchInvalidBinary_ThrowsProcessException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given a process launched with an ivalid binary
|
||||
TestImpact::ProcessInfo processInfo(m_id, "#!#zz:/z/z/z.exe.z@");
|
||||
|
||||
// When the process is attempted launch
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// Do not expect this code to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::ProcessException& e)
|
||||
{
|
||||
// Except a process exception to be thrown
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, GetProcessInfo_ReturnsProcessInfo)
|
||||
{
|
||||
// Given a process launched with a valid binary and args
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath, args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process has exited
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect the retrieved process info to match to process info used to launch the process
|
||||
EXPECT_EQ(m_process->GetProcessInfo().GetId(), m_id);
|
||||
EXPECT_EQ(m_process->GetProcessInfo().GetProcessPath(), ValidProcessPath);
|
||||
EXPECT_EQ(m_process->GetProcessInfo().GetStartupArgs(), args);
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, GetReturnCodeAfterExit_ReturnsArg)
|
||||
{
|
||||
// Given a process launched with a valid binary and args
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath, args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process has exited
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect the process to no longer be running
|
||||
EXPECT_FALSE(m_process->IsRunning());
|
||||
|
||||
// Expect the return value to be the process id
|
||||
EXPECT_EQ(m_process->GetReturnCode(), m_id);
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, GetReturnCodeInFlight_ReturnsNullOpt)
|
||||
{
|
||||
// Given a process launched with a valid binary and args to sleep for 100 seconds
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, LongSleep);
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath, args);
|
||||
|
||||
// When the process is running
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// Expect the return value to be empty
|
||||
EXPECT_EQ(m_process->GetReturnCode(), AZStd::nullopt);
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, TerminateWithErrorCode_ReturnsErrorCode)
|
||||
{
|
||||
// Given a process launched with a valid binary and args to sleep for 100 seconds
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, LongSleep);
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath, args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process is terminated by the client with the specified error code
|
||||
m_process->Terminate(m_terminateErrorCode);
|
||||
|
||||
// Expect the return value to be the error code specified in the Terminate call
|
||||
EXPECT_EQ(m_process->GetReturnCode(), m_terminateErrorCode);
|
||||
|
||||
// Expect the process to no longer be running
|
||||
EXPECT_FALSE(m_process->IsRunning());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, CheckIsRunningWhilstRunning_ProcessIsRunning)
|
||||
{
|
||||
// Given a process launched with a valid binary and args to sleep for 100 seconds
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, LongSleep);
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath, args);
|
||||
|
||||
// When the process is running
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// Expect the process to be running
|
||||
EXPECT_TRUE(m_process->IsRunning());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, CheckIsRunningWhilstNotRunning_ReturnsFalse)
|
||||
{
|
||||
// Given a process launched with a valid binary
|
||||
TestImpact::ProcessInfo processInfo(m_id, ValidProcessPath);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process is terminated by the client
|
||||
m_process->Terminate(0);
|
||||
|
||||
// Expect the process to be running
|
||||
EXPECT_FALSE(m_process->IsRunning());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, RedirectStdOut_OutputIsKnownTestProcessOutputString)
|
||||
{
|
||||
// Given a process launched with a valid binary and standard output redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect stdoutput to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Do not expect stdouterr to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to match the known stdout of the child
|
||||
EXPECT_EQ(m_process->ConsumeStdOut(), KnownTestProcessOutputString(m_id));
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, RedirectStdErr_OutputIsKnownTestProcessOutputString)
|
||||
{
|
||||
// Given a process launched with a valid binary and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Do not expect stdoutput to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Expect stderror to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to match the known stdout of the child
|
||||
EXPECT_EQ(m_process->ConsumeStdErr(), KnownTestProcessErrorString(m_id));
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, RedirectStdOutAndTerminate_OutputIsEmpty)
|
||||
{
|
||||
// Given a process launched with a valid binary and standard output redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process is terminated
|
||||
m_process->Terminate(0);
|
||||
|
||||
// Expect stdoutput to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Do not expect stdouterr to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, RedirectStdErrAndTerminate_OutputIsEmpty)
|
||||
{
|
||||
// Given a process launched with a valid binary and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process is terminated
|
||||
m_process->Terminate(0);
|
||||
|
||||
// Do not expect stdoutput to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Expect stderror to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, RedirectStdOutAndStdErrorRouting_OutputsAreKnownTestProcessOutputStrings)
|
||||
{
|
||||
// Given a process launched with a valid binary and both standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect stdoutput to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Expect stderror to be rerouted to the parent
|
||||
EXPECT_TRUE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to match the known stdout and stderr of the child
|
||||
EXPECT_EQ(m_process->ConsumeStdOut(), KnownTestProcessOutputString(m_id));
|
||||
EXPECT_EQ(m_process->ConsumeStdErr(), KnownTestProcessErrorString(m_id));
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, NoStdOutOrStdErrRedirect_OutputIsEmpty)
|
||||
{
|
||||
// Given a process launched with a valid binary and both standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgs(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Do not expect stdoutput to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdOutput());
|
||||
|
||||
// Do not expect stdouterr to be rerouted to the parent
|
||||
EXPECT_FALSE(m_process->GetProcessInfo().ParentHasStdError());
|
||||
|
||||
// Expect the output to to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeNoRedirects_OutputsAreEmpty)
|
||||
{
|
||||
// Given a process outputting large text with no standard output and no standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect the output to to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeNoRedirectsAndTerminated_OutputsAreEmpty)
|
||||
{
|
||||
// Given a process outputting large text with no standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, LongSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
|
||||
// When the process is running
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// Expect the output to to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
|
||||
// When the process is terminated
|
||||
m_process->Terminate(0);
|
||||
|
||||
// Expect the output to to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeRedirectsAndReadWhilstRunning_OutputsAreEmpty)
|
||||
{
|
||||
// Given a process outputting large text with no standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, ShortSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::None,
|
||||
TestImpact::StdErrorRouting::None,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the outputs are read as the process is running
|
||||
while (m_process->IsRunning())
|
||||
{
|
||||
// Expect the outputs to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeRedirectsAndTerminated_OutputsAreEmpty)
|
||||
{
|
||||
// Given a process outputting large text with both standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, LongSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process is terminated
|
||||
m_process->Terminate(0);
|
||||
|
||||
// Expect the outputs to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeRedirectsAndBlockedUntilExit_OutputsAreLargeTextFileSize)
|
||||
{
|
||||
// Given a process outputting large text with both standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath,
|
||||
args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
// When the process exits
|
||||
m_process->BlockUntilExit();
|
||||
|
||||
// Expect the output lengths to be that of the large text output from the child process
|
||||
EXPECT_EQ(m_process->ConsumeStdOut().value().length(), LargeTextSize);
|
||||
EXPECT_EQ(m_process->ConsumeStdErr().value().length(), LargeTextSize);
|
||||
}
|
||||
|
||||
TEST_F(ProcessTestFixture, LargePipeRedirectsAndReadWhilstRunning_TotalOutputsAreLargeTextFileSize)
|
||||
{
|
||||
// Given a process outputting large text with both standard output and standard error redirected to parent
|
||||
const AZStd::string args = ConstructTestProcessArgsLargeText(m_id, NoSleep);
|
||||
TestImpact::ProcessInfo processInfo(
|
||||
m_id,
|
||||
TestImpact::StdOutputRouting::ToParent,
|
||||
TestImpact::StdErrorRouting::ToParent,
|
||||
ValidProcessPath, args);
|
||||
m_process = TestImpact::LaunchProcess(processInfo);
|
||||
|
||||
size_t stdOutBytes = 0;
|
||||
size_t stdErrBytes = 0;
|
||||
while (m_process->IsRunning())
|
||||
{
|
||||
// When the outputs are read as the process is running
|
||||
if (auto output = m_process->ConsumeStdOut(); output.has_value())
|
||||
{
|
||||
stdOutBytes += output.value().length();
|
||||
}
|
||||
|
||||
if (auto output = m_process->ConsumeStdErr(); output.has_value())
|
||||
{
|
||||
stdErrBytes += output.value().length();
|
||||
}
|
||||
}
|
||||
|
||||
// Expect the output lengths to be that of the large text output from the child process
|
||||
EXPECT_EQ(stdOutBytes, LargeTextSize);
|
||||
EXPECT_EQ(stdErrBytes, LargeTextSize);
|
||||
|
||||
// Expect the outputs to be empty
|
||||
EXPECT_FALSE(m_process->ConsumeStdOut().has_value());
|
||||
EXPECT_FALSE(m_process->ConsumeStdErr().has_value());
|
||||
}
|
||||
} // namespace UnitTest
|
||||
-352
@@ -1,352 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Target/TestImpactProductionTargetList.h>
|
||||
#include <Target/TestImpactTestTargetList.h>
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
namespace
|
||||
{
|
||||
AZStd::string GenerateBuildTargetName(size_t index)
|
||||
{
|
||||
return AZStd::string::format("Target%u", index);
|
||||
}
|
||||
|
||||
AZStd::string GenerateBuildTargetOutputName(size_t index)
|
||||
{
|
||||
return AZStd::string::format("Output%u", index);
|
||||
}
|
||||
|
||||
AZ::IO::Path GenerateBuildTargetPath(size_t index)
|
||||
{
|
||||
return AZStd::string::format("C:\\Repo\\Dir%u", index);
|
||||
}
|
||||
|
||||
AZStd::string GenerateTestTargetSuite(size_t index)
|
||||
{
|
||||
return AZStd::string::format("Suite%u", index);
|
||||
}
|
||||
|
||||
TestImpact::LaunchMethod GenerateLaunchMethod(size_t index)
|
||||
{
|
||||
return index % 2 == 0 ? TestImpact::LaunchMethod::StandAlone : TestImpact::LaunchMethod::TestRunner;
|
||||
}
|
||||
|
||||
AZStd::string GenerateStaticSourceFile(size_t index)
|
||||
{
|
||||
return AZStd::string::format("StaticSource%u", index);
|
||||
}
|
||||
|
||||
TestImpact::AutogenPairs GenerateAutogenSourceFiles(size_t index)
|
||||
{
|
||||
TestImpact::AutogenPairs autogen;
|
||||
autogen.m_input = AZStd::string::format("InputSource%u", index);
|
||||
autogen.m_outputs.push_back(AZStd::string::format("OutputSource%u", index));
|
||||
autogen.m_outputs.push_back(AZStd::string::format("OutputHeader%u", index));
|
||||
return autogen;
|
||||
}
|
||||
|
||||
TestImpact::TargetSources GenerateTargetSources(size_t index)
|
||||
{
|
||||
TestImpact::TargetSources sources;
|
||||
sources.m_staticSources.resize(index + 1);
|
||||
for (size_t i = 0; i < sources.m_staticSources.size(); i++)
|
||||
{
|
||||
sources.m_staticSources[i] = GenerateStaticSourceFile(i);
|
||||
}
|
||||
|
||||
// Only generate autogen sources for even-numbered indexes
|
||||
if (index % 2 == 0)
|
||||
{
|
||||
sources.m_autogenSources.resize(index + 1);
|
||||
for (size_t i = 0; i < sources.m_autogenSources.size(); i++)
|
||||
{
|
||||
sources.m_autogenSources[i] = GenerateAutogenSourceFiles(i);
|
||||
}
|
||||
}
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
||||
TestImpact::ProductionTargetDescriptor GenerateProductionTargetDescriptor(size_t index = 0)
|
||||
{
|
||||
return TestImpact::ProductionTargetDescriptor(
|
||||
{
|
||||
TestImpact::BuildMetaData
|
||||
{
|
||||
GenerateBuildTargetName(index), GenerateBuildTargetOutputName(index), GenerateBuildTargetPath(index)
|
||||
},
|
||||
GenerateTargetSources(index)
|
||||
});
|
||||
}
|
||||
|
||||
TestImpact::TestTargetDescriptor GenerateTestTargetDescriptor(size_t index = 0)
|
||||
{
|
||||
return TestImpact::TestTargetDescriptor(
|
||||
{
|
||||
TestImpact::BuildMetaData
|
||||
{
|
||||
GenerateBuildTargetName(index), GenerateBuildTargetOutputName(index), GenerateBuildTargetPath(index)
|
||||
},
|
||||
GenerateTargetSources(index)
|
||||
},
|
||||
TestImpact::TestTargetMeta
|
||||
{
|
||||
GenerateTestTargetSuite(index), GenerateLaunchMethod(index)
|
||||
});
|
||||
}
|
||||
} // namespace
|
||||
|
||||
template<typename Target>
|
||||
typename Target::Descriptor GenerateTargetDescriptor(size_t index = 0)
|
||||
{
|
||||
static_assert(
|
||||
AZStd::is_same_v<Target, TestImpact::ProductionTarget> || AZStd::is_same_v<Target, TestImpact::TestTarget>,
|
||||
"Unexpected target type, wants TestImpact::ProductionTarget or TestImpact::TestTarget");
|
||||
|
||||
if constexpr (AZStd::is_same_v<Target, TestImpact::ProductionTarget>)
|
||||
{
|
||||
return GenerateProductionTargetDescriptor(index);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GenerateTestTargetDescriptor(index);
|
||||
}
|
||||
}
|
||||
|
||||
void ValidateSources(const TestImpact::TargetSources& sources, size_t index = 0)
|
||||
{
|
||||
EXPECT_EQ(sources.m_staticSources.size(), index + 1);
|
||||
for (size_t i = 0; i < sources.m_staticSources.size(); i++)
|
||||
{
|
||||
EXPECT_EQ(sources.m_staticSources[i], GenerateStaticSourceFile(i));
|
||||
}
|
||||
|
||||
// Even numbered indexes have autogen sources
|
||||
if (index % 2 == 0)
|
||||
{
|
||||
EXPECT_EQ(sources.m_autogenSources.size(), index + 1);
|
||||
for (size_t i = 0; i < sources.m_autogenSources.size(); i++)
|
||||
{
|
||||
enum
|
||||
{
|
||||
OutputSource = 0,
|
||||
OutputHeader = 1
|
||||
};
|
||||
|
||||
const TestImpact::AutogenPairs expectedAutogenSources = GenerateAutogenSourceFiles(i);
|
||||
EXPECT_EQ(sources.m_autogenSources[i].m_input, expectedAutogenSources.m_input);
|
||||
EXPECT_EQ(sources.m_autogenSources[i].m_outputs[OutputSource], expectedAutogenSources.m_outputs[OutputSource]);
|
||||
EXPECT_EQ(sources.m_autogenSources[i].m_outputs[OutputHeader], expectedAutogenSources.m_outputs[OutputHeader]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EXPECT_TRUE(sources.m_autogenSources.empty());
|
||||
}
|
||||
}
|
||||
|
||||
void ValidateTarget(const TestImpact::ProductionTarget& target, size_t index = 0)
|
||||
{
|
||||
EXPECT_EQ(target.GetName(), GenerateBuildTargetName(index));
|
||||
EXPECT_EQ(target.GetOutputName(), GenerateBuildTargetOutputName(index));
|
||||
EXPECT_EQ(target.GetPath(), GenerateBuildTargetPath(index));
|
||||
EXPECT_EQ(target.GetType(), TestImpact::TargetType::Production);
|
||||
ValidateSources(target.GetSources(), index);
|
||||
}
|
||||
|
||||
void ValidateTarget(const TestImpact::TestTarget& target, size_t index = 0)
|
||||
{
|
||||
EXPECT_EQ(target.GetName(), GenerateBuildTargetName(index));
|
||||
EXPECT_EQ(target.GetOutputName(), GenerateBuildTargetOutputName(index));
|
||||
EXPECT_EQ(target.GetPath(), GenerateBuildTargetPath(index));
|
||||
EXPECT_EQ(target.GetType(), TestImpact::TargetType::Test);
|
||||
EXPECT_EQ(target.GetSuite(), GenerateTestTargetSuite(index));
|
||||
EXPECT_EQ(target.GetLaunchMethod(), GenerateLaunchMethod(index));
|
||||
ValidateSources(target.GetSources(), index);
|
||||
}
|
||||
|
||||
template<typename TargetList>
|
||||
class TargetListFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
public:
|
||||
using TargetListType = TargetList;
|
||||
using TargetType = typename TargetList::TargetType;
|
||||
|
||||
static constexpr size_t m_numTargets = 10;
|
||||
};
|
||||
|
||||
using TargetTypes = testing::Types<TestImpact::ProductionTargetList, TestImpact::TestTargetList>;
|
||||
TYPED_TEST_CASE(TargetListFixture, TargetTypes);
|
||||
|
||||
TYPED_TEST(TargetListFixture, CreateTarget_ExpectValidTarget)
|
||||
{
|
||||
// Given a target of the specified type
|
||||
TargetType target(GenerateTargetDescriptor<TargetType>());
|
||||
|
||||
// Expect the target to match the procedurally generated target descriptor
|
||||
ValidateTarget(target);
|
||||
}
|
||||
|
||||
TYPED_TEST(TargetListFixture, CreateEmptyTargetList_ExpectTargetException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an empty target list
|
||||
TargetListType targetList({});
|
||||
|
||||
// Do not expect the target list construction to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::TargetException& e)
|
||||
{
|
||||
// Expect a target exception to be thrown
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TYPED_TEST(TargetListFixture, CreateTargetListWithDuplicateDescriptor_ExpectTargetException)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given a set of target descriptors containing a single duplicate
|
||||
AZStd::vector<TargetType::Descriptor> descriptors;
|
||||
descriptors.reserve(m_numTargets);
|
||||
for (size_t i = 0; i < m_numTargets; i++)
|
||||
{
|
||||
// Wrap the last index round to repeat the first index
|
||||
descriptors.push_back(GenerateTargetDescriptor<TargetType>(i % (m_numTargets - 1)));
|
||||
}
|
||||
|
||||
// When constructing the target list containing the duplicate target descriptor
|
||||
TargetListType targetList(AZStd::move(descriptors));
|
||||
|
||||
// Do not expect the target list construction to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::TargetException& e)
|
||||
{
|
||||
// Expect a target exception to be thrown
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TYPED_TEST(TargetListFixture, CreateTargetListWithValidDescriptors_ExpectValidTargetList)
|
||||
{
|
||||
// Given a valid set of target descriptor
|
||||
AZStd::vector<TargetType::Descriptor> descriptors;
|
||||
descriptors.reserve(m_numTargets);
|
||||
for (size_t i = 0; i < m_numTargets; i++)
|
||||
{
|
||||
descriptors.push_back(GenerateTargetDescriptor<TargetType>(i));
|
||||
}
|
||||
|
||||
// When constructing the target list containing the valid target descriptors
|
||||
TargetListType targetList(AZStd::move(descriptors));
|
||||
|
||||
// Expect the number of targets in the list to match the number of target descriptors used to construct the list
|
||||
EXPECT_EQ(targetList.GetNumTargets(), m_numTargets);
|
||||
|
||||
for (size_t i = 0; i < targetList.GetNumTargets(); i++)
|
||||
{
|
||||
// Expect the target to match the procedurally generated target descriptor
|
||||
ValidateTarget(targetList.GetTargets()[i], i);
|
||||
|
||||
// Expect the target obtained by name to match the procedurally generated target descriptor
|
||||
auto target = targetList.GetTarget(GenerateBuildTargetName(i));
|
||||
EXPECT_TRUE(target);
|
||||
EXPECT_EQ(target->GetName(), GenerateBuildTargetName(i));
|
||||
}
|
||||
}
|
||||
|
||||
TYPED_TEST(TargetListFixture, FindNonExistantTargets_ExpectEmptyResults)
|
||||
{
|
||||
// Given a valid set of target descriptor
|
||||
AZStd::vector<TargetType::Descriptor> descriptors;
|
||||
descriptors.reserve(m_numTargets);
|
||||
for (size_t i = 0; i < m_numTargets; i++)
|
||||
{
|
||||
descriptors.push_back(GenerateTargetDescriptor<TargetType>(i));
|
||||
}
|
||||
|
||||
// When constructing the target list containing the valid target descriptors
|
||||
TargetListType targetList(AZStd::move(descriptors));
|
||||
|
||||
// Expect the number of targets in the list to match the number of target descriptors used to construct the list
|
||||
EXPECT_EQ(targetList.GetNumTargets(), m_numTargets);
|
||||
|
||||
for (size_t i = 0; i < targetList.GetNumTargets(); i++)
|
||||
{
|
||||
// When attempting to find a target that does not exist
|
||||
auto target = targetList.GetTarget(GenerateBuildTargetName(i + targetList.GetNumTargets()));
|
||||
|
||||
// Expect an empty result
|
||||
EXPECT_FALSE(target);
|
||||
}
|
||||
}
|
||||
|
||||
TYPED_TEST(TargetListFixture, FindNonExistantTargetsAndThrow_ExpectTargetExceptionss)
|
||||
{
|
||||
// Given a valid set of target descriptor
|
||||
AZStd::vector<TargetType::Descriptor> descriptors;
|
||||
descriptors.reserve(m_numTargets);
|
||||
for (size_t i = 0; i < m_numTargets; i++)
|
||||
{
|
||||
descriptors.push_back(GenerateTargetDescriptor<TargetType>(i));
|
||||
}
|
||||
|
||||
// When constructing the target list containing the valid target descriptors
|
||||
TargetListType targetList(AZStd::move(descriptors));
|
||||
|
||||
// Expect the number of targets in the list to match the number of target descriptors used to construct the list
|
||||
EXPECT_EQ(targetList.GetNumTargets(), m_numTargets);
|
||||
|
||||
for (size_t i = 0; i < targetList.GetNumTargets(); i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
// When attempting to find a target that does not exist
|
||||
targetList.GetTargetOrThrow(GenerateBuildTargetName(i + targetList.GetNumTargets()));
|
||||
|
||||
// Do not expect the target list construction to succeed
|
||||
FAIL();
|
||||
}
|
||||
catch ([[maybe_unused]] const TestImpact::TargetException& e)
|
||||
{
|
||||
// Expect a target exception to be thrown
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace UnitTest
|
||||
@@ -1,150 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
#include <TestImpactFramework/TestImpactException.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
constexpr const char* Message = "String Constructor";
|
||||
|
||||
TEST(ExceptionTest, DefaultConstructor_HasEmptyMessageString)
|
||||
{
|
||||
// Given an exception instantiated with the default constructor
|
||||
const TestImpact::Exception e;
|
||||
|
||||
// Expect the message to be an empty string
|
||||
EXPECT_STREQ(e.what(), "\0");
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, StringConstructor_HasSpecifiedMessageString)
|
||||
{
|
||||
// Given an exception instantiated with a string
|
||||
const AZStd::string msg(Message);
|
||||
const TestImpact::Exception e(msg);
|
||||
|
||||
// Expect the message to be the specified string
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, StringLiteralConstructor_HasSpecifiedMessageString)
|
||||
{
|
||||
// Given an exception instantiated with a string literal
|
||||
const TestImpact::Exception e(Message);
|
||||
|
||||
// Expect the message to be the specified string
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, InitializedWithLocalString_HasCopyOfLocalStringString)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an exception instantiated with a string in local scope
|
||||
throw(TestImpact::Exception(AZStd::string::format("%s", Message)));
|
||||
|
||||
// Do not expect this code to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch (const TestImpact::Exception& e)
|
||||
{
|
||||
// Expect the message to be the specified out-of-scope string
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, InitializedWithLocalStringLiteral_HasCopyOfLocalStringString)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an exception instantiated with a copy of the message string in local scope
|
||||
throw(TestImpact::Exception(AZStd::string::format("%s", Message).c_str()));
|
||||
|
||||
// Do not expect this code to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch (const TestImpact::Exception& e)
|
||||
{
|
||||
// Expect the message to be the specified out-of-scope string literal
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, EvalMacroFails_ExceptionTestThrown)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an exception instantiated with a string literal in local scope
|
||||
AZ_TestImpact_Eval(false, TestImpact::Exception, Message);
|
||||
|
||||
// Do not expect this code to be reachable
|
||||
FAIL();
|
||||
}
|
||||
catch (const TestImpact::Exception& e)
|
||||
{
|
||||
// Expect the message contain the specified string
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, EvalMacroSucceeds_ExceptionTestNotThrown)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an exception instantiated with a string literal in local scope
|
||||
AZ_TestImpact_Eval(true, TestImpact::Exception, Message);
|
||||
|
||||
// Expect this code to be reachable
|
||||
SUCCEED();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExceptionTest, Throw_ExceptionTestThrown)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Given an exception instantiated with a string literal in local scope
|
||||
throw(TestImpact::Exception(Message));
|
||||
}
|
||||
catch (const TestImpact::Exception& e)
|
||||
{
|
||||
// Expect the message contain the specified string
|
||||
EXPECT_STREQ(e.what(), Message);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Do not expect any other exceptions
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
} // namespace UnitTest
|
||||
@@ -1,159 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <TestImpactTestUtils.h>
|
||||
|
||||
#include <Test/Enumeration/TestImpactTestEnumeration.h>
|
||||
#include <Test/Run/TestImpactTestRun.h>
|
||||
|
||||
#include <AzCore/IO/SystemFile.h>
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
|
||||
template<typename Flags>
|
||||
constexpr bool IsFlagSet(Flags flags, Flags flag)
|
||||
{
|
||||
return TestImpact::Bitwise::IsFlagSet(flags, flag);
|
||||
}
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
// Named constants for array of targets lookup
|
||||
enum
|
||||
{
|
||||
TestTargetA,
|
||||
TestTargetB,
|
||||
TestTargetC,
|
||||
TestTargetD
|
||||
};
|
||||
|
||||
// Named constants for max concurrency values
|
||||
enum
|
||||
{
|
||||
OneConcurrentProcess = 1,
|
||||
FourConcurrentProcesses = 4
|
||||
};
|
||||
|
||||
// Validates that the specified job was executed and returned successfully
|
||||
template<typename Job>
|
||||
void ValidateJobExecutedSuccessfully(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::ExecutedWithSuccess);
|
||||
EXPECT_TRUE(job.GetDuration() > AZStd::chrono::milliseconds(0));
|
||||
EXPECT_TRUE(job.GetReturnCode().has_value());
|
||||
EXPECT_EQ(job.GetReturnCode(), 0);
|
||||
EXPECT_TRUE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates that the specified job has not been executed
|
||||
template<typename Job>
|
||||
void ValidateJobNotExecuted(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::NotExecuted);
|
||||
EXPECT_EQ(job.GetStartTime(), AZStd::chrono::high_resolution_clock::time_point());
|
||||
EXPECT_EQ(job.GetEndTime(), AZStd::chrono::high_resolution_clock::time_point());
|
||||
EXPECT_EQ(job.GetDuration(), AZStd::chrono::milliseconds(0));
|
||||
EXPECT_FALSE(job.GetReturnCode().has_value());
|
||||
EXPECT_FALSE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates that the specified job failed to execute
|
||||
template<typename Job>
|
||||
void ValidateJobFailedToExecute(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::FailedToExecute);
|
||||
EXPECT_EQ(job.GetStartTime(), AZStd::chrono::high_resolution_clock::time_point());
|
||||
EXPECT_EQ(job.GetEndTime(), AZStd::chrono::high_resolution_clock::time_point());
|
||||
EXPECT_EQ(job.GetDuration(), AZStd::chrono::milliseconds(0));
|
||||
EXPECT_FALSE(job.GetReturnCode().has_value());
|
||||
EXPECT_FALSE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates that the specified job executed but returned with error
|
||||
template<typename Job>
|
||||
void ValidateJobExecutedWithFailure(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::ExecutedWithFailure);
|
||||
EXPECT_TRUE(job.GetDuration() > AZStd::chrono::milliseconds(0));
|
||||
EXPECT_TRUE(job.GetReturnCode().has_value());
|
||||
EXPECT_GT(job.GetReturnCode().value(), 0);
|
||||
EXPECT_FALSE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates that the specified job was executed but was terminated by the job runner
|
||||
template<typename Job>
|
||||
void ValidateJobTimeout(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::Terminated);
|
||||
EXPECT_TRUE(job.GetDuration() > AZStd::chrono::milliseconds(0));
|
||||
EXPECT_TRUE(job.GetReturnCode().has_value());
|
||||
EXPECT_EQ(job.GetReturnCode().value(), TestImpact::ProcessTimeoutErrorCode);
|
||||
EXPECT_FALSE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates that the specified job executed but returned with error
|
||||
template<typename Job>
|
||||
void ValidateJobExecutedWithFailedTests(const Job& job)
|
||||
{
|
||||
EXPECT_EQ(job.GetResult(), TestImpact::JobResult::ExecutedWithFailure);
|
||||
EXPECT_TRUE(job.GetDuration() > AZStd::chrono::milliseconds(0));
|
||||
EXPECT_TRUE(job.GetReturnCode().has_value());
|
||||
EXPECT_GT(job.GetReturnCode().value(), 0);
|
||||
EXPECT_TRUE(job.GetPayload().has_value());
|
||||
}
|
||||
|
||||
// Validates whether a test run completed (passed/failed)
|
||||
template<typename Job>
|
||||
void ValidateTestRunCompleted(const Job& job, TestImpact::TestRunResult result)
|
||||
{
|
||||
if (result == TestImpact::TestRunResult::Passed)
|
||||
{
|
||||
ValidateJobExecutedSuccessfully(job);
|
||||
}
|
||||
else
|
||||
{
|
||||
ValidateJobExecutedWithFailedTests(job);
|
||||
}
|
||||
}
|
||||
|
||||
// Validates that the specified test run matches the expected output
|
||||
inline void ValidateTestTargetRun(const TestImpact::TestRun& actualResult, const TestImpact::TestRun& expectedResult)
|
||||
{
|
||||
EXPECT_TRUE(CheckTestRunsAreEqualIgnoreDurations(actualResult, expectedResult));
|
||||
EXPECT_EQ(actualResult.GetNumTestSuites(), CalculateNumTestSuites(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumTests(), CalculateNumTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumEnabledTests(), CalculateNumEnabledTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumDisabledTests(), CalculateNumDisabledTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_GT(actualResult.GetDuration(), AZStd::chrono::milliseconds{0});
|
||||
EXPECT_EQ(actualResult.GetNumPasses(), CalculateNumPassedTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumFailures(), CalculateNumFailedTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumRuns(), CalculateNumRunTests(expectedResult.GetTestSuites()));
|
||||
EXPECT_EQ(actualResult.GetNumNotRuns(), CalculateNumNotRunTests(expectedResult.GetTestSuites()));
|
||||
}
|
||||
|
||||
// Delete any existing data in the test run folder as not to pollute tests with data from previous test runs
|
||||
// Note: the file IO operations of this fixture means it cannot be sharded by the test sharder due to file race conditions
|
||||
inline void DeleteFiles(const AZStd::string& path, const AZStd::string& pattern)
|
||||
{
|
||||
AZ::IO::SystemFile::FindFiles(AZStd::string::format("%s/%s", path.c_str(), pattern.c_str()).c_str(), [&path](const char* file, bool isFile)
|
||||
{
|
||||
if (isFile)
|
||||
{
|
||||
AZ::IO::SystemFile::Delete(AZStd::string::format("%s/%s", path.c_str(), file).c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
};
|
||||
} // namespace UnitTest
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,220 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Artifact/Dynamic/TestImpactCoverage.h>
|
||||
#include <Artifact/Dynamic/TestImpactTestEnumerationSuite.h>
|
||||
#include <Artifact/Dynamic/TestImpactTestRunSuite.h>
|
||||
#include <Artifact/Static/TestImpactBuildTargetDescriptor.h>
|
||||
#include <Artifact/Static/TestImpactProductionTargetDescriptor.h>
|
||||
#include <Artifact/Static/TestImpactTestTargetDescriptor.h>
|
||||
#include <Artifact/Static/TestImpacttestTargetMeta.h>
|
||||
#include <Process/TestImpactProcess.h>
|
||||
#include <Test/Enumeration/TestImpactTestEnumeration.h>
|
||||
#include <Test/Run/TestImpactTestCoverage.h>
|
||||
#include <Test/Run/TestImpactTestRun.h>
|
||||
|
||||
#include <AzCore/std/optional.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
// Common parameters for process related tests
|
||||
inline constexpr const char* ValidProcessPath = LY_TEST_IMPACT_TEST_PROCESS_BIN;
|
||||
inline constexpr const char* InvalidProcessPath = "!!!@@@---???";
|
||||
inline constexpr const AZStd::chrono::milliseconds LongSleep = AZStd::chrono::minutes(60);
|
||||
inline constexpr const size_t LargeTextSize = 0xFFFF - 1; // 65,535 chars less the null terminator
|
||||
inline constexpr const AZStd::chrono::milliseconds ShortSleep = AZStd::chrono::milliseconds(500);
|
||||
inline constexpr const AZStd::chrono::milliseconds NoSleep = AZStd::chrono::milliseconds(0);
|
||||
|
||||
// Writes the specified text string to the specified file
|
||||
void WriteTextToFile(const AZStd::string& text, const AZ::IO::Path& path);
|
||||
|
||||
// Construct the arguments for launcing the test process
|
||||
AZStd::string ConstructTestProcessArgs(TestImpact::ProcessId pid, AZStd::chrono::milliseconds sleepTime);
|
||||
|
||||
// Construct the arguments for launcing the test process with large text dump
|
||||
AZStd::string ConstructTestProcessArgsLargeText(TestImpact::ProcessId pid, AZStd::chrono::milliseconds sleepTime);
|
||||
|
||||
// Known standard output string of the test process
|
||||
AZStd::string KnownTestProcessOutputString(TestImpact::ProcessId pid);
|
||||
|
||||
// Known standard error string of the test process
|
||||
AZStd::string KnownTestProcessErrorString(TestImpact::ProcessId pid);
|
||||
|
||||
// Generate a gtest typed test fixture name string based on the specified name and type
|
||||
AZStd::string GenerateTypedFixtureName(const AZStd::string& name, size_t typeNum);
|
||||
|
||||
// Generate a gtest parameterized test fixture name string based on the specified name and permutation number
|
||||
AZStd::string GenerateParameterizedFixtureName(
|
||||
const AZStd::string& name,
|
||||
const AZStd::optional<const AZStd::string>& prefix = AZStd::nullopt);
|
||||
|
||||
// Generate a gtest parameterized test name string based on the specified name and permutation number
|
||||
AZStd::string GenerateParameterizedTestName(const AZStd::string& name, size_t testNum);
|
||||
|
||||
// Generate a JSON string of array elements from the specified vector
|
||||
AZStd::string StringVectorToJSONElements(const AZStd::vector<AZStd::string> strings);
|
||||
|
||||
// Generate a build target descriptor string in JSON format from the specified build target description
|
||||
AZStd::string GenerateBuildTargetDescriptorString(
|
||||
const AZStd::string& name,
|
||||
const AZStd::string& outputName,
|
||||
const AZStd::string& path,
|
||||
const AZStd::vector<AZStd::string>& staticSources,
|
||||
const AZStd::vector<AZStd::string>& autogenInputs,
|
||||
const AZStd::vector<AZStd::string>& autogenOutputs);
|
||||
|
||||
// Generate a build target descriptor from the specified build target description
|
||||
// Note: no check for correctness of arguments is peformed
|
||||
TestImpact::BuildTargetDescriptor GenerateBuildTargetDescriptor(
|
||||
const AZStd::string& name,
|
||||
const AZStd::string& outputName,
|
||||
const AZStd::string& path,
|
||||
const AZStd::vector<AZStd::string>& staticSources,
|
||||
const TestImpact::AutogenSources& autogenSources);
|
||||
|
||||
// Procedurally generate a parameterized test suite based on the supplied parameters
|
||||
TestImpact::TestEnumerationSuite GenerateParamterizedSuite(
|
||||
const AZStd::pair<AZStd::string, bool>& fixture,
|
||||
const AZStd::optional<AZStd::string>& permutation,
|
||||
const AZStd::vector<AZStd::pair<AZStd::string, bool>> tests,
|
||||
size_t permutationCount);
|
||||
|
||||
// Procedurally generate a typed test suite based on the supplied parameters
|
||||
void GenerateTypedSuite(
|
||||
const AZStd::pair<AZStd::string, bool>& fixture,
|
||||
const AZStd::vector<AZStd::pair<AZStd::string, bool>> tests,
|
||||
size_t permutationCount,
|
||||
AZStd::vector<TestImpact::TestEnumerationSuite>& parentSuiteList);
|
||||
|
||||
// Helper functions for calculating test suite meta-data
|
||||
size_t CalculateNumPassedTests(const AZStd::vector<TestImpact::TestRunSuite>& suites);
|
||||
size_t CalculateNumFailedTests(const AZStd::vector<TestImpact::TestRunSuite>& suites);
|
||||
size_t CalculateNumRunTests(const AZStd::vector<TestImpact::TestRunSuite>& suites);
|
||||
size_t CalculateNumNotRunTests(const AZStd::vector<TestImpact::TestRunSuite>& suites);
|
||||
|
||||
template<typename TestSuite>
|
||||
size_t CalculateNumTestSuites(const AZStd::vector<TestSuite>& suites)
|
||||
{
|
||||
return suites.size();
|
||||
}
|
||||
|
||||
template<typename TestSuite>
|
||||
size_t CalculateNumTests(const AZStd::vector<TestSuite>& suites)
|
||||
{
|
||||
size_t numTests = 0;
|
||||
for (const auto& suite : suites)
|
||||
{
|
||||
numTests += suite.m_tests.size();
|
||||
}
|
||||
|
||||
return numTests;
|
||||
}
|
||||
|
||||
template<typename TestSuite>
|
||||
size_t CalculateNumEnabledTests(const AZStd::vector<TestSuite>& suites)
|
||||
{
|
||||
size_t numEnabledTests = 0;
|
||||
for (const auto& suite : suites)
|
||||
{
|
||||
if (!suite.m_enabled)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const auto& test : suite.m_tests)
|
||||
{
|
||||
if (test.m_enabled)
|
||||
{
|
||||
numEnabledTests++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return numEnabledTests;
|
||||
}
|
||||
|
||||
template<typename TestSuite>
|
||||
size_t CalculateNumDisabledTests(const AZStd::vector<TestSuite>& suites)
|
||||
{
|
||||
size_t numDisabledTests = 0;
|
||||
for (const auto& suite : suites)
|
||||
{
|
||||
if (!suite.m_enabled)
|
||||
{
|
||||
numDisabledTests += suite.m_tests.size();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const auto& test : suite.m_tests)
|
||||
{
|
||||
if (!test.m_enabled)
|
||||
{
|
||||
numDisabledTests++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return numDisabledTests;
|
||||
}
|
||||
|
||||
// Test enumeration suite representation of the test targets used for testing
|
||||
AZStd::vector<TestImpact::TestEnumerationSuite> GetTestTargetATestEnumerationSuites();
|
||||
AZStd::vector<TestImpact::TestEnumerationSuite> GetTestTargetBTestEnumerationSuites();
|
||||
AZStd::vector<TestImpact::TestEnumerationSuite> GetTestTargetCTestEnumerationSuites();
|
||||
AZStd::vector<TestImpact::TestEnumerationSuite> GetTestTargetDTestEnumerationSuites();
|
||||
|
||||
// Test run suite representation of the test targets used for testing
|
||||
AZStd::vector<TestImpact::TestRunSuite> GetTestTargetATestRunSuites();
|
||||
AZStd::vector<TestImpact::TestRunSuite> GetTestTargetBTestRunSuites();
|
||||
AZStd::vector<TestImpact::TestRunSuite> GetTestTargetCTestRunSuites();
|
||||
AZStd::vector<TestImpact::TestRunSuite> GetTestTargetDTestRunSuites();
|
||||
|
||||
// Line coverage representation of the test targets used for testing
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetALineModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetBLineModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetCLineModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetDLineModuleCoverages();
|
||||
|
||||
// Source coverage representation of the test targets used for testing
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetASourceModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetBSourceModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetCSourceModuleCoverages();
|
||||
AZStd::vector<TestImpact::ModuleCoverage> GetTestTargetDSourceModuleCoverages();
|
||||
|
||||
// Helper comparisons for test validation (could potentially be moved to production source in the future)
|
||||
bool operator==(const TestImpact::TestEnumerationCase& lhs, const TestImpact::TestEnumerationCase& rhs);
|
||||
bool operator==(const TestImpact::TestEnumerationSuite& lhs, const TestImpact::TestEnumerationSuite& rhs);
|
||||
bool operator==(const AZStd::vector<TestImpact::TestEnumerationSuite>& lhs, const AZStd::vector<TestImpact::TestEnumerationSuite>& rhs);
|
||||
bool operator==(const TestImpact::TestEnumeration& lhs, const TestImpact::TestEnumeration& rhs);
|
||||
|
||||
bool operator==(const TestImpact::TestRunCase& lhs, const TestImpact::TestRunCase& rhs);
|
||||
bool operator==(const TestImpact::TestRunSuite& lhs, const TestImpact::TestRunSuite& rhs);
|
||||
bool operator==(const AZStd::vector<TestImpact::TestRunSuite>& lhs, const AZStd::vector<TestImpact::TestRunSuite>& rhs);
|
||||
bool operator==(const TestImpact::TestRun& lhs, const TestImpact::TestRun& rhs);
|
||||
bool CheckTestRunsAreEqualIgnoreDurations(const TestImpact::TestRun& lhs, const TestImpact::TestRun& rhs);
|
||||
|
||||
bool operator==(const TestImpact::BuildMetaData& lhs, const TestImpact::BuildMetaData& rhs);
|
||||
bool operator==(const TestImpact::TargetSources& lhs, const TestImpact::TargetSources& rhs);
|
||||
bool operator==(const TestImpact::BuildTargetDescriptor& lhs, const TestImpact::BuildTargetDescriptor& rhs);
|
||||
bool operator==(const TestImpact::TestTargetMeta& lhs, const TestImpact::TestTargetMeta& rhs);
|
||||
bool operator==(const TestImpact::ProductionTargetDescriptor& lhs, const TestImpact::ProductionTargetDescriptor& rhs);
|
||||
bool operator==(const TestImpact::TestTargetDescriptor& lhs, const TestImpact::TestTargetDescriptor& rhs);
|
||||
|
||||
bool operator==(const TestImpact::LineCoverage& lhs, const TestImpact::LineCoverage& rhs);
|
||||
bool operator==(const TestImpact::SourceCoverage& lhs, const TestImpact::SourceCoverage& rhs);
|
||||
bool operator==(const TestImpact::ModuleCoverage& lhs, const TestImpact::ModuleCoverage& rhs);
|
||||
bool operator==(const AZStd::vector<TestImpact::ModuleCoverage>& lhs, const AZStd::vector<TestImpact::ModuleCoverage>& rhs);
|
||||
bool operator==(const TestImpact::TestCoverage& lhs, const TestImpact::TestCoverage& rhs);
|
||||
} // namespace UnitTest
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
add_subdirectory(Code)
|
||||
@@ -1,24 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
ly_add_target(
|
||||
NAME TestImpact.TestProcess.Console EXECUTABLE
|
||||
NAMESPACE AZ
|
||||
FILES_CMAKE
|
||||
testimpactframework_testprocess_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Source
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
)
|
||||
-93
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "TestImpactTestProcess.h"
|
||||
#include "TestImpactTestProcessLargeText.h"
|
||||
|
||||
#include <AzCore/Memory/OSAllocator.h>
|
||||
#include <AzCore/Settings/CommandLine.h>
|
||||
#include <AzCore/std/chrono/chrono.h>
|
||||
#include <AzCore/std/containers/vector.h>
|
||||
#include <AzCore/std/parallel/thread.h>
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzCore/std/string/conversions.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace TestImpact
|
||||
{
|
||||
TestProcess::TestProcess(int argc, char* argv[])
|
||||
{
|
||||
StartupEnvironment();
|
||||
ParseArgs(argc, argv);
|
||||
}
|
||||
|
||||
TestProcess::~TestProcess()
|
||||
{
|
||||
TeardownEnvironment();
|
||||
}
|
||||
|
||||
void TestProcess::StartupEnvironment()
|
||||
{
|
||||
AZ::AllocatorInstance<AZ::SystemAllocator>::Create();
|
||||
}
|
||||
|
||||
void TestProcess::TeardownEnvironment()
|
||||
{
|
||||
AZ::AllocatorInstance<AZ::SystemAllocator>::Destroy();
|
||||
}
|
||||
|
||||
void TestProcess::ParseArgs(int argc, char* argv[])
|
||||
{
|
||||
const AZStd::string idArg = "id";
|
||||
const AZStd::string sleepArg = "sleep";
|
||||
const AZStd::string largeArg = "large";
|
||||
|
||||
AZ::CommandLine commandLine;
|
||||
commandLine.Parse(argc, argv);
|
||||
|
||||
m_id = AZStd::stoi(commandLine.GetSwitchValue(idArg, 0));
|
||||
m_sleep = AZStd::stoi(commandLine.GetSwitchValue(sleepArg, 0));
|
||||
|
||||
m_dumpLargeText = false;
|
||||
for (auto i = 0; i < commandLine.GetNumMiscValues(); i++)
|
||||
{
|
||||
const auto& miscValue = commandLine.GetMiscValue(i);
|
||||
if (miscValue == largeArg)
|
||||
{
|
||||
m_dumpLargeText = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int TestProcess::MainFunc()
|
||||
{
|
||||
if (m_dumpLargeText)
|
||||
{
|
||||
// Dump the large text blob to stdout and stderr
|
||||
std::cout << LongText;
|
||||
std::cerr << LongText;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Dump the short known output string with id appended to stdout and stderr
|
||||
std::cout << "TestProcessMainStdOut" << m_id;
|
||||
std::cerr << "TestProcessMainStdErr" << m_id;
|
||||
}
|
||||
|
||||
AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(m_sleep));
|
||||
|
||||
return m_id;
|
||||
}
|
||||
} // namespace TestImpact
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzFramework/Application/Application.h>
|
||||
|
||||
namespace TestImpact
|
||||
{
|
||||
class TestProcess
|
||||
{
|
||||
public:
|
||||
TestProcess(int argc, char* argv[]);
|
||||
~TestProcess();
|
||||
|
||||
int MainFunc();
|
||||
|
||||
private:
|
||||
void StartupEnvironment();
|
||||
void TeardownEnvironment();
|
||||
void ParseArgs(int argc, char* argv[]);
|
||||
|
||||
int m_id;
|
||||
int m_sleep;
|
||||
bool m_dumpLargeText = false;
|
||||
};
|
||||
|
||||
} // namespace TestImpact
|
||||
-531
@@ -1,531 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "TestImpactTestProcessLargeText.h"
|
||||
|
||||
namespace TestImpact
|
||||
{
|
||||
// Long text blob measuring 65,535 in length (inc. null terminator)
|
||||
const char* const LongText =
|
||||
"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";
|
||||
} // namespace TestImpact
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace TestImpact
|
||||
{
|
||||
// Large text blob in the form of a string literal so the app does not require the Az FileIO and Application environment
|
||||
extern const char* const LongText;
|
||||
} // namespace TestImpact
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "TestImpactTestProcess.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
TestImpact::TestProcess process(argc, argv);
|
||||
return process.MainFunc();
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Source/TestImpactTestProcessMain.cpp
|
||||
Source/TestImpactTestProcess.cpp
|
||||
Source/TestImpactTestProcess.h
|
||||
Source/TestImpactTestProcessLargeText.cpp
|
||||
Source/TestImpactTestProcessLargeText.h
|
||||
)
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
add_subdirectory(Code)
|
||||
@@ -1,28 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
ly_add_target(
|
||||
NAME TestImpact.TestTargetA.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE AZ
|
||||
FILES_CMAKE
|
||||
testimpactframework_testtargeta_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzTestShared
|
||||
AZ::AzTest
|
||||
)
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class TestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
TEST(TestCase, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test4_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test5_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test6_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test7_WillFail)
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
} // namespace UnitTest
|
||||
|
||||
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Tests/TestImpactTestTargetA.cpp
|
||||
)
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
add_subdirectory(Code)
|
||||
@@ -1,29 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
ly_add_target(
|
||||
NAME TestImpact.TestTargetB.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE AZ
|
||||
FILES_CMAKE
|
||||
testimpactframework_testtargetb_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzTestShared
|
||||
AZ::AzTest
|
||||
)
|
||||
-78
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class TestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
class TestFixtureWithParams
|
||||
: public AllocatorsTestFixture
|
||||
, public ::testing::WithParamInterface<AZStd::tuple<int, char, float>>
|
||||
{
|
||||
};
|
||||
|
||||
TEST(TestCase, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(TestFixtureWithParams, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(TestFixtureWithParams, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
PermutationA,
|
||||
TestFixtureWithParams,
|
||||
::testing::Combine(
|
||||
::testing::Values(1, 2, 4),
|
||||
::testing::Values(3, 5, 7),
|
||||
::testing::Values(-0.0f, 0.0f, 1.0f)
|
||||
));
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
,
|
||||
TestFixtureWithParams,
|
||||
::testing::Combine(
|
||||
::testing::Values(8, 16, 32),
|
||||
::testing::Values(9, 13, 17),
|
||||
::testing::Values(-10.0f, 0.05f, 10.0f)
|
||||
));
|
||||
} // namespace UnitTest
|
||||
|
||||
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Tests/TestImpactTestTargetB.cpp
|
||||
)
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
add_subdirectory(Code)
|
||||
@@ -1,29 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
ly_add_target(
|
||||
NAME TestImpact.TestTargetC.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE AZ
|
||||
FILES_CMAKE
|
||||
testimpactframework_testtargetc_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzTestShared
|
||||
AZ::AzTest
|
||||
)
|
||||
-63
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class TestFixture
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class TestFixtureWithTypes
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
using TestTypes = testing::Types<int, float, double, char>;
|
||||
TYPED_TEST_CASE(TestFixtureWithTypes, TestTypes);
|
||||
|
||||
TEST_F(TestFixture, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes, Test4_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
} // namespace UnitTest
|
||||
|
||||
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Tests/TestImpactTestTargetC.cpp
|
||||
)
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
add_subdirectory(Code)
|
||||
@@ -1,29 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
ly_add_target(
|
||||
NAME TestImpact.TestTargetD.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE AZ
|
||||
FILES_CMAKE
|
||||
testimpactframework_testtargetd_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzTestShared
|
||||
AZ::AzTest
|
||||
)
|
||||
-188
@@ -1,188 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/std/tuple.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
class TestFixture1
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
class DISABLED_TestFixture2
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class TestFixtureWithTypes1
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class DISABLED_TestFixtureWithTypes2
|
||||
: public AllocatorsTestFixture
|
||||
{
|
||||
};
|
||||
|
||||
class TestFixtureWithParams1
|
||||
: public AllocatorsTestFixture
|
||||
, public ::testing::WithParamInterface<AZStd::tuple<int, char, float>>
|
||||
{
|
||||
};
|
||||
|
||||
class DISABLED_TestFixtureWithParams2
|
||||
: public AllocatorsTestFixture
|
||||
, public ::testing::WithParamInterface<AZStd::tuple<int, char, float>>
|
||||
{
|
||||
};
|
||||
|
||||
using TestTypes = testing::Types<int, float, double, char>;
|
||||
TYPED_TEST_CASE(TestFixtureWithTypes1, TestTypes);
|
||||
TYPED_TEST_CASE(DISABLED_TestFixtureWithTypes2, TestTypes);
|
||||
|
||||
TEST(TestCase, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, DISABLED_Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test4_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST(TestCase, Test5_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture1, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(TestFixture1, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestFixture2, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestFixture2, Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(TestFixtureWithParams1, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(TestFixtureWithParams1, DISABLED_Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(DISABLED_TestFixtureWithParams2, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TEST_P(DISABLED_TestFixtureWithParams2, DISABLED_Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
PermutationA,
|
||||
TestFixtureWithParams1,
|
||||
::testing::Combine(
|
||||
::testing::Values(1, 2, 4),
|
||||
::testing::Values(3, 5, 7),
|
||||
::testing::Values(-0.0f, 0.0f, 1.0f)
|
||||
));
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
,
|
||||
TestFixtureWithParams1,
|
||||
::testing::Combine(
|
||||
::testing::Values(8, 16, 32),
|
||||
::testing::Values(9, 13, 17),
|
||||
::testing::Values(-10.0f, 0.05f, 10.0f)
|
||||
));
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
PermutationA,
|
||||
DISABLED_TestFixtureWithParams2,
|
||||
::testing::Combine(
|
||||
::testing::Values(1, 2, 4),
|
||||
::testing::Values(3, 5, 7),
|
||||
::testing::Values(-0.0f, 0.0f, 1.0f)
|
||||
));
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
,
|
||||
DISABLED_TestFixtureWithParams2,
|
||||
::testing::Combine(
|
||||
::testing::Values(8, 16, 32),
|
||||
::testing::Values(9, 13, 17),
|
||||
::testing::Values(-10.0f, 0.05f, 10.0f)
|
||||
));
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes1, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes1, DISABLED_Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(TestFixtureWithTypes1, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(DISABLED_TestFixtureWithTypes2, Test1_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(DISABLED_TestFixtureWithTypes2, DISABLED_Test2_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
TYPED_TEST(DISABLED_TestFixtureWithTypes2, Test3_WillPass)
|
||||
{
|
||||
SUCCEED();
|
||||
}
|
||||
} // namespace UnitTest
|
||||
|
||||
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Tests/TestImpactTestTargetD.cpp
|
||||
)
|
||||
Reference in New Issue
Block a user