-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add requirements to the cpptest tool
Detailed requirements for three main scenarios have been added. The related system-tests have been aded.
- Loading branch information
1 parent
0a90610
commit ee8b98d
Showing
34 changed files
with
1,673 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,75 @@ | ||
package cpptest_req | ||
import req | ||
import tool_req | ||
|
||
req.Software_Requirement Dummy_Requirement { | ||
tool_req.Tool_Definition Source_Input_Valid { | ||
title = '''Valid source input given''' | ||
description = ''' | ||
This is not really a requirement. It will be used only to generate a minimal tracing report for each tool. | ||
It can be deleted as soon as all the tools get their real requirements. | ||
Valid source input means that the tool was called with | ||
a list of terms as a command line argument. | ||
Each term is an existing file or an existing directory path | ||
''' | ||
} | ||
|
||
req.Software_Requirement Dummy_Requirement_Unit_Test { | ||
tool_req.Tool_Definition No_Source_Input { | ||
title = '''No source input given''' | ||
description = ''' | ||
This is not really a requirement. It will be used only to generate a minimal tracing report for each tool. | ||
It can be deleted as soon as all the tools get their real requirements. | ||
No source input means that the tool was called with nothing specified | ||
in the command line argument. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Definition Source_Inputs_Invalid { | ||
title = '''Invalid source input given''' | ||
description = ''' | ||
Invalid source input means that the tool was called with | ||
a list of terms as a command line argument. | ||
At least one term is an non-existent file or an non-existent directory path | ||
''' | ||
} | ||
|
||
tool_req.Tool_Definition Source_Input_Files { | ||
title = '''Source input files given''' | ||
description = ''' | ||
Valid existing source input files in the case of [[Source_Inputs_Valid]] | ||
''' | ||
} | ||
|
||
tool_req.Tool_Definition Config_File { | ||
title = '''Config file''' | ||
description = ''' | ||
This file consists of the configuration of the tool. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Config_Parameter Source_Input_File_Paths { | ||
description = ''' | ||
The input terms can be specified in space separated format | ||
as a command line argument. | ||
Only files ending on [".cpp", ".cc", ".c", ".h"] are considered. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Config_Parameter Config_File_Path { | ||
description = ''' | ||
This parameter specifies the path to [[Config_File]]. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Requirement Valid_Source_Input_File_Paths { | ||
description = ''' | ||
If [[Source_Inputs_Valid]] and [[Config_File_Path]] is specified, the output file/s containing the extracted tests | ||
from [[Source_Input_Files]] will be written with user-specific markers to the file specified in [[Config_File]]. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Requirement_Else No_Source_Input_File_Path { | ||
description = ''' | ||
Else if [[No_Source_Input]], the tool shall exit with return code 1. | ||
''' | ||
} | ||
|
||
tool_req.Tool_Requirement_Else Invalid_Source_Input_File_Paths { | ||
description = ''' | ||
Else if [[Source_Inputs_Invalid]], the tool shall exit with return code 1. | ||
''' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,32 @@ | ||
package req | ||
package tool_req | ||
|
||
type System_Requirement { | ||
type Tool_Definition { | ||
title ''' | ||
Title of the definition. | ||
''' String | ||
description ''' | ||
The content of the requirement. | ||
A tool requirement describes the behaviour of a lobster tool from the point of view of the user. | ||
It does not describe implementation details. | ||
A definition describes what a particular entity is. | ||
''' String | ||
} | ||
|
||
type Software_Requirement { | ||
type Tool_Config_Parameter { | ||
description ''' | ||
A tool configuration parameter describes the exact way in which the | ||
parameters shall be given for the tool from the user's point of view. | ||
''' String | ||
} | ||
|
||
type Tool_Requirement { | ||
description ''' | ||
The content of the requirement. | ||
A software requirement describes the behaviour of a lobster tool. | ||
A tool requirement describes the behavior of a lobster tool from the point of view of the user. | ||
It does not describe implementation details. | ||
''' String | ||
} | ||
|
||
type Tool_Requirement_Else { | ||
description ''' | ||
A tool requirement else describes the behavior of a Lobster tool in which the specific conditions | ||
can be applied by the user. | ||
''' String | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
tests-system/lobster-cpptest/data/other-data/test_case.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
|
||
/** ensure version are parsed correctly */ | ||
|
||
/// @version 1 | ||
TEST(VersionTagTest, VersionTagTestInOnline) {} | ||
|
||
/// @version 1, 42 | ||
TEST(VersionTagTest, MultipleVersionTagTestInOnline) {} | ||
|
||
/// @requirement CB-#0815 | ||
/// @version 12, 70 | ||
TEST(VersionTagTest, MoreVersionsThanRequirements) {} | ||
|
||
/// @requirement CB-#0815, CB-#0816 | ||
/// @version 28 | ||
TEST(VersionTagTest, MoreRequirementsThanVersions) {} | ||
|
||
/// @requirement CB-#123 CB-#456 | ||
/// @version 28 99 | ||
TEST(VersionTagTest, VersionSpaceSeparated) {} | ||
|
||
/** ensure everything is parsed correctly at once */ | ||
|
||
/// | ||
/// @test foo | ||
/// @brief this test tests something | ||
/// @version 42, 2 | ||
/// @requirement CB-#0815, CB-#0816 | ||
/// @requiredby FOO0::BAR0 | ||
/// @testmethods TM_BOUNDARY, TM_REQUIREMENT | ||
/// | ||
TEST(AllTogetherTest, ImplementationMultipleLines) { | ||
EXPECT_EQ(true, DummyFunctionForValidCondition()); | ||
} | ||
|
||
/** | ||
* commented test cases | ||
*/ | ||
// TEST(LayoutTest1, SingleComment){} | ||
/* TEST(LayoutTest2, InlineComment){} */ | ||
/* | ||
* TEST(LayoutTest2, Comment) {} | ||
*/ | ||
|
||
/** | ||
* invalid test cases | ||
* the following tests should not be parsed | ||
* as valid test cases | ||
*/ | ||
TEST(InvalidTest1,) {} | ||
TEST(, InvalidTest2) {} | ||
TEST(,) {} | ||
TEST() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
/** ensure all desired test macros are parsed */ | ||
|
||
TEST_P_INSTANCE(TestMacrosTest, TestPInstance) {} | ||
TEST(TestMacrosTest, TestTest) {} | ||
TEST_F(TestMacrosTest1, TestTestF) {} | ||
TEST_P(TestMacrosTest1, TestTestP) {} | ||
TYPED_TEST(TestMacrosTest2, TestTypedTest) {} | ||
TYPED_TEST_P(TestMacrosTest2, TestTypedTestP) {} | ||
TYPED_TEST_SUITE(TestMacrosTest2, TestTypedTestSuite) {} | ||
TEST_F_INSTANCE(TestMacrosTest3, TestFInstance) {} | ||
|
||
/** ensure test implementation is correctly parsed */ | ||
|
||
TEST( | ||
ImplementationTest, | ||
TestMultiLine | ||
) {} | ||
|
||
TEST(ImplementationTest, EmptyImplementation) {} | ||
|
||
TEST(ImplementationTest, ImplementationMultipleLines) { | ||
EXPECT_EQ(true, DummyFunctionForValidCondition()); | ||
} | ||
|
||
TEST(ImplementationTest, MultipleLinesWithComments) | ||
{ | ||
// Some comments | ||
EXPECT_EQ(true, DummyFunctionForValidCondition()); | ||
// Some other comments | ||
} | ||
|
||
/** ensure test tag is correctly parsed */ | ||
|
||
/// @test foo1 | ||
TEST(TestTagTest, TestTagInOnline) {} | ||
|
||
/// | ||
/// @test foo2 | ||
TEST(TestTagTest, TestTagPrecededByComment) {} | ||
|
||
/// @test foo3 | ||
/// | ||
TEST(TestTagTest, TestTagFollowedByComment) {} | ||
|
||
/// | ||
/// @test foo4 | ||
/// | ||
TEST(TestTagTest, TestTagWithCommentsAround) {} | ||
|
||
/// @test lorem ipsum | ||
TEST(TestTagTest, TestTagAsText) {} | ||
|
||
/** ensure brief are parsed correctly */ | ||
|
||
/// @brief Some nasty bug1 | ||
TEST(BriefTagTest, BriefTagInOnline) {} | ||
|
||
/// @brief This is a brief field | ||
/// with a long description | ||
TEST(BriefTagTest, BriefTagMultipleLines) {} | ||
|
||
/** ensure requirement tags are parse correctly */ | ||
|
||
/// @requirement CB-#0815 | ||
TEST(RequirementTagTest, Requirement) {} | ||
|
||
/** @requirement CB-#0815 CB-#0816 */ | ||
TEST(RequirementTagTest1, RequirementAsOneLineComments) {} | ||
|
||
/** | ||
* @requirement CB-#0815 CB-#0816 | ||
*/ | ||
TEST(RequirementTagTest1, RequirementAsComments) {} | ||
|
||
/** | ||
* @requirement CB-#0815, CB-#0816, | ||
* CB-#0817 | ||
* @requirement CB-#0818 CB-#0819 | ||
* CB-#0820 | ||
*/ | ||
TEST(RequirementTagTest1, RequirementsAsMultipleComments) {} | ||
|
||
/// | ||
/// @requirement https://codebeamer.company.net/cb/issue/0815 | ||
/// | ||
TEST(RequirementTagTest2, URLRequirement) {} | ||
|
||
/// | ||
/// @requirement https://codebeamer.company.net/cb/issue/0815, | ||
/// https://codebeamer.company.net/cb/issue/0816 | ||
/// | ||
TEST(RequirementTagTest2, URLRequirementsCommaSeparated) {} | ||
|
||
/** | ||
* @requirement https://codebeamer.company.net/cb/issue/0815 | ||
* https://codebeamer.company.net/cb/issue/0816 | ||
*/ | ||
TEST(RequirementTagTest2, URLRequirementsAsCommentsSpaceSeparated) {} | ||
|
||
/** | ||
* @requirement https://codebeamer.company.net/cb/issue/0815, https://codebeamer.company.net/cb/issue/0816 | ||
* @requirement https://codebeamer.company.net/cb/issue/0817 | ||
* https://codebeamer.company.net/cb/issue/0818 | ||
*/ | ||
TEST(RequirementTagTest2, MultipleURLRequirements) {} | ||
|
||
/// | ||
/// @requirement https://codebeamer.company.net/cb/issue/0815 | ||
/// @requirement CB-#0816 | ||
/// | ||
TEST(RequirementTagTest3, MixedRequirements) {} | ||
|
||
/// | ||
/// @requirement something_arbitrary | ||
/// | ||
TEST(RequirementTagTest4, InvalidRequirement) {} | ||
|
||
/// | ||
/// @requirement | ||
/// | ||
TEST(RequirementTagTest4, MissingRequirementReference) {} | ||
|
||
/** ensure required-by tags are parsed correctly */ | ||
|
||
/// | ||
/// @requiredby FOO0::BAR0 | ||
/// | ||
TEST(RequirementByTest1, RequiredByWithAt) {} | ||
|
||
/// | ||
/// @requiredby FOO0::BAR0, FOO1::BAR1 | ||
/// | ||
TEST(RequirementByTest1, MultipleRequiredByCommaSeparated) {} | ||
|
||
/** | ||
* @requiredby FOO0::BAR0, FOO1::BAR1, | ||
* FOO2::BAR2 | ||
* @requiredby FOO3::BAR3 FOO4::BAR4, | ||
* FOO5::BAR5 | ||
* @requiredby FOO6::BAR6 FOO7::BAR7 | ||
* FOO8::BAR8 | ||
*/ | ||
TEST(RequirementByTest1, MultipleRequiredByAsComments) {} | ||
|
||
/// @test lorem ipsum | ||
/// @requiredby FOO0::BAR0, | ||
/// FOO1::BAR1, | ||
/// FOO2::BAR2, | ||
/// FOO3::BAR3, | ||
/// FOO4::BAR4, | ||
/// FOO5::BAR5, | ||
/// FOO6::BAR6, | ||
/// FOO7::BAR7, | ||
/// FOO8::BAR8 | ||
/// | ||
TEST(RequirementByTest2, RequiredByWithNewLines) {} | ||
|
||
/** ensure testmethods are parsed correctly */ | ||
|
||
/// @testmethods TM_REQUIREMENT | ||
TEST(TestMethodsTagTest, TestMethod) {} | ||
|
||
/** | ||
* @testmethods TM_PAIRWISE TM_BOUNDARY | ||
*/ | ||
TEST(TestMethodsTagTest2, TestMethodAsCommentsSpaceSeparated) {} | ||
|
||
/// @testmethods TM_REQUIREMENT, TM_EQUIVALENCE | ||
TEST(TestMethodsTagTest2, TestMethodAsCommentsCommaSeparated) {} | ||
|
||
// /// @testmethods TM_REQUIREMENT, TM_EQUIVALENCE | ||
// /// @testmethods TM_BOUNDARY, TM_CONDITION | ||
// TEST(TestMethodsTagTest2, TestMethodAsCommentsMultipleLines) {} | ||
|
||
/// | ||
/// @testmethods something_arbitrary | ||
/// | ||
TEST(TestMethodsTagTest3, InvalidTestMethod) {} | ||
|
||
/// | ||
/// @testmethods | ||
/// | ||
TEST(TestMethodsTagTest4, MissingTestMethod) {} |
1 change: 1 addition & 0 deletions
1
...id-source-input-file-paths/invalid-directory-input-scenario/expected-output/exit-code.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
2 |
2 changes: 2 additions & 0 deletions
2
...valid-source-input-file-paths/invalid-directory-input-scenario/expected-output/stdout.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
usage: lobster-cpptest [-h] --config-file CONFIG_FILE FILE|DIR [FILE|DIR ...] | ||
lobster-cpptest: error: "../../../dattta" is not a file or directory. |
1 change: 1 addition & 0 deletions
1
...ptest/rbt-invalid-source-input-file-paths/invalid-directory-input-scenario/input/args.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../dattta --config-file=cpptest_output.conf |
Oops, something went wrong.