From 8f977a5c92f53e4ab17d08889857f882467a1e47 Mon Sep 17 00:00:00 2001 From: Evgeniy Shcherbina Date: Thu, 30 Dec 2021 11:25:41 +0300 Subject: GoogleTest: Generalize test samples Replaced brittle (and irrelevant to the tests) parts of the sample outputs with generic regexps to ease making new test cases. --- .../GoogleTest/GoogleTest-skip-test-stdout.txt | 6 +- .../GoogleTest/GoogleTest-test1-stdout.txt | 104 ++++++++++----------- .../GoogleTest/GoogleTest-test2-stdout.txt | 104 ++++++++++----------- .../GoogleTest/GoogleTest-test3-stdout.txt | 38 ++++---- .../GoogleTest/GoogleTest-test4-stdout.txt | 18 ++-- 5 files changed, 135 insertions(+), 135 deletions(-) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt index 58b2453..8d7527c 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt @@ -1,10 +1,10 @@ Test project .* - Start 64: skip_test\.test1 -1/1 Test #64: skip_test\.test1 \.+\*\*\*Skipped +[0-9.]+ sec + *Start +[0-9]+: skip_test\.test1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: skip_test\.test1 \.+\*\*\*Skipped +[0-9.]+ sec 100% tests passed, 0 tests failed out of 1 Total Test time \(real\) = +[0-9.]+ sec The following tests did not run: -.*64 - skip_test\.test1 \(Skipped\) +[ 0-9]+- skip_test\.test1 \(Skipped\) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt index bf98a66..acff3bc 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt @@ -1,58 +1,58 @@ Test project .* - Start 1: TEST:basic\.case_foo!1 - 1/24 Test #1: TEST:basic\.case_foo!1 \.+ +Passed +[0-9.]+ sec - Start 2: TEST:basic\.case_bar!1 - 2/24 Test #2: TEST:basic\.case_bar!1 \.+ +Passed +[0-9.]+ sec - Start 3: TEST:basic\.disabled_case!1 - 3/24 Test #3: TEST:basic\.disabled_case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 4: TEST:basic\.DISABLEDnot_really_case!1 - 4/24 Test #4: TEST:basic\.DISABLEDnot_really_case!1 \.+ +Passed +[0-9.]+ sec - Start 5: TEST:ns\.basic\.case_foo!1 - 5/24 Test #5: TEST:ns\.basic\.case_foo!1 \.+ +Passed +[0-9.]+ sec - Start 6: TEST:ns\.basic\.case_bar!1 - 6/24 Test #6: TEST:ns\.basic\.case_bar!1 \.+ +Passed +[0-9.]+ sec - Start 7: TEST:ns\.basic\.disabled_case!1 - 7/24 Test #7: TEST:ns\.basic\.disabled_case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 8: TEST:ns\.basic\.DISABLEDnot_really_case!1 - 8/24 Test #8: TEST:ns\.basic\.DISABLEDnot_really_case!1 \.+ +Passed +[0-9.]+ sec - Start 9: TEST:disabled\.case!1 - 9/24 Test #9: TEST:disabled\.case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 10: TEST:DISABLEDnotreally\.case!1 -10/24 Test #10: TEST:DISABLEDnotreally\.case!1 \.+ +Passed +[0-9.]+ sec - Start 11: TEST:typed/short\.case!1 -11/24 Test #11: TEST:typed/short\.case!1 \.+ +Passed +[0-9.]+ sec - Start 12: TEST:typed/float\.case!1 -12/24 Test #12: TEST:typed/float\.case!1 \.+ +Passed +[0-9.]+ sec - Start 13: TEST:ns\.typed/short\.case!1 -13/24 Test #13: TEST:ns\.typed/short\.case!1 \.+ +Passed +[0-9.]+ sec - Start 14: TEST:ns\.typed/float\.case!1 -14/24 Test #14: TEST:ns\.typed/float\.case!1 \.+ +Passed +[0-9.]+ sec - Start 15: TEST:value/test\.case/1!1 -15/24 Test #15: TEST:value/test\.case/1!1 \.+ +Passed +[0-9.]+ sec - Start 16: TEST:value/test\.case/"foo"!1 -16/24 Test #16: TEST:value/test\.case/"foo"!1 \.+ +Passed +[0-9.]+ sec - Start 17: TEST:ns\.value/test\.case/1!1 -17/24 Test #17: TEST:ns\.value/test\.case/1!1 \.+ +Passed +[0-9.]+ sec - Start 18: TEST:ns\.value/test\.case/"foo"!1 -18/24 Test #18: TEST:ns\.value/test\.case/"foo"!1 \.+ +Passed +[0-9.]+ sec - Start 19: TEST:param/special\.case/"semicolon;"!1 -19/24 Test #19: TEST:param/special\.case/"semicolon;"!1 \.+ +Passed +[0-9.]+ sec - Start 20: TEST:param/special\.case/"backslash\\"!1 -20/24 Test #20: TEST:param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec - Start 21: TEST:param/special\.case/"\${var}"!1 -21/24 Test #21: TEST:param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec - Start 22: TEST:ns\.param/special\.case/"semicolon;"!1 -22/24 Test #22: TEST:ns\.param/special\.case/"semicolon;"!1 \.+ +Passed +[0-9.]+ sec - Start 23: TEST:ns\.param/special\.case/"backslash\\"!1 -23/24 Test #23: TEST:ns\.param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec - Start 24: TEST:ns\.param/special\.case/"\${var}"!1 -24/24 Test #24: TEST:ns\.param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_foo!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_foo!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_bar!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_bar!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.disabled_case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.disabled_case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.DISABLEDnot_really_case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.DISABLEDnot_really_case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_foo!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_foo!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_bar!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_bar!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.disabled_case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.disabled_case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:disabled\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:disabled\.case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:DISABLEDnotreally\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:DISABLEDnotreally\.case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/short\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/float\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/short\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/float\.case!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:value/test\.case/1!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:value/test\.case/"foo"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/"foo"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.value/test\.case/1!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/1!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.value/test\.case/"foo"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/"foo"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"semicolon;"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"semicolon;"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"backslash\\"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"\${var}"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"\${var}"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec -100% tests passed, 0 tests failed out of 21 +100% tests passed, 0 tests failed out of [0-9]+ Total Test time \(real\) = +[0-9.]+ sec The following tests did not run: -.*3 - TEST:basic\.disabled_case!1 \(Disabled\) -.*7 - TEST:ns\.basic\.disabled_case!1 \(Disabled\) -.*9 - TEST:disabled\.case!1 \(Disabled\) +[ 0-9]+- TEST:basic\.disabled_case!1 \(Disabled\) +[ 0-9]+- TEST:ns\.basic\.disabled_case!1 \(Disabled\) +[ 0-9]+- TEST:disabled\.case!1 \(Disabled\) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt index 089e3e8..703bae2 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt @@ -1,58 +1,58 @@ Test project .* - Start 25: TEST:basic\.case_foo!2 - 1/24 Test #25: TEST:basic\.case_foo!2 \.+ +Passed +[0-9.]+ sec - Start 26: TEST:basic\.case_bar!2 - 2/24 Test #26: TEST:basic\.case_bar!2 \.+ +Passed +[0-9.]+ sec - Start 27: TEST:basic\.disabled_case!2 - 3/24 Test #27: TEST:basic\.disabled_case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 28: TEST:basic\.DISABLEDnot_really_case!2 - 4/24 Test #28: TEST:basic\.DISABLEDnot_really_case!2 \.+ +Passed +[0-9.]+ sec - Start 29: TEST:ns\.basic\.case_foo!2 - 5/24 Test #29: TEST:ns\.basic\.case_foo!2 \.+ +Passed +[0-9.]+ sec - Start 30: TEST:ns\.basic\.case_bar!2 - 6/24 Test #30: TEST:ns\.basic\.case_bar!2 \.+ +Passed +[0-9.]+ sec - Start 31: TEST:ns\.basic\.disabled_case!2 - 7/24 Test #31: TEST:ns\.basic\.disabled_case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 32: TEST:ns\.basic\.DISABLEDnot_really_case!2 - 8/24 Test #32: TEST:ns\.basic\.DISABLEDnot_really_case!2 \.+ +Passed +[0-9.]+ sec - Start 33: TEST:disabled\.case!2 - 9/24 Test #33: TEST:disabled\.case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 34: TEST:DISABLEDnotreally\.case!2 -10/24 Test #34: TEST:DISABLEDnotreally\.case!2 \.+ +Passed +[0-9.]+ sec - Start 35: TEST:typed/short\.case!2 -11/24 Test #35: TEST:typed/short\.case!2 \.+ +Passed +[0-9.]+ sec - Start 36: TEST:typed/float\.case!2 -12/24 Test #36: TEST:typed/float\.case!2 \.+ +Passed +[0-9.]+ sec - Start 37: TEST:ns\.typed/short\.case!2 -13/24 Test #37: TEST:ns\.typed/short\.case!2 \.+ +Passed +[0-9.]+ sec - Start 38: TEST:ns\.typed/float\.case!2 -14/24 Test #38: TEST:ns\.typed/float\.case!2 \.+ +Passed +[0-9.]+ sec - Start 39: TEST:value/test\.case/1!2 -15/24 Test #39: TEST:value/test\.case/1!2 \.+ +Passed +[0-9.]+ sec - Start 40: TEST:value/test\.case/"foo"!2 -16/24 Test #40: TEST:value/test\.case/"foo"!2 \.+ +Passed +[0-9.]+ sec - Start 41: TEST:ns\.value/test\.case/1!2 -17/24 Test #41: TEST:ns\.value/test\.case/1!2 \.+ +Passed +[0-9.]+ sec - Start 42: TEST:ns\.value/test\.case/"foo"!2 -18/24 Test #42: TEST:ns\.value/test\.case/"foo"!2 \.+ +Passed +[0-9.]+ sec - Start 43: TEST:param/special\.case/"semicolon;"!2 -19/24 Test #43: TEST:param/special\.case/"semicolon;"!2 \.+ +Passed +[0-9.]+ sec - Start 44: TEST:param/special\.case/"backslash\\"!2 -20/24 Test #44: TEST:param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec - Start 45: TEST:param/special\.case/"\${var}"!2 -21/24 Test #45: TEST:param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec - Start 46: TEST:ns\.param/special\.case/"semicolon;"!2 -22/24 Test #46: TEST:ns\.param/special\.case/"semicolon;"!2 \.+ +Passed +[0-9.]+ sec - Start 47: TEST:ns\.param/special\.case/"backslash\\"!2 -23/24 Test #47: TEST:ns\.param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec - Start 48: TEST:ns\.param/special\.case/"\${var}"!2 -24/24 Test #48: TEST:ns\.param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_foo!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_foo!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_bar!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_bar!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.disabled_case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.disabled_case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.DISABLEDnot_really_case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.DISABLEDnot_really_case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_foo!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_foo!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_bar!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_bar!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.disabled_case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.disabled_case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:disabled\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:disabled\.case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:DISABLEDnotreally\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:DISABLEDnotreally\.case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/short\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/float\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/short\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/float\.case!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:value/test\.case/1!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:value/test\.case/"foo"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/"foo"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.value/test\.case/1!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/1!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.value/test\.case/"foo"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/"foo"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"semicolon;"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"semicolon;"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"backslash\\"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"\${var}"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"\${var}"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec -100% tests passed, 0 tests failed out of 21 +100% tests passed, 0 tests failed out of [0-9]+ Total Test time \(real\) = +[0-9.]+ sec The following tests did not run: -.*27 - TEST:basic\.disabled_case!2 \(Disabled\) -.*31 - TEST:ns\.basic\.disabled_case!2 \(Disabled\) -.*33 - TEST:disabled\.case!2 \(Disabled\) +[ 0-9]+ - TEST:basic\.disabled_case!2 \(Disabled\) +[ 0-9]+ - TEST:ns\.basic\.disabled_case!2 \(Disabled\) +[ 0-9]+ - TEST:disabled\.case!2 \(Disabled\) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test3-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test3-stdout.txt index 3593dfe..fb227a9 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test3-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test3-stdout.txt @@ -1,25 +1,25 @@ Test project .* - Start 49: TEST:basic\.case_foo!3 -1/8 Test #49: TEST:basic\.case_foo!3 \.+ +Passed +[0-9.]+ sec - Start 50: TEST:basic\.case_bar!3 -2/8 Test #50: TEST:basic\.case_bar!3 \.+ +Passed +[0-9.]+ sec - Start 51: TEST:basic\.disabled_case!3 -3/8 Test #51: TEST:basic\.disabled_case!3 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 52: TEST:basic\.DISABLEDnot_really_case!3 -4/8 Test #52: TEST:basic\.DISABLEDnot_really_case!3 \.+ +Passed +[0-9.]+ sec - Start 53: TEST:ns\.basic\.case_foo!3 -5/8 Test #53: TEST:ns\.basic\.case_foo!3 \.+ +Passed +[0-9.]+ sec - Start 54: TEST:ns\.basic\.case_bar!3 -6/8 Test #54: TEST:ns\.basic\.case_bar!3 \.+ +Passed +[0-9.]+ sec - Start 55: TEST:ns\.basic\.disabled_case!3 -7/8 Test #55: TEST:ns\.basic\.disabled_case!3 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec - Start 56: TEST:ns\.basic\.DISABLEDnot_really_case!3 -8/8 Test #56: TEST:ns\.basic\.DISABLEDnot_really_case!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_foo!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_foo!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.case_bar!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.case_bar!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.disabled_case!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.disabled_case!3 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:basic\.DISABLEDnot_really_case!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:basic\.DISABLEDnot_really_case!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_foo!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_foo!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.case_bar!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.case_bar!3 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.disabled_case!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.disabled_case!3 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!3 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.basic\.DISABLEDnot_really_case!3 \.+ +Passed +[0-9.]+ sec -100% tests passed, 0 tests failed out of 6 +100% tests passed, 0 tests failed out of [0-9]+ Total Test time \(real\) = +[0-9.]+ sec The following tests did not run: -.*51 - TEST:basic\.disabled_case!3 \(Disabled\) -.*55 - TEST:ns\.basic\.disabled_case!3 \(Disabled\) +[ 0-9]+- TEST:basic\.disabled_case!3 \(Disabled\) +[ 0-9]+- TEST:ns\.basic\.disabled_case!3 \(Disabled\) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt index c40be9e..0f7dde7 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt @@ -1,13 +1,13 @@ Test project .* - Start 57: TEST:typed/short\.case!4 -1/4 Test #57: TEST:typed/short\.case!4 \.+ +Passed +[0-9.]+ sec - Start 58: TEST:typed/float\.case!4 -2/4 Test #58: TEST:typed/float\.case!4 \.+ +Passed +[0-9.]+ sec - Start 59: TEST:ns\.typed/short\.case!4 -3/4 Test #59: TEST:ns\.typed/short\.case!4 \.+ +Passed +[0-9.]+ sec - Start 60: TEST:ns\.typed/float\.case!4 -4/4 Test #60: TEST:ns\.typed/float\.case!4 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/short\.case!4 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!4 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:typed/float\.case!4 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!4 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/short\.case!4 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!4 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.typed/float\.case!4 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!4 \.+ +Passed +[0-9.]+ sec -100% tests passed, 0 tests failed out of 4 +100% tests passed, 0 tests failed out of [0-9]+ Total Test time \(real\) = +[0-9.]+ sec -- cgit v0.12 From 8b85b10fb36e5d1ef4d639cd841cf637d64df3c8 Mon Sep 17 00:00:00 2001 From: Evgeniy Shcherbina Date: Wed, 5 Jan 2022 11:10:03 +0300 Subject: GoogleTest: Add handling for square brackets in test names If a test name contains a square bracket (due to parameters) then it breaks gtest_discovery_test() function in some not-so-predictable way. That happens due to the special meaning these brackets have in the CMake language and they can't be escaped universally. So the following treatment has been implemented: * Every occurrence of ('[' | ']') in a test name gets replaced with the corresponding placeholder ("__osb_*" | "__csb_*") before the Google Test output processing and gets replaced back before adding a new test to CTest, keeping the original test name intact in the CTest output. The placeholders are chosen that way to minimize the chance of clashing with something in the user tests but even if the default ones would clash with something then they are enhanced to not clash with anything (hence "_*" at the placeholder's end). * The GTest output gets searched for the default test name guards ("[=[" | "]=]") and if they are found a new one gets generated until the one is found which can safely encompass any test name. The search is quite simple: find the least amount of '=' which would allow escaping any test. * The resulting ${TEST_LIST} variable will contain every test but tests with square brackets as there is no way to make sure such tests won't break the list altogether. Fixes: #23039 --- Modules/GoogleTestAddTests.cmake | 68 +++++++++++++++++----- .../GoogleTest/GoogleTest-test1-stdout.txt | 16 +++++ .../GoogleTest/GoogleTest-test2-stdout.txt | 22 ++++++- Tests/RunCMake/GoogleTest/fake_gtest.cpp | 4 ++ 4 files changed, 94 insertions(+), 16 deletions(-) diff --git a/Modules/GoogleTestAddTests.cmake b/Modules/GoogleTestAddTests.cmake index 1283a3f..7043b2b 100644 --- a/Modules/GoogleTestAddTests.cmake +++ b/Modules/GoogleTestAddTests.cmake @@ -20,7 +20,7 @@ macro(flush_tests_buffer) set(tests_buffer "") endmacro() -macro(add_command NAME) +macro(add_command NAME TEST_NAME) set(_args "") foreach(_arg ${ARGN}) if(_arg MATCHES "[^-./:a-zA-Z0-9_]") @@ -29,7 +29,7 @@ macro(add_command NAME) string(APPEND _args " ${_arg}") endif() endforeach() - string(APPEND script "${NAME}(${_args})\n") + string(APPEND script "${NAME}(${TEST_NAME} ${_args})\n") string(LENGTH "${script}" _script_len) if(${_script_len} GREATER "50000") flush_script() @@ -39,6 +39,32 @@ macro(add_command NAME) unset(_script_len) endmacro() +function(generate_testname_guards OUTPUT OPEN_GUARD_VAR CLOSE_GUARD_VAR) + set(open_guard "[=[") + set(close_guard "]=]") + set(counter 1) + while("${OUTPUT}" MATCHES "${close_guard}") + math(EXPR counter "${counter} + 1") + string(REPEAT "=" ${counter} equals) + set(open_guard "[${equals}[") + set(close_guard "]${equals}]") + endwhile() + set(${OPEN_GUARD_VAR} "${open_guard}" PARENT_SCOPE) + set(${CLOSE_GUARD_VAR} "${close_guard}" PARENT_SCOPE) +endfunction() + +function(escape_square_brackets OUTPUT BRACKET PLACEHOLDER PLACEHOLDER_VAR OUTPUT_VAR) + if("${OUTPUT}" MATCHES "\\${BRACKET}") + set(placeholder "${PLACEHOLDER}") + while("${OUTPUT}" MATCHES "${placeholder}") + set(placeholder "${placeholder}_") + endwhile() + string(REPLACE "${BRACKET}" "${placeholder}" OUTPUT "${OUTPUT}") + set(${PLACEHOLDER_VAR} "${placeholder}" PARENT_SCOPE) + set(${OUTPUT_VAR} "${OUTPUT}" PARENT_SCOPE) + endif() +endfunction() + function(gtest_discover_tests_impl) cmake_parse_arguments( @@ -94,6 +120,9 @@ function(gtest_discover_tests_impl) ) endif() + generate_testname_guards("${output}" open_guard close_guard) + escape_square_brackets("${output}" "[" "__osb" open_sb output) + escape_square_brackets("${output}" "]" "__csb" close_sb output) # Preserve semicolon in test-parameters string(REPLACE [[;]] [[\;]] output "${output}") string(REPLACE "\n" ";" output "${output}") @@ -128,18 +157,24 @@ function(gtest_discover_tests_impl) unset(TEST_XML_OUTPUT_PARAM) endif() - # sanitize test name for further processing downstream set(testname "${prefix}${pretty_suite}.${pretty_test}${suffix}") + # sanitize test name for further processing downstream + # unescape [] + if(open_sb) + string(REPLACE "${open_sb}" "[" testname "${testname}") + endif() + if(close_sb) + string(REPLACE "${close_sb}" "]" testname "${testname}") + endif() # escape \ string(REPLACE [[\]] [[\\]] testname "${testname}") - # escape ; - string(REPLACE [[;]] [[\;]] testname "${testname}") # escape $ string(REPLACE [[$]] [[\$]] testname "${testname}") + set(guarded_testname "${open_guard}${testname}${close_guard}") # ...and add to script add_command(add_test - "${testname}" + "${guarded_testname}" ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" "--gtest_filter=${suite}.${test}" @@ -149,21 +184,28 @@ function(gtest_discover_tests_impl) ) if(suite MATCHES "^DISABLED_" OR test MATCHES "^DISABLED_") add_command(set_tests_properties - "${testname}" + "${guarded_testname}" PROPERTIES DISABLED TRUE ) endif() + add_command(set_tests_properties - "${testname}" + "${guarded_testname}" PROPERTIES WORKING_DIRECTORY "${_TEST_WORKING_DIR}" SKIP_REGULAR_EXPRESSION "\\\\[ SKIPPED \\\\]" ${properties} ) - list(APPEND tests_buffer "${testname}") - list(LENGTH tests_buffer tests_buffer_length) - if(${tests_buffer_length} GREATER "250") - flush_tests_buffer() + + # possibly unbalanced square brackets render lists invalid so skip such tests in _TEST_LIST + if(NOT "${testname}" MATCHES [=[(\[|\])]=]) + # escape ; + string(REPLACE [[;]] [[\;]] testname "${testname}") + list(APPEND tests_buffer "${testname}") + list(LENGTH tests_buffer tests_buffer_length) + if(${tests_buffer_length} GREATER "250") + flush_tests_buffer() + endif() endif() endif() endif() @@ -173,7 +215,7 @@ function(gtest_discover_tests_impl) # Create a list of all discovered tests, which users may use to e.g. set # properties on the tests flush_tests_buffer() - add_command(set ${_TEST_LIST} ${tests}) + add_command(set "" ${_TEST_LIST} ${tests}) # Write CTest script flush_script() diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt index acff3bc..9c0b775 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt @@ -41,12 +41,28 @@ Test project .* *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:param/special\.case/"\${var}"!1 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/'\['!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/'\['!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"\]\]=\]"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\]\]=\]"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"__osbtext"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"__osbtext"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"__csb___text"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"__csb___text"!1 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!1 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!1 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!1 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!1 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"\${var}"!1 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\${var}"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/'\['!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/'\['!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"\]\]=\]"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\]\]=\]"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"__osbtext"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"__osbtext"!1 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"__csb___text"!1 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"__csb___text"!1 \.+ +Passed +[0-9.]+ sec 100% tests passed, 0 tests failed out of [0-9]+ diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt index 703bae2..b0210c6 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt +++ b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt @@ -41,18 +41,34 @@ Test project .* *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:param/special\.case/"\${var}"!2 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/'\['!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/'\['!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"\]\]=\]"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"\]\]=\]"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"__osbtext"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"__osbtext"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:param/special\.case/"__csb___text"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"__csb___text"!2 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!2 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"semicolon;"!2 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!2 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"backslash\\"!2 \.+ +Passed +[0-9.]+ sec *Start +[0-9]+: TEST:ns\.param/special\.case/"\${var}"!2 *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\${var}"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/'\['!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/'\['!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"\]\]=\]"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"\]\]=\]"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"__osbtext"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"__osbtext"!2 \.+ +Passed +[0-9.]+ sec + *Start +[0-9]+: TEST:ns\.param/special\.case/"__csb___text"!2 + *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.param/special\.case/"__csb___text"!2 \.+ +Passed +[0-9.]+ sec 100% tests passed, 0 tests failed out of [0-9]+ Total Test time \(real\) = +[0-9.]+ sec The following tests did not run: -[ 0-9]+ - TEST:basic\.disabled_case!2 \(Disabled\) -[ 0-9]+ - TEST:ns\.basic\.disabled_case!2 \(Disabled\) -[ 0-9]+ - TEST:disabled\.case!2 \(Disabled\) +[ 0-9]+- TEST:basic\.disabled_case!2 \(Disabled\) +[ 0-9]+- TEST:ns\.basic\.disabled_case!2 \(Disabled\) +[ 0-9]+- TEST:disabled\.case!2 \(Disabled\) diff --git a/Tests/RunCMake/GoogleTest/fake_gtest.cpp b/Tests/RunCMake/GoogleTest/fake_gtest.cpp index 36f1d3c..aa6468c 100644 --- a/Tests/RunCMake/GoogleTest/fake_gtest.cpp +++ b/Tests/RunCMake/GoogleTest/fake_gtest.cpp @@ -57,6 +57,10 @@ int main(int argc, char** argv) std::cout << " case/0 # GetParam() = \"semicolon;\"" << std::endl; std::cout << " case/1 # GetParam() = \"backslash\\\"" << std::endl; std::cout << " case/2 # GetParam() = \"${var}\"" << std::endl; + std::cout << " case/3 # GetParam() = '['" << std::endl; + std::cout << " case/4 # GetParam() = \"]]=]\"" << std::endl; + std::cout << " case/5 # GetParam() = \"__osbtext\"" << std::endl; + std::cout << " case/6 # GetParam() = \"__csb___text\"" << std::endl; } } return 0; -- cgit v0.12