From d5e84653d971fbccf8b9cb2a7dbcba23d1cda77a Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Thu, 31 Oct 2024 11:15:24 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Add=20`lineno`=20to=20default=20?= =?UTF-8?q?output=20of=20`needs.json`=20(#1346)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ubproject.toml | 11 ++- sphinx_needs/data.py | 1 - .../__snapshots__/test_add_sections_sigs.ambr | 3 + tests/__snapshots__/test_basic_doc.ambr | 11 +++ tests/__snapshots__/test_external.ambr | 24 ++++++ tests/__snapshots__/test_extra_options.ambr | 11 +++ .../__snapshots__/test_need_constraints.ambr | 17 +++++ tests/__snapshots__/test_need_parts.ambr | 2 + tests/__snapshots__/test_needextend.ambr | 29 +++++++ tests/__snapshots__/test_needimport.ambr | 75 +++++++++++++++++++ tests/__snapshots__/test_needs_builder.ambr | 36 +++++++++ tests/__snapshots__/test_needs_from_toml.ambr | 1 + .../__snapshots__/test_needs_id_builder.ambr | 3 + tests/__snapshots__/test_service_github.ambr | 13 ++++ 14 files changed, 235 insertions(+), 2 deletions(-) diff --git a/docs/ubproject.toml b/docs/ubproject.toml index d9e06dcbe..fda6724bc 100644 --- a/docs/ubproject.toml +++ b/docs/ubproject.toml @@ -1,3 +1,12 @@ +"$schema" = "https://ubcode.useblocks.com/ubproject.schema.json" + +[parse.extend_directives.need-example] +argument = true +options = true +content = true +parse_content = true +content_required = true + [needs] extra_options = [ "my_extra_option", @@ -17,7 +26,7 @@ show_link_type = false show_link_title = false title_optional = true max_title_length = 75 -id_regex = "^[A-Za-z0-9_]*" +id_regex = "^[A-Za-z0-9_]+" id_required = false table_style = "datatables" table_columns = "ID;TITLE;STATUS;OUTGOING" diff --git a/sphinx_needs/data.py b/sphinx_needs/data.py index 15714111c..a01a4af12 100644 --- a/sphinx_needs/data.py +++ b/sphinx_needs/data.py @@ -82,7 +82,6 @@ class CoreFieldParameters(TypedDict): "lineno": { "description": "Line number where the need is defined (None if external).", "schema": {"type": ["integer", "null"], "default": None}, - "exclude_json": True, "exclude_external": True, "exclude_import": True, }, diff --git a/tests/__snapshots__/test_add_sections_sigs.ambr b/tests/__snapshots__/test_add_sections_sigs.ambr index 3af0c744b..0dcf95f97 100644 --- a/tests/__snapshots__/test_add_sections_sigs.ambr +++ b/tests/__snapshots__/test_add_sections_sigs.ambr @@ -9,6 +9,7 @@ 'impacts': 'component_a', 'introduced': '1.0.0', 'layout': '', + 'lineno': 9, 'section_name': '1.1 First Section', 'sections': list([ '1.1 First Section', @@ -32,6 +33,7 @@ 'impacts': 'component_b', 'introduced': '1.1.1', 'layout': '', + 'lineno': 20, 'section_name': '1.2 Second Section', 'sections': list([ '1.2 Second Section', @@ -52,6 +54,7 @@ 'full_title': 'test method', 'id': 'T_001', 'layout': '', + 'lineno': 40, 'section_name': '1.3 need in API', 'sections': list([ '1.3 need in API', diff --git a/tests/__snapshots__/test_basic_doc.ambr b/tests/__snapshots__/test_basic_doc.ambr index 604eda10b..e9f5f1a89 100644 --- a/tests/__snapshots__/test_basic_doc.ambr +++ b/tests/__snapshots__/test_basic_doc.ambr @@ -34,6 +34,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -103,6 +104,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 8, 'links': list([ ]), 'links_back': list([ @@ -329,6 +331,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_external.ambr b/tests/__snapshots__/test_external.ambr index 3e5c793a3..48630882e 100644 --- a/tests/__snapshots__/test_external.ambr +++ b/tests/__snapshots__/test_external.ambr @@ -24,6 +24,7 @@ 'full_title': 'REQ_01', 'id': 'IMP_REQ_01', 'layout': '', + 'lineno': 4, 'section_name': 'Title', 'sections': list([ 'Title', @@ -220,6 +221,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), @@ -497,6 +507,7 @@ 'is_part': False, 'jinja_content': False, 'layout': None, + 'lineno': None, 'links': list([ 'SPEC_1', ]), @@ -569,6 +580,7 @@ 'is_part': False, 'jinja_content': False, 'layout': None, + 'lineno': None, 'links': list([ 'EXT_TEST_01', 'REQ_1', @@ -644,6 +656,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 9, 'links': list([ ]), 'links_back': list([ @@ -715,6 +728,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 12, 'links': list([ 'REQ_1', 'EXT_TEST_01', @@ -787,6 +801,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -1013,6 +1028,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_extra_options.ambr b/tests/__snapshots__/test_extra_options.ambr index e07ea2c3b..e8e659288 100644 --- a/tests/__snapshots__/test_extra_options.ambr +++ b/tests/__snapshots__/test_extra_options.ambr @@ -13,6 +13,7 @@ 'impacts': 'component_a', 'introduced': '1.0.0', 'layout': '', + 'lineno': 7, 'section_name': 'Section 1', 'sections': list([ 'Section 1', @@ -36,6 +37,7 @@ 'impacts': 'component_b', 'introduced': '1.1.1', 'layout': '', + 'lineno': 16, 'section_name': 'Section 1', 'sections': list([ 'Section 1', @@ -250,6 +252,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_need_constraints.ambr b/tests/__snapshots__/test_need_constraints.ambr index fb6adc84e..26130144b 100644 --- a/tests/__snapshots__/test_need_constraints.ambr +++ b/tests/__snapshots__/test_need_constraints.ambr @@ -34,6 +34,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 20, 'links': list([ ]), 'links_back': list([ @@ -109,6 +110,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 25, 'links': list([ 'SECURITY_REQ', ]), @@ -185,6 +187,7 @@ 'is_part': False, 'jinja_content': False, 'layout': 'debug', + 'lineno': 32, 'links': list([ 'SECURITY_REQ', ]), @@ -259,6 +262,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 39, 'links': list([ ]), 'links_back': list([ @@ -328,6 +332,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -404,6 +409,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 11, 'links': list([ ]), 'links_back': list([ @@ -480,6 +486,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -553,6 +560,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 11, 'links': list([ ]), 'links_back': list([ @@ -779,6 +787,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_need_parts.ambr b/tests/__snapshots__/test_need_parts.ambr index 28f06ecc6..547d55644 100644 --- a/tests/__snapshots__/test_need_parts.ambr +++ b/tests/__snapshots__/test_need_parts.ambr @@ -24,6 +24,7 @@ 'full_title': 'Command line interface', 'id': 'SP_TOO_001', 'layout': '', + 'lineno': 4, 'parent_needs_back': list([ 'TEST_2', ]), @@ -100,6 +101,7 @@ 'full_title': 'TEST_2', 'id': 'TEST_2', 'layout': '', + 'lineno': 21, 'parent_need': 'SP_TOO_001', 'parent_needs': list([ 'SP_TOO_001', diff --git a/tests/__snapshots__/test_needextend.ambr b/tests/__snapshots__/test_needextend.ambr index f252927f2..182849287 100644 --- a/tests/__snapshots__/test_needextend.ambr +++ b/tests/__snapshots__/test_needextend.ambr @@ -34,6 +34,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ 'REQ_A_1', 'REQ_D_1', @@ -106,6 +107,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 7, 'links': list([ ]), 'links_back': list([ @@ -176,6 +178,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 10, 'links': list([ ]), 'links_back': list([ @@ -246,6 +249,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 13, 'links': list([ ]), 'links_back': list([ @@ -315,6 +319,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 16, 'links': list([ ]), 'links_back': list([ @@ -542,6 +547,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), @@ -822,6 +836,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 9, 'links': list([ 'extend_test_004', ]), @@ -897,6 +912,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 15, 'links': list([ ]), 'links_back': list([ @@ -972,6 +988,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 21, 'links': list([ ]), 'links_back': list([ @@ -1042,6 +1059,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 28, 'links': list([ 'extend_test_003', 'extend_test_004', @@ -1113,6 +1131,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 34, 'links': list([ 'extend_test_003', 'extend_test_004', @@ -1185,6 +1204,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 5, 'links': list([ ]), 'links_back': list([ @@ -1414,6 +1434,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_needimport.ambr b/tests/__snapshots__/test_needimport.ambr index 2db64ddf8..3122c2157 100644 --- a/tests/__snapshots__/test_needimport.ambr +++ b/tests/__snapshots__/test_needimport.ambr @@ -10,6 +10,7 @@ 'external_css': 'external_link', 'full_title': 'Implementation for specification', 'id': 'IMPL_01', + 'lineno': 4, 'links': list([ 'OWN_ID_123', ]), @@ -30,6 +31,7 @@ 'external_css': 'external_link', 'full_title': 'Specification of a requirement', 'id': 'OWN_ID_123', + 'lineno': 4, 'links': list([ 'R_F4722', ]), @@ -55,6 +57,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'REQ_001', + 'lineno': 4, 'links_back': list([ 'S_503A1', ]), @@ -75,6 +78,7 @@ 'full_title': 'Test requirement 1', 'id': 'REQ_1', 'layout': '', + 'lineno': 48, 'section_name': 'FILTERED', 'sections': list([ 'FILTERED', @@ -89,6 +93,7 @@ 'external_css': 'external_link', 'full_title': 'Sliced Bread', 'id': 'ROLES_REQ_1', + 'lineno': 4, 'links_back': list([ 'ROLES_REQ_2', ]), @@ -105,6 +110,7 @@ 'external_css': 'external_link', 'full_title': 'Butter on Bread', 'id': 'ROLES_REQ_2', + 'lineno': 4, 'links': list([ 'ROLES_REQ_1', ]), @@ -121,6 +127,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement B', 'id': 'R_22EB2', + 'lineno': 4, 'section_name': 'TEST DOCUMENT IMPORT', 'sections': list([ 'TEST DOCUMENT IMPORT', @@ -139,6 +146,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement A', 'id': 'R_2A9D0', + 'lineno': 4, 'section_name': 'TEST DOCUMENT IMPORT', 'sections': list([ 'TEST DOCUMENT IMPORT', @@ -162,6 +170,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'R_F4722', + 'lineno': 4, 'links_back': list([ 'OWN_ID_123', ]), @@ -185,6 +194,7 @@ 'full_title': 'Test specification 1', 'id': 'SPEC_1', 'layout': '', + 'lineno': 51, 'section_name': 'FILTERED', 'sections': list([ 'FILTERED', @@ -199,6 +209,7 @@ 'external_css': 'external_link', 'full_title': 'Specification B', 'id': 'S_01A67', + 'lineno': 4, 'section_name': 'TEST DOCUMENT IMPORT', 'sections': list([ 'TEST DOCUMENT IMPORT', @@ -224,6 +235,7 @@ 'external_css': 'external_link', 'full_title': 'Spec for a requirement', 'id': 'S_503A1', + 'lineno': 4, 'links': list([ 'REQ_001', ]), @@ -245,6 +257,7 @@ 'external_css': 'external_link', 'full_title': 'Specification A', 'id': 'S_D70B0', + 'lineno': 4, 'section_name': 'TEST DOCUMENT IMPORT', 'sections': list([ 'TEST DOCUMENT IMPORT', @@ -264,6 +277,7 @@ 'external_css': 'external_link', 'full_title': 'TEST IMPORT DESCRIPTION', 'id': 'TEST_01', + 'lineno': 4, 'section_name': 'TEST DOCUMENT IMPORT', 'sections': list([ 'TEST DOCUMENT IMPORT', @@ -277,6 +291,7 @@ 'external_css': 'external_link', 'full_title': 'Test 1', 'id': 'T_5CCAA', + 'lineno': 4, 'parent_needs_back': list([ 'T_C3893', ]), @@ -301,6 +316,7 @@ 'external_css': 'external_link', 'full_title': 'Test for XY', 'id': 'T_C3893', + 'lineno': 4, 'links': list([ 'OWN_ID_123', 'IMPL_01', @@ -329,6 +345,7 @@ 'external_css': 'external_link', 'full_title': 'Implementation for specification', 'id': 'collapsed_IMPL_01', + 'lineno': 16, 'links': list([ 'collapsed_OWN_ID_123', ]), @@ -355,6 +372,7 @@ 'external_css': 'external_link', 'full_title': 'Specification of a requirement', 'id': 'collapsed_OWN_ID_123', + 'lineno': 16, 'links': list([ 'collapsed_R_F4722', ]), @@ -385,6 +403,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'collapsed_REQ_001', + 'lineno': 16, 'links_back': list([ 'collapsed_S_503A1', ]), @@ -408,6 +427,7 @@ 'external_css': 'external_link', 'full_title': 'Sliced Bread', 'id': 'collapsed_ROLES_REQ_1', + 'lineno': 16, 'links_back': list([ 'collapsed_ROLES_REQ_2', ]), @@ -430,6 +450,7 @@ 'external_css': 'external_link', 'full_title': 'Butter on Bread', 'id': 'collapsed_ROLES_REQ_2', + 'lineno': 16, 'links': list([ 'collapsed_ROLES_REQ_1', ]), @@ -452,6 +473,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement B', 'id': 'collapsed_R_22EB2', + 'lineno': 16, 'section_name': 'COLLAPSED', 'sections': list([ 'COLLAPSED', @@ -474,6 +496,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement A', 'id': 'collapsed_R_2A9D0', + 'lineno': 16, 'section_name': 'COLLAPSED', 'sections': list([ 'COLLAPSED', @@ -501,6 +524,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'collapsed_R_F4722', + 'lineno': 16, 'links_back': list([ 'collapsed_OWN_ID_123', ]), @@ -527,6 +551,7 @@ 'external_css': 'external_link', 'full_title': 'Specification B', 'id': 'collapsed_S_01A67', + 'lineno': 16, 'section_name': 'COLLAPSED', 'sections': list([ 'COLLAPSED', @@ -556,6 +581,7 @@ 'external_css': 'external_link', 'full_title': 'Spec for a requirement', 'id': 'collapsed_S_503A1', + 'lineno': 16, 'links': list([ 'collapsed_REQ_001', ]), @@ -581,6 +607,7 @@ 'external_css': 'external_link', 'full_title': 'Specification A', 'id': 'collapsed_S_D70B0', + 'lineno': 16, 'section_name': 'COLLAPSED', 'sections': list([ 'COLLAPSED', @@ -604,6 +631,7 @@ 'external_css': 'external_link', 'full_title': 'TEST IMPORT DESCRIPTION', 'id': 'collapsed_TEST_01', + 'lineno': 16, 'section_name': 'COLLAPSED', 'sections': list([ 'COLLAPSED', @@ -623,6 +651,7 @@ 'external_css': 'external_link', 'full_title': 'Test 1', 'id': 'collapsed_T_5CCAA', + 'lineno': 16, 'parent_needs_back': list([ 'collapsed_T_C3893', ]), @@ -651,6 +680,7 @@ 'external_css': 'external_link', 'full_title': 'Test for XY', 'id': 'collapsed_T_C3893', + 'lineno': 16, 'links': list([ 'collapsed_OWN_ID_123', 'collapsed_IMPL_01', @@ -683,6 +713,7 @@ 'external_css': 'external_link', 'full_title': 'Implementation for specification', 'id': 'filter_IMPL_01', + 'lineno': 29, 'links': list([ 'OWN_ID_123', ]), @@ -704,6 +735,7 @@ 'external_css': 'external_link', 'full_title': 'Implementation for specification', 'id': 'hidden_IMPL_01', + 'lineno': 9, 'links': list([ 'hidden_OWN_ID_123', ]), @@ -735,6 +767,7 @@ 'external_css': 'external_link', 'full_title': 'Specification of a requirement', 'id': 'hidden_OWN_ID_123', + 'lineno': 9, 'links': list([ 'hidden_R_F4722', ]), @@ -770,6 +803,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'hidden_REQ_001', + 'lineno': 9, 'links_back': list([ 'hidden_S_503A1', ]), @@ -798,6 +832,7 @@ 'external_css': 'external_link', 'full_title': 'Sliced Bread', 'id': 'hidden_ROLES_REQ_1', + 'lineno': 9, 'links_back': list([ 'hidden_ROLES_REQ_2', ]), @@ -825,6 +860,7 @@ 'external_css': 'external_link', 'full_title': 'Butter on Bread', 'id': 'hidden_ROLES_REQ_2', + 'lineno': 9, 'links': list([ 'hidden_ROLES_REQ_1', ]), @@ -852,6 +888,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement B', 'id': 'hidden_R_22EB2', + 'lineno': 9, 'parent_need': 'hidden_ROLES_REQ_2', 'parent_needs': list([ 'hidden_ROLES_REQ_2', @@ -879,6 +916,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement A', 'id': 'hidden_R_2A9D0', + 'lineno': 9, 'parent_need': 'hidden_R_22EB2', 'parent_needs': list([ 'hidden_R_22EB2', @@ -911,6 +949,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'hidden_R_F4722', + 'lineno': 9, 'links_back': list([ 'hidden_OWN_ID_123', ]), @@ -942,6 +981,7 @@ 'external_css': 'external_link', 'full_title': 'Specification B', 'id': 'hidden_S_01A67', + 'lineno': 9, 'parent_need': 'hidden_R_F4722', 'parent_needs': list([ 'hidden_R_F4722', @@ -976,6 +1016,7 @@ 'external_css': 'external_link', 'full_title': 'Spec for a requirement', 'id': 'hidden_S_503A1', + 'lineno': 9, 'links': list([ 'hidden_REQ_001', ]), @@ -1006,6 +1047,7 @@ 'external_css': 'external_link', 'full_title': 'Specification A', 'id': 'hidden_S_D70B0', + 'lineno': 9, 'parent_need': 'hidden_S_503A1', 'parent_needs': list([ 'hidden_S_503A1', @@ -1034,6 +1076,7 @@ 'external_css': 'external_link', 'full_title': 'TEST IMPORT DESCRIPTION', 'id': 'hidden_TEST_01', + 'lineno': 9, 'parent_needs_back': list([ 'hidden_IMPL_01', ]), @@ -1054,6 +1097,7 @@ 'external_css': 'external_link', 'full_title': 'Test 1', 'id': 'hidden_T_5CCAA', + 'lineno': 9, 'parent_need': 'hidden_S_D70B0', 'parent_needs': list([ 'hidden_S_D70B0', @@ -1084,6 +1128,7 @@ 'external_css': 'external_link', 'full_title': 'Test for XY', 'id': 'hidden_T_C3893', + 'lineno': 9, 'links': list([ 'hidden_OWN_ID_123', 'hidden_IMPL_01', @@ -1113,6 +1158,7 @@ 'external_css': 'external_link', 'full_title': 'Sliced Bread', 'id': 'ids_ROLES_REQ_1', + 'lineno': 34, 'links_back': list([ 'ids_ROLES_REQ_2', ]), @@ -1133,6 +1179,7 @@ 'external_css': 'external_link', 'full_title': 'Butter on Bread', 'id': 'ids_ROLES_REQ_2', + 'lineno': 34, 'links': list([ 'ids_ROLES_REQ_1', ]), @@ -1154,6 +1201,7 @@ 'external_css': 'external_link', 'full_title': 'AAA', 'id': 'small2_TEST_03', + 'lineno': 8, 'section_name': 'Filter', 'sections': list([ 'Filter', @@ -1169,6 +1217,7 @@ 'external_css': 'external_link', 'full_title': 'TEST_02 DESCRIPTION', 'id': 'small_TEST_02', + 'lineno': 4, 'section_name': 'Filter', 'sections': list([ 'Filter', @@ -1188,6 +1237,7 @@ 'external_css': 'external_link', 'full_title': 'TEST_02 DESCRIPTION', 'id': 'small_abs_path_TEST_02', + 'lineno': 6, 'section_name': 'Absolute path import test', 'sections': list([ 'Absolute path import test', @@ -1207,6 +1257,7 @@ 'external_css': 'external_link', 'full_title': 'TEST_01 DESCRIPTION', 'id': 'small_depr_rel_path_TEST_01', + 'lineno': 6, 'section_name': 'Deprecated Relative path import test', 'sections': list([ 'Deprecated Relative path import test', @@ -1221,6 +1272,7 @@ 'external_css': 'external_link', 'full_title': 'TEST_01 DESCRIPTION', 'id': 'small_rel_path_TEST_01', + 'lineno': 6, 'section_name': 'Relative path import test', 'sections': list([ 'Relative path import test', @@ -1235,6 +1287,7 @@ 'external_css': 'external_link', 'full_title': 'Implementation for specification', 'id': 'test_IMPL_01', + 'lineno': 23, 'links': list([ 'test_OWN_ID_123', ]), @@ -1260,6 +1313,7 @@ 'external_css': 'external_link', 'full_title': 'Specification of a requirement', 'id': 'test_OWN_ID_123', + 'lineno': 23, 'links': list([ 'test_R_F4722', ]), @@ -1289,6 +1343,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'test_REQ_001', + 'lineno': 23, 'links_back': list([ 'test_S_503A1', ]), @@ -1311,6 +1366,7 @@ 'external_css': 'external_link', 'full_title': 'Sliced Bread', 'id': 'test_ROLES_REQ_1', + 'lineno': 23, 'links_back': list([ 'test_ROLES_REQ_2', ]), @@ -1332,6 +1388,7 @@ 'external_css': 'external_link', 'full_title': 'Butter on Bread', 'id': 'test_ROLES_REQ_2', + 'lineno': 23, 'links': list([ 'test_ROLES_REQ_1', ]), @@ -1353,6 +1410,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement B', 'id': 'test_R_22EB2', + 'lineno': 23, 'section_name': 'TEST', 'sections': list([ 'TEST', @@ -1374,6 +1432,7 @@ 'external_css': 'external_link', 'full_title': 'Requirement A', 'id': 'test_R_2A9D0', + 'lineno': 23, 'section_name': 'TEST', 'sections': list([ 'TEST', @@ -1400,6 +1459,7 @@ 'external_css': 'external_link', 'full_title': 'My first requirement', 'id': 'test_R_F4722', + 'lineno': 23, 'links_back': list([ 'test_OWN_ID_123', ]), @@ -1425,6 +1485,7 @@ 'external_css': 'external_link', 'full_title': 'Specification B', 'id': 'test_S_01A67', + 'lineno': 23, 'section_name': 'TEST', 'sections': list([ 'TEST', @@ -1453,6 +1514,7 @@ 'external_css': 'external_link', 'full_title': 'Spec for a requirement', 'id': 'test_S_503A1', + 'lineno': 23, 'links': list([ 'test_REQ_001', ]), @@ -1477,6 +1539,7 @@ 'external_css': 'external_link', 'full_title': 'Specification A', 'id': 'test_S_D70B0', + 'lineno': 23, 'section_name': 'TEST', 'sections': list([ 'TEST', @@ -1499,6 +1562,7 @@ 'external_css': 'external_link', 'full_title': 'TEST IMPORT DESCRIPTION', 'id': 'test_TEST_01', + 'lineno': 23, 'section_name': 'TEST', 'sections': list([ 'TEST', @@ -1517,6 +1581,7 @@ 'external_css': 'external_link', 'full_title': 'Test 1', 'id': 'test_T_5CCAA', + 'lineno': 23, 'parent_needs_back': list([ 'test_T_C3893', ]), @@ -1544,6 +1609,7 @@ 'external_css': 'external_link', 'full_title': 'Test for XY', 'id': 'test_T_C3893', + 'lineno': 23, 'links': list([ 'test_OWN_ID_123', 'test_IMPL_01', @@ -1757,6 +1823,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_needs_builder.ambr b/tests/__snapshots__/test_needs_builder.ambr index 7ce104720..a095bbbac 100644 --- a/tests/__snapshots__/test_needs_builder.ambr +++ b/tests/__snapshots__/test_needs_builder.ambr @@ -34,6 +34,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 8, 'links': list([ ]), 'links_back': list([ @@ -103,6 +104,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 12, 'links': list([ ]), 'links_back': list([ @@ -172,6 +174,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -399,6 +402,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), @@ -818,6 +830,7 @@ 'full_title': 'Test example', 'id': 'TC_001', 'layout': '', + 'lineno': 8, 'section_name': 'TEST DOCUMENT NEEDS Builder', 'sections': list([ 'TEST DOCUMENT NEEDS Builder', @@ -833,6 +846,7 @@ 'full_title': 'Negative test example', 'id': 'TC_NEG_001', 'layout': '', + 'lineno': 12, 'section_name': 'TEST DOCUMENT NEEDS Builder', 'sections': list([ 'TEST DOCUMENT NEEDS Builder', @@ -848,6 +862,7 @@ 'full_title': 'A story', 'id': 'US_63252', 'layout': '', + 'lineno': 4, 'section_name': 'TEST DOCUMENT NEEDS Builder', 'sections': list([ 'TEST DOCUMENT NEEDS Builder', @@ -1048,6 +1063,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), @@ -1491,6 +1515,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 8, 'links': list([ ]), 'links_back': list([ @@ -1560,6 +1585,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 12, 'links': list([ ]), 'links_back': list([ @@ -1629,6 +1655,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ @@ -1856,6 +1883,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]), diff --git a/tests/__snapshots__/test_needs_from_toml.ambr b/tests/__snapshots__/test_needs_from_toml.ambr index dd3933cfc..aedbd26c0 100644 --- a/tests/__snapshots__/test_needs_from_toml.ambr +++ b/tests/__snapshots__/test_needs_from_toml.ambr @@ -11,6 +11,7 @@ 'full_title': 'Test need', 'id': 'O_001', 'layout': '', + 'lineno': 4, 'section_name': 'TEST DOCUMENT', 'sections': list([ 'TEST DOCUMENT', diff --git a/tests/__snapshots__/test_needs_id_builder.ambr b/tests/__snapshots__/test_needs_id_builder.ambr index f84654dc1..6fc506ea8 100644 --- a/tests/__snapshots__/test_needs_id_builder.ambr +++ b/tests/__snapshots__/test_needs_id_builder.ambr @@ -35,6 +35,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 8, 'links': list([ ]), 'links_back': list([ @@ -114,6 +115,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 12, 'links': list([ ]), 'links_back': list([ @@ -193,6 +195,7 @@ 'is_part': False, 'jinja_content': False, 'layout': '', + 'lineno': 4, 'links': list([ ]), 'links_back': list([ diff --git a/tests/__snapshots__/test_service_github.ambr b/tests/__snapshots__/test_service_github.ambr index b164a9809..862de1b7b 100644 --- a/tests/__snapshots__/test_service_github.ambr +++ b/tests/__snapshots__/test_service_github.ambr @@ -37,6 +37,7 @@ 'is_part': False, 'jinja_content': False, 'layout': 'github', + 'lineno': 19, 'links': list([ ]), 'links_back': list([ @@ -113,6 +114,7 @@ 'is_part': False, 'jinja_content': False, 'layout': 'github', + 'lineno': 6, 'links': list([ ]), 'links_back': list([ @@ -212,6 +214,7 @@ 'is_part': False, 'jinja_content': False, 'layout': 'github', + 'lineno': 11, 'links': list([ ]), 'links_back': list([ @@ -295,6 +298,7 @@ 'is_part': False, 'jinja_content': False, 'layout': 'github', + 'lineno': 15, 'links': list([ ]), 'links_back': list([ @@ -515,6 +519,15 @@ 'null', ]), }), + 'lineno': dict({ + 'default': None, + 'description': 'Line number where the need is defined (None if external).', + 'field_type': 'core', + 'type': list([ + 'integer', + 'null', + ]), + }), 'links': dict({ 'default': list([ ]),