René's URL Explorer Experiment


Title: Consistent syntax for suite/test/context annotations · Issue #1016 · utPLSQL/utPLSQL · GitHub

Open Graph Title: Consistent syntax for suite/test/context annotations · Issue #1016 · utPLSQL/utPLSQL

X Title: Consistent syntax for suite/test/context annotations · Issue #1016 · utPLSQL/utPLSQL

Description: Current state Currently --%suite and --%test annotations take description as argument. The --%context annotation doesn't allow that and expects name to be given instead. This is inconsistent and leads to confusion when using the framewor...

Open Graph Description: Current state Currently --%suite and --%test annotations take description as argument. The --%context annotation doesn't allow that and expects name to be given instead. This is inconsistent and le...

X Description: Current state Currently --%suite and --%test annotations take description as argument. The --%context annotation doesn't allow that and expects name to be given instead. This is inconsistent an...

Opengraph URL: https://github.com/utPLSQL/utPLSQL/issues/1016

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Consistent syntax for suite/test/context annotations","articleBody":"**Current state**\r\n\r\nCurrently `--%suite` and `--%test` annotations take `description` as argument.\r\nThe `--%context` annotation doesn't allow that and expects `name` to be given instead.\r\n\r\nThis is inconsistent and leads to confusion when using the framework.\r\n\r\nEngineers expect simplicity and ease of use from the framework which isn't the case with `--%context` annotation.\r\n\r\nConsider the below example:\r\n```sql\r\ncreate or replace package queue_spec as\r\n  --%suite(Queue specification)\r\n\r\n  --%context(A new queue)\r\n\r\n    --%test(Cannot be created with non positive bounding capacity)\r\n    procedure non_positive_bounding_cap;\r\n\r\n  --%endcontext\r\nend;\r\n```\r\n\r\nWith this package, current implementation of utPLSQL gives the following:\r\n\r\n| suitepath | description | name |\r\n|-----------|------------|------|\r\n| queue_spec | Queue specification | queue_spec |\r\n| queue_spec.A new queue | A new queue | A new queue |\r\n| queue_spec.A new queue.non_positive_bounding_cap | Cannot be created with non positive bounding capacity | non_positive_bounding_cap |\r\n\r\n- The name of suite comes from package name and description from annotation\r\n- The name of test comes from procedure name and description from annotation \r\n- The name of context is take from annotation and description is copied from name\r\n\r\nThe above package spec is not really valid, as context name should not contain any whitespace or full stop characters. Context name rules should conform to naming rules for Oracle objects.\r\n\r\nutPLSQL does not give any warning on invalid context names too.\r\n\r\nThe proper implementation of the above package following current framework behavior should be more like below.\r\n```sql\r\ncreate or replace package queue_spec as\r\n  --%suite(Queue specification)\r\n\r\n  --%context(a_new_queue)\r\n  --%displayname(A new queue)\r\n\r\n    --%test(Cannot be created with non positive bounding capacity)\r\n    procedure non_positive_bounding_cap;\r\n\r\n  --%endcontext\r\nend;\r\n```\r\n\r\nThe above is confusing, hard to remember and easy to confuse engineers.\r\n\r\n| suitepath | description | name |\r\n|-----------|------------|------|\r\n| queue_spec | Queue specification | queue_spec |\r\n| queue_spec.a_new_queue | A new queue | a_new_queue |\r\n| queue_spec.a_new_queue.non_positive_bounding_cap | Cannot be created with non positive bounding capacity | non_positive_bounding_cap |\r\n\r\n\r\n**Describe the solution you'd like**\r\n\r\nI suggest to change the current behavior so that the `--%context` annotation accepts description as argument and is aligned with `--%test` and `--suite` annotations.\r\n\r\nFramework would need to provide a way for giving an explicit name to a context as well as allow for implicit naming, if users don't care about context names. \r\n\r\nRules:\r\n- if no `name` is specified for a context, the context name is defaulted to `nested_context_#N` where `N` is the consecutive number of the context inside it's parent.\r\n- if a `name` is specified for the context, the name is used instead\r\n- if provided `name` is not valid, a warning is given and the name is defaulted to `nested_context_#N` \r\n\r\n\r\nGiven the original example.\r\n```sql\r\ncreate or replace package queue_spec as\r\n  --%suite(Queue specification)\r\n\r\n  --%context(A new queue)\r\n\r\n    --%test(Cannot be created with non positive bounding capacity)\r\n    procedure non_positive_bounding_cap;\r\n\r\n  --%endcontext\r\nend;\r\n```\r\n\r\nThe new implementation would give the following results:\r\n\r\n| suitepath | description | name |\r\n|-----------|------------|------|\r\n| queue_spec | Queue specification | queue_spec |\r\n| queue_spec.nested_context_#1 | A new queue | nested_context_#1 |\r\n| queue_spec.nested_context_#1.non_positive_bounding_cap | Cannot be created with non positive bounding capacity | non_positive_bounding_cap |\r\n\r\nTo give an explicit name to the context, users would use syntax:\r\n```sql\r\ncreate or replace package queue_spec as\r\n  --%suite(Queue specification)\r\n\r\n  --%context(A new queue)\r\n  --%name(a_new_queue)\r\n\r\n    --%test(Cannot be created with non positive bounding capacity)\r\n    procedure non_positive_bounding_cap;\r\n\r\n  --%endcontext\r\nend;\r\n```\r\n\r\n\r\n**Describe alternatives you've considered**\r\n\r\nAn alternative would be to convert the description into context name by:\r\n- making it lower-case\r\n- trimming leading and trailing whitespace and full stop characters\r\n- replacing all the whitespaces, full stops and special characters with underscores\r\n\r\nThis could work pretty well for some many use-cases.\r\n\r\n```sql\r\ncreate or replace package queue_spec as\r\n  --%suite(Queue specification)\r\n\r\n  --%context(A new queue)\r\n\r\n    --%test(Cannot be created with non positive bounding capacity)\r\n    procedure non_positive_bounding_cap;\r\n\r\n  --%endcontext\r\nend;\r\n```\r\n\r\nThe alternative implementation would give the following results:\r\n\r\n| suitepath | description | name |\r\n|-----------|------------|------|\r\n| queue_spec | Queue specification | queue_spec |\r\n| queue_spec.a_new_queue | A new queue | a_new_queue |\r\n| queue_spec.a_new_queue.non_positive_bounding_cap | Cannot be created with non positive bounding capacity | non_positive_bounding_cap |\r\n\r\n\r\nWe would still need to use default context names if no description is provided.\r\n","author":{"url":"https://github.com/jgebal","@type":"Person","name":"jgebal"},"datePublished":"2019-10-28T12:08:38.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1016/utPLSQL/issues/1016"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:a8b74585-de37-416f-d5a6-03c83d1f77d0
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idCE32:FE622:BB58B3:1011401:6A62F4E3
html-safe-nonce126c706ec5c4e05146ea3b9735feb852fe58a2331e3c3a5a570920d633f76d80
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRTMyOkZFNjIyOkJCNThCMzoxMDExNDAxOjZBNjJGNEUzIiwidmlzaXRvcl9pZCI6Ijc4NzI3MzA4NjQxNTc5MTQzMzkiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacfafdd5e217aeec15dcc00262820ff8e2b5215924a53957d1ebe497d14d10593a
hovercard-subject-tagissue:513264973
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/utPLSQL/utPLSQL/1016/issue_layout
twitter:imagehttps://opengraph.githubassets.com/c529bcf953fce0e386291d27dced4c4e1791949c71f3985e5a2bf1aef049dff4/utPLSQL/utPLSQL/issues/1016
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/c529bcf953fce0e386291d27dced4c4e1791949c71f3985e5a2bf1aef049dff4/utPLSQL/utPLSQL/issues/1016
og:image:altCurrent state Currently --%suite and --%test annotations take description as argument. The --%context annotation doesn't allow that and expects name to be given instead. This is inconsistent and le...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamejgebal
hostnamegithub.com
expected-hostnamegithub.com
Noneb415018e190e73858133ddcaa36acce7b3f3572fe54dda84bd3b21a6ec714c30
turbo-cache-controlno-preview
go-importgithub.com/utPLSQL/utPLSQL git https://github.com/utPLSQL/utPLSQL.git
octolytics-dimension-user_id15661281
octolytics-dimension-user_loginutPLSQL
octolytics-dimension-repository_id50728220
octolytics-dimension-repository_nwoutPLSQL/utPLSQL
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id50728220
octolytics-dimension-repository_network_root_nwoutPLSQL/utPLSQL
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release22f98521e99f504294ab0812b66104d50eb75a70
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/utPLSQL/utPLSQL/issues/1016#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FutPLSQL%2FutPLSQL%2Fissues%2F1016
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FutPLSQL%2FutPLSQL%2Fissues%2F1016
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=utPLSQL%2FutPLSQL
Reloadhttps://github.com/utPLSQL/utPLSQL/issues/1016
Reloadhttps://github.com/utPLSQL/utPLSQL/issues/1016
Reloadhttps://github.com/utPLSQL/utPLSQL/issues/1016
Please reload this pagehttps://github.com/utPLSQL/utPLSQL/issues/1016
utPLSQL https://github.com/utPLSQL
utPLSQLhttps://github.com/utPLSQL/utPLSQL
Notifications https://github.com/login?return_to=%2FutPLSQL%2FutPLSQL
Fork 188 https://github.com/login?return_to=%2FutPLSQL%2FutPLSQL
Star 619 https://github.com/login?return_to=%2FutPLSQL%2FutPLSQL
Code https://github.com/utPLSQL/utPLSQL
Issues 12 https://github.com/utPLSQL/utPLSQL/issues
Pull requests 0 https://github.com/utPLSQL/utPLSQL/pulls
Discussions https://github.com/utPLSQL/utPLSQL/discussions
Actions https://github.com/utPLSQL/utPLSQL/actions
Projects https://github.com/utPLSQL/utPLSQL/projects
Security and quality 0 https://github.com/utPLSQL/utPLSQL/security
Insights https://github.com/utPLSQL/utPLSQL/pulse
Code https://github.com/utPLSQL/utPLSQL
Issues https://github.com/utPLSQL/utPLSQL/issues
Pull requests https://github.com/utPLSQL/utPLSQL/pulls
Discussions https://github.com/utPLSQL/utPLSQL/discussions
Actions https://github.com/utPLSQL/utPLSQL/actions
Projects https://github.com/utPLSQL/utPLSQL/projects
Security and quality https://github.com/utPLSQL/utPLSQL/security
Insights https://github.com/utPLSQL/utPLSQL/pulse
#1013https://github.com/utPLSQL/utPLSQL/pull/1013
Consistent syntax for suite/test/context annotationshttps://github.com/utPLSQL/utPLSQL/issues/1016#top
#1013https://github.com/utPLSQL/utPLSQL/pull/1013
https://github.com/jgebal
jgebalhttps://github.com/jgebal
on Oct 28, 2019https://github.com/utPLSQL/utPLSQL/issues/1016#issue-513264973
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.