# BDD Tag Expression Processor
The module wil filter the Feature files based on the given scenario tag expressions. The expression can be created
freehand in the following format.
## Rules
* All the Feature files must have at least a single line space between each block in the feature files.
* _Feature, Background, Scenario, Scenario Outline_
* The Left side is always the ANDs and Right side is always the ORs
* The bridge between ANDs and ORs is **and (**
* Tags that we want to exclude are prefixed with a ~ symbol.
* _Eg. NoRuns can be either the default ~@norun or any tags such as ~@p3_
* All the scenarios that are filtered are arranged back into their original files and a @final tag is placed in the tag
list
* _All the comments, and extra spaces are removed from the feature file_
## Test Samples
```
Given expression: {@web}
Result: --> NoRuns: [], Ands: ['@web'], Ors: []
Given expression: { @web and @regression and ~@norun}
Result: --> NoRuns: ['@norun'], Ands: ['@web', '@regression'], Ors: []
Given expression: {~@norun and @web and (@test1 or @test2)}
Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@test1', '@test2']
Given expression: {~@norun and (@test1 or @test2)}
Result: --> NoRuns: ['@norun'], Ands: [], Ors: ['@test1', '@test2']
Given expression: {@web and ~@browser and @sanity and ~@norun}
Result: --> NoRuns: ['@browser', '@norun'], Ands: ['@web', '@sanity'], Ors: []
Given expression: {~@norun}
Result: --> NoRuns: ['@norun'], Ands: [], Ors: []
Given expression: {@sanity or @regression}
Result: --> NoRuns: [], Ands: [], Ors: ['@sanity', '@regression']
Given expression: {@web and @browser and ~@norun and (@regression or @Sanity)}
Result: --> NoRuns: ['@norun'], Ands: ['@web', '@browser'], Ors: ['@regression', '@Sanity']
Given expression: {@web and ~@norun and (@regression or @Sanity)}
Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@regression', '@Sanity']
Given expression: { ~@web and @browser and @checkout and ~@norun and ( @regression or @Sanity )}
Result: --> NoRuns: ['@web', '@norun'], Ands: ['@browser', '@checkout'], Ors: ['@regression', '@Sanity']
Given expression: { ~@web and @browser and @checkout and @norun and ( @test1 or @test2 )}
Result: --> NoRuns: ['@web'], Ands: ['@browser', '@checkout', '@norun'], Ors: ['@test1', '@test2']
Given expression: { @web and @regression and @norun and ( @test1 or @test2 )}
Result: --> NoRuns: [], Ands: ['@web', '@regression', '@norun'], Ors: ['@test1', '@test2']
Given expression: {@web and (@regression or @Sanity)}
Result: --> NoRuns: [], Ands: ['@web'], Ors: ['@regression', '@Sanity']
Given expression: { @web and ~@browser and ~@checkout and @norun and ( @regression or @Sanity )}
Result: --> NoRuns: ['@browser', '@checkout'], Ands: ['@web', '@norun'], Ors: ['@regression', '@Sanity']
Given expression: {@web and ~@norun and (@p1)}
Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@p1']
Given expression: @web
Result: --> NoRuns: [], Ands: ['@web'], Ors: []
Given expression:
Result: --> NoRuns: [], Ands: [], Ors: []
Given expression: {~@test-2}
Result: --> NoRuns: ['@test-2'], Ands: [], Ors: []
Given expression: {~@norun and @web}
Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: []
```
Raw data
{
"_id": null,
"home_page": "https://github.com/qarampage/bdd-tags-processor",
"name": "bdd-tags-processor",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "bdd cucumber tag expression processor filter feature files",
"author": "QA Rampage",
"author_email": "16265665+qarampage@users.noreply.github.co",
"download_url": "https://files.pythonhosted.org/packages/96/62/9a3ab56bc22dfc4d567660ffd216652429824ad17f3815435544a18f95e7/bdd_tags_processor-0.2.0.tar.gz",
"platform": null,
"description": "# BDD Tag Expression Processor\n\nThe module wil filter the Feature files based on the given scenario tag expressions. The expression can be created\nfreehand in the following format.\n\n## Rules\n\n* All the Feature files must have at least a single line space between each block in the feature files.\n * _Feature, Background, Scenario, Scenario Outline_\n* The Left side is always the ANDs and Right side is always the ORs\n* The bridge between ANDs and ORs is **and (**\n* Tags that we want to exclude are prefixed with a ~ symbol.\n * _Eg. NoRuns can be either the default ~@norun or any tags such as ~@p3_\n* All the scenarios that are filtered are arranged back into their original files and a @final tag is placed in the tag\n list\n * _All the comments, and extra spaces are removed from the feature file_\n\n## Test Samples\n\n```\nGiven expression: {@web}\n\t Result: --> NoRuns: [], Ands: ['@web'], Ors: []\n\nGiven expression: { @web and @regression and ~@norun}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web', '@regression'], Ors: []\n\nGiven expression: {~@norun and @web and (@test1 or @test2)}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@test1', '@test2']\n\nGiven expression: {~@norun and (@test1 or @test2)}\n\t Result: --> NoRuns: ['@norun'], Ands: [], Ors: ['@test1', '@test2']\n\nGiven expression: {@web and ~@browser and @sanity and ~@norun}\n\t Result: --> NoRuns: ['@browser', '@norun'], Ands: ['@web', '@sanity'], Ors: []\n\nGiven expression: {~@norun}\n\t Result: --> NoRuns: ['@norun'], Ands: [], Ors: []\n\nGiven expression: {@sanity or @regression}\n\t Result: --> NoRuns: [], Ands: [], Ors: ['@sanity', '@regression']\n\nGiven expression: {@web and @browser and ~@norun and (@regression or @Sanity)}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web', '@browser'], Ors: ['@regression', '@Sanity']\n\nGiven expression: {@web and ~@norun and (@regression or @Sanity)}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@regression', '@Sanity']\n\nGiven expression: { ~@web and @browser and @checkout and ~@norun and ( @regression or @Sanity )}\n\t Result: --> NoRuns: ['@web', '@norun'], Ands: ['@browser', '@checkout'], Ors: ['@regression', '@Sanity']\n\nGiven expression: { ~@web and @browser and @checkout and @norun and ( @test1 or @test2 )}\n\t Result: --> NoRuns: ['@web'], Ands: ['@browser', '@checkout', '@norun'], Ors: ['@test1', '@test2']\n\nGiven expression: { @web and @regression and @norun and ( @test1 or @test2 )}\n\t Result: --> NoRuns: [], Ands: ['@web', '@regression', '@norun'], Ors: ['@test1', '@test2']\n\nGiven expression: {@web and (@regression or @Sanity)}\n\t Result: --> NoRuns: [], Ands: ['@web'], Ors: ['@regression', '@Sanity']\n\nGiven expression: { @web and ~@browser and ~@checkout and @norun and ( @regression or @Sanity )}\n\t Result: --> NoRuns: ['@browser', '@checkout'], Ands: ['@web', '@norun'], Ors: ['@regression', '@Sanity']\n\nGiven expression: {@web and ~@norun and (@p1)}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: ['@p1']\n\nGiven expression: @web\n\t Result: --> NoRuns: [], Ands: ['@web'], Ors: []\n\nGiven expression: \n\t Result: --> NoRuns: [], Ands: [], Ors: []\n\nGiven expression: {~@test-2}\n\t Result: --> NoRuns: ['@test-2'], Ands: [], Ors: []\n\nGiven expression: {~@norun and @web}\n\t Result: --> NoRuns: ['@norun'], Ands: ['@web'], Ors: []\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "Filter Cucumber BDD Feature files based on Scenario Tag expressions",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/qarampage/bdd-tags-processor"
},
"split_keywords": [
"bdd",
"cucumber",
"tag",
"expression",
"processor",
"filter",
"feature",
"files"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "056bda3592ae130c21153fe1c0dfcc5ad7b48dbbaf47a86d7d762d2706dfb629",
"md5": "2996b9e781fcdad750f23d79d9e11ca6",
"sha256": "cabde7e698c4c59443fea0a10aba0e427fcb7cbcf866a08f509cc48054f724f7"
},
"downloads": -1,
"filename": "bdd_tags_processor-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2996b9e781fcdad750f23d79d9e11ca6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17573,
"upload_time": "2023-08-06T14:05:24",
"upload_time_iso_8601": "2023-08-06T14:05:24.729296Z",
"url": "https://files.pythonhosted.org/packages/05/6b/da3592ae130c21153fe1c0dfcc5ad7b48dbbaf47a86d7d762d2706dfb629/bdd_tags_processor-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96629a3ab56bc22dfc4d567660ffd216652429824ad17f3815435544a18f95e7",
"md5": "9f815bcaee29ba4f8622bc452a2d7ad3",
"sha256": "222f7fa0cc17d4e14d95390762dea535952c4348fbffb37cff3f858ee0ed4d51"
},
"downloads": -1,
"filename": "bdd_tags_processor-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "9f815bcaee29ba4f8622bc452a2d7ad3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16892,
"upload_time": "2023-08-06T14:05:26",
"upload_time_iso_8601": "2023-08-06T14:05:26.434214Z",
"url": "https://files.pythonhosted.org/packages/96/62/9a3ab56bc22dfc4d567660ffd216652429824ad17f3815435544a18f95e7/bdd_tags_processor-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-06 14:05:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "qarampage",
"github_project": "bdd-tags-processor",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "bdd-tags-processor"
}