Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions GoogleTestRunner/GoogleTestDiscoverer.fs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ module DiscovererUtils =
let parseSingleTest (currentSuite, result) (currentLine:string) =
let currentLine = currentLine.Trim([|'.'; '\n'; '\r'|])
if currentLine.StartsWith(" ") then
currentSuite, (currentSuite, currentLine.Substring(2)) :: result
let caseName = currentLine.Split([|' '|], StringSplitOptions.RemoveEmptyEntries).[0]
currentSuite, (currentSuite, caseName) :: result
else
let stripGtest170TypeParameter =
let split = currentLine.Split([|". # TypeParam"|], StringSplitOptions.RemoveEmptyEntries)
Expand All @@ -33,7 +34,11 @@ module DiscovererUtils =
snd (tests |> List.fold parseSingleTest ("", List.empty)) |> Array.ofList

/// Gets the GoogleTest function name format!
let googleTestCombinedName (testSuite, testMethod) = sprintf "%s_%s_Test%s" testSuite testMethod Constants.gtestTestBodySignature
let googleTestCombinedName (testSuite: string, testMethod: string) =
let testSuiteName = testSuite.Split([|'/'|], StringSplitOptions.RemoveEmptyEntries) :> seq<string> |> Seq.last
let testMethodName = testMethod.Split([|'/'|], StringSplitOptions.RemoveEmptyEntries).[0]
sprintf "%s_%s_Test%s" testSuiteName testMethodName Constants.gtestTestBodySignature

let getSourceFileLocations executable logger (testcases:(string * string) []) =
let symbols = testcases |> Array.Parallel.map googleTestCombinedName
let symbolFilterString = sprintf "*%s" Constants.gtestTestBodySignature
Expand All @@ -49,12 +54,17 @@ module DiscovererUtils =
match symbols |> Array.tryFind(fun ((f:string), (a, b)) -> f.Contains(cn)) with
| None -> sprintf "Couldn't locate %s" cn, -12
| Some(info) -> snd info
TestCase(dn,
let category = testSuite.Split([|'/'|], StringSplitOptions.RemoveEmptyEntries) :> seq<string> |> Seq.last
let testCase =
TestCase(
dn,
Uri(Constants.identifierUri),
executable,
DisplayName = dn,
CodeFilePath = fst sourceInfo,
LineNumber = snd sourceInfo)
testCase.Traits.Add(Trait("Category", category))
testCase

let getTestsFromExecutable (logger:IMessageLogger) executable =
let gtestTestList = ProcessUtil.getOutputOfCommand(String.Empty, executable, Constants.gtestListTests, true)
Expand Down
24 changes: 13 additions & 11 deletions GoogleTestRunnerTests/GoogleTestDiscovererTest.fs
Original file line number Diff line number Diff line change
Expand Up @@ -115,17 +115,19 @@ type ``GoogleTestDiscoverer`` () =
[<TestMethod>] member x.``parses test case list from googletest 1.7.0 parameterized output`` () =
let result = DiscovererUtils.parseTestCases (gtest170ParameterizedMethods.Split([|'\n'|]) |> List.ofArray)
result.Length |> should equal 27
result.[0] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/2 # GetParam() = 100")
result.[1] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/1 # GetParam() = 0")
result.[2] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/0 # GetParam() = -100")
result.[3] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/2 # GetParam() = 100")
result.[4] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/1 # GetParam() = 0")
result.[5] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/0 # GetParam() = -100")
result.[6] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/2 # GetParam() = 100")
result.[7] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/1 # GetParam() = 0")
result.[8] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/0 # GetParam() = -100")
result.[9] |> should equal ("ParameterizedTestsTest1/AllEnabledTest", "TestInstance/17 # GetParam() = (true, 200, 100)")
result.[10] |> should equal ("ParameterizedTestsTest1/AllEnabledTest", "TestInstance/16 # GetParam() = (true, 200, 0)")
result.[0] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/2")
result.[1] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/1")
result.[2] |> should equal ("ParameterizedTestsTest4/DISABLED_ClassDisabledTest", "TestInstance/0")
result.[3] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/2")
result.[4] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/1")
result.[5] |> should equal ("ParameterizedTestsTest3/NameDisabledTest", "DISABLED_TestInstance/0")
result.[6] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/2")
result.[7] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/1")
result.[8] |> should equal ("DISABLED_ParameterizedTestsTest2/InstantiateDisabledTest", "TestInstance/0")
result.[9] |> should equal ("ParameterizedTestsTest1/AllEnabledTest", "TestInstance/17")
result.[10] |> should equal ("ParameterizedTestsTest1/AllEnabledTest", "TestInstance/16")



[<TestMethod>] member x.``parses test case list from googletest 1.7.0 output`` () =
let result = DiscovererUtils.parseTestCases (gtest170TypedMethods.Split([|'\n'|]) |> List.ofArray)
Expand Down