From 115c8b691369cff8e8fbdf10d97ad8662b9d8892 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 27 Dec 2021 14:10:02 -0300 Subject: [PATCH] Adapted YAML and SCH error tests to KiCad 6 RC1 - Most SCH test are disabled because this is another parser. --- .../v6_errors/error_no_signature.kicad_sch | 1 + tests/test_plot/test_sch_errors.py | 165 ++++++++++++------ tests/test_plot/test_yaml_errors.py | 8 +- 3 files changed, 116 insertions(+), 58 deletions(-) create mode 100644 tests/board_samples/kicad_6/v6_errors/error_no_signature.kicad_sch diff --git a/tests/board_samples/kicad_6/v6_errors/error_no_signature.kicad_sch b/tests/board_samples/kicad_6/v6_errors/error_no_signature.kicad_sch new file mode 100644 index 00000000..421376db --- /dev/null +++ b/tests/board_samples/kicad_6/v6_errors/error_no_signature.kicad_sch @@ -0,0 +1 @@ +dummy diff --git a/tests/test_plot/test_sch_errors.py b/tests/test_plot/test_sch_errors.py index 709e1b3d..075dade9 100644 --- a/tests/test_plot/test_sch_errors.py +++ b/tests/test_plot/test_sch_errors.py @@ -21,7 +21,7 @@ from kibot.misc import CORRUPTED_SCH def setup_ctx(test_dir, test, error): - sch = 'v5_errors/error_'+test + sch = ('v5' if context.ki5() else 'v6')+'_errors/error_'+test test = 'test_sch_errors_'+test ctx = context.TestContextSCH(test_dir, test, sch, 'int_bom_simple_csv', None) ctx.run(CORRUPTED_SCH) @@ -30,35 +30,43 @@ def setup_ctx(test_dir, test, error): def test_sch_errors_no_signature(test_dir): - setup_ctx(test_dir, 'no_signature', 'No eeschema signature') + sig = 'eeschema' if context.ki5() else 'kicad_sch' + setup_ctx(test_dir, 'no_signature', 'No '+sig+' signature') def test_sch_errors_no_eelayer(test_dir): - setup_ctx(test_dir, 'no_eelayer', 'Missing EELAYER') + if context.ki5(): + setup_ctx(test_dir, 'no_eelayer', 'Missing EELAYER') def test_sch_errors_no_eelayer_end(test_dir): - setup_ctx(test_dir, 'no_eelayer_end', 'Missing EELAYER END') + if context.ki5(): + setup_ctx(test_dir, 'no_eelayer_end', 'Missing EELAYER END') def test_sch_errors_unknown_def(test_dir): - setup_ctx(test_dir, 'unknown_def', 'Unknown definition') + if context.ki5(): + setup_ctx(test_dir, 'unknown_def', 'Unknown definition') def test_sch_errors_eof(test_dir): - setup_ctx(test_dir, 'eof', 'Unexpected end of file') + if context.ki5(): + setup_ctx(test_dir, 'eof', 'Unexpected end of file') def test_sch_errors_l1(test_dir): - setup_ctx(test_dir, 'l1', 'Unexpected end of file') + if context.ki5(): + setup_ctx(test_dir, 'l1', 'Unexpected end of file') def test_sch_errors_l2(test_dir): - setup_ctx(test_dir, 'l2', 'Unexpected end of file') + if context.ki5(): + setup_ctx(test_dir, 'l2', 'Unexpected end of file') def test_sch_errors_l3(test_dir): - setup_ctx(test_dir, 'l3', 'Malformed component field') + if context.ki5(): + setup_ctx(test_dir, 'l3', 'Malformed component field') # Now we support it: @@ -67,6 +75,8 @@ def test_sch_errors_l3(test_dir): def test_sch_errors_l5(test_dir): + if context.ki6(): + return setup_ctx(test_dir, 'l5', ['Unknown poligon definition', 'Expected 6 coordinates and got 8 in poligon', 'Unknown square definition', 'Unknown circle definition', 'Unknown arc definition', 'Unknown text definition', 'Unknown pin definition', 'Failed to load component definition', @@ -74,186 +84,233 @@ def test_sch_errors_l5(test_dir): def test_sch_errors_l6(test_dir): - setup_ctx(test_dir, 'l6', 'Missing library signature') + if context.ki5(): + setup_ctx(test_dir, 'l6', 'Missing library signature') def test_sch_errors_l7(test_dir): - setup_ctx(test_dir, 'l7', 'Unknown library entry') + if context.ki5(): + setup_ctx(test_dir, 'l7', 'Unknown library entry') def test_sch_errors_l8(test_dir): - setup_ctx(test_dir, 'l8', ['Unknown DCM entry', 'Unknown DCM attribute']) + if context.ki5(): + setup_ctx(test_dir, 'l8', ['Unknown DCM entry', 'Unknown DCM attribute']) def test_sch_errors_l9(test_dir): - setup_ctx(test_dir, 'l9', ['Missing DCM signature', 'Component (.*?) is not annotated']) + if context.ki5(): + setup_ctx(test_dir, 'l9', ['Missing DCM signature', 'Component (.*?) is not annotated']) def test_sch_errors_field(test_dir): - setup_ctx(test_dir, 'field', 'Malformed component field') + if context.ki5(): + setup_ctx(test_dir, 'field', 'Malformed component field') def test_sch_errors_field_name(test_dir): - setup_ctx(test_dir, 'field_name', 'Missing component field name') + if context.ki5(): + setup_ctx(test_dir, 'field_name', 'Missing component field name') def test_sch_errors_ar(test_dir): + if context.ki6(): + return setup_ctx(test_dir, 'ar', ['Unknown AR field .?Bogus.?', 'Alternative Reference without path', 'Alternative Reference without reference', 'Component `U1` without the basic fields', 'Footprint with more than one colon']) def test_sch_errors_miss_label(test_dir): - setup_ctx(test_dir, 'miss_label', 'Missing component label') + if context.ki5(): + setup_ctx(test_dir, 'miss_label', 'Missing component label') def test_sch_errors_bad_label(test_dir): - setup_ctx(test_dir, 'bad_label', 'Malformed component label') + if context.ki5(): + setup_ctx(test_dir, 'bad_label', 'Malformed component label') def test_sch_errors_miss_unit(test_dir): - setup_ctx(test_dir, 'miss_unit', 'Missing component unit') + if context.ki5(): + setup_ctx(test_dir, 'miss_unit', 'Missing component unit') def test_sch_errors_bad_unit(test_dir): - setup_ctx(test_dir, 'bad_unit', 'Malformed component unit') + if context.ki5(): + setup_ctx(test_dir, 'bad_unit', 'Malformed component unit') def test_sch_errors_miss_pos(test_dir): - setup_ctx(test_dir, 'miss_pos', 'Missing component position') + if context.ki5(): + setup_ctx(test_dir, 'miss_pos', 'Missing component position') def test_sch_errors_bad_pos(test_dir): - setup_ctx(test_dir, 'bad_pos', ['Malformed component position', 'Inconsistent position for component']) + if context.ki5(): + setup_ctx(test_dir, 'bad_pos', ['Malformed component position', 'Inconsistent position for component']) def test_sch_errors_miss_red_pos(test_dir): - setup_ctx(test_dir, 'miss_red_pos', 'Missing component redundant position') + if context.ki5(): + setup_ctx(test_dir, 'miss_red_pos', 'Missing component redundant position') def test_sch_errors_bad_red_pos(test_dir): - setup_ctx(test_dir, 'bad_red_pos', 'Malformed component redundant position') + if context.ki5(): + setup_ctx(test_dir, 'bad_red_pos', 'Malformed component redundant position') def test_sch_errors_miss_matrix(test_dir): - setup_ctx(test_dir, 'miss_matrix', 'Missing component orientation matrix') + if context.ki5(): + setup_ctx(test_dir, 'miss_matrix', 'Missing component orientation matrix') def test_sch_errors_bad_matrix(test_dir): - setup_ctx(test_dir, 'bad_matrix', 'Malformed component orientation matrix') + if context.ki5(): + setup_ctx(test_dir, 'bad_matrix', 'Malformed component orientation matrix') def test_sch_errors_wrong_ref(test_dir): - setup_ctx(test_dir, 'wrong_ref', 'Malformed component reference') + if context.ki5(): + setup_ctx(test_dir, 'wrong_ref', 'Malformed component reference') def test_sch_errors_bad_conn(test_dir): - setup_ctx(test_dir, 'bad_conn', 'Malformed no/connection') + if context.ki5(): + setup_ctx(test_dir, 'bad_conn', 'Malformed no/connection') def test_sch_errors_bad_text(test_dir): - setup_ctx(test_dir, 'bad_text', 'Malformed .?Text.?') + if context.ki5(): + setup_ctx(test_dir, 'bad_text', 'Malformed .?Text.?') def test_sch_errors_bad_text2(test_dir): - setup_ctx(test_dir, 'bad_text2', 'Missing .?Text.? shape') + if context.ki5(): + setup_ctx(test_dir, 'bad_text2', 'Missing .?Text.? shape') def test_sch_errors_bad_text3(test_dir): - setup_ctx(test_dir, 'bad_text3', 'Not a number in .?Text.?') + if context.ki5(): + setup_ctx(test_dir, 'bad_text3', 'Not a number in .?Text.?') def test_sch_errors_bad_wire(test_dir): - setup_ctx(test_dir, 'bad_wire', 'Malformed wire') + if context.ki5(): + setup_ctx(test_dir, 'bad_wire', 'Malformed wire') def test_sch_errors_bad_wire2(test_dir): - setup_ctx(test_dir, 'bad_wire2', 'Malformed wire') + if context.ki5(): + setup_ctx(test_dir, 'bad_wire2', 'Malformed wire') def test_sch_errors_bad_wire3(test_dir): - setup_ctx(test_dir, 'bad_wire3', 'Malformed wire') + if context.ki5(): + setup_ctx(test_dir, 'bad_wire3', 'Malformed wire') def test_sch_errors_bad_wire4(test_dir): - setup_ctx(test_dir, 'bad_wire4', 'Malformed wire') + if context.ki5(): + setup_ctx(test_dir, 'bad_wire4', 'Malformed wire') def test_sch_errors_bad_entry(test_dir): - setup_ctx(test_dir, 'bad_entry', 'Malformed entry') + if context.ki5(): + setup_ctx(test_dir, 'bad_entry', 'Malformed entry') def test_sch_errors_bmp_miss_pos(test_dir): - setup_ctx(test_dir, 'bmp_miss_pos', 'Missing bitmap position') + if context.ki5(): + setup_ctx(test_dir, 'bmp_miss_pos', 'Missing bitmap position') def test_sch_errors_bmp_bad_pos(test_dir): - setup_ctx(test_dir, 'bmp_bad_pos', 'Malformed bitmap position') + if context.ki5(): + setup_ctx(test_dir, 'bmp_bad_pos', 'Malformed bitmap position') def test_sch_errors_bmp_miss_sca(test_dir): - setup_ctx(test_dir, 'bmp_miss_sca', 'Missing bitmap scale') + if context.ki5(): + setup_ctx(test_dir, 'bmp_miss_sca', 'Missing bitmap scale') def test_sch_errors_bmp_bad_sca(test_dir): - setup_ctx(test_dir, 'bmp_bad_sca', 'Malformed bitmap scale') + if context.ki5(): + setup_ctx(test_dir, 'bmp_bad_sca', 'Malformed bitmap scale') def test_sch_errors_bmp_miss_dat(test_dir): - setup_ctx(test_dir, 'bmp_miss_dat', 'Missing bitmap data') + if context.ki5(): + setup_ctx(test_dir, 'bmp_miss_dat', 'Missing bitmap data') def test_sch_errors_bmp_bad_dat(test_dir): - setup_ctx(test_dir, 'bmp_bad_dat', 'Malformed bitmap data') + if context.ki5(): + setup_ctx(test_dir, 'bmp_bad_dat', 'Malformed bitmap data') def test_sch_errors_bmp_miss_end(test_dir): - setup_ctx(test_dir, 'bmp_miss_end', 'Missing end of bitmap') + if context.ki5(): + setup_ctx(test_dir, 'bmp_miss_end', 'Missing end of bitmap') def test_sch_errors_bad_plabel(test_dir): - setup_ctx(test_dir, 'bad_plabel', 'Malformed sheet port label') + if context.ki5(): + setup_ctx(test_dir, 'bad_plabel', 'Malformed sheet port label') def test_sch_errors_miss_spos(test_dir): - setup_ctx(test_dir, 'miss_spos', 'Missing sheet size and position') + if context.ki5(): + setup_ctx(test_dir, 'miss_spos', 'Missing sheet size and position') def test_sch_errors_bad_spos(test_dir): - setup_ctx(test_dir, 'bad_spos', 'Malformed sheet size and position') + if context.ki5(): + setup_ctx(test_dir, 'bad_spos', 'Malformed sheet size and position') def test_sch_errors_bad_slabel(test_dir): - setup_ctx(test_dir, 'bad_slabel', 'Malformed sheet label') + if context.ki5(): + setup_ctx(test_dir, 'bad_slabel', 'Malformed sheet label') def test_sch_errors_bad_sname(test_dir): - setup_ctx(test_dir, 'bad_sname', 'Malformed sheet name') + if context.ki5(): + setup_ctx(test_dir, 'bad_sname', 'Malformed sheet name') def test_sch_errors_miss_sname(test_dir): - setup_ctx(test_dir, 'miss_sname', 'Missing sub-sheet name') + if context.ki5(): + setup_ctx(test_dir, 'miss_sname', 'Missing sub-sheet name') def test_sch_errors_bad_sfname(test_dir): - setup_ctx(test_dir, 'bad_sfname', 'Malformed sheet file name') + if context.ki5(): + setup_ctx(test_dir, 'bad_sfname', 'Malformed sheet file name') def test_sch_errors_miss_sfname(test_dir): - setup_ctx(test_dir, 'miss_sfname', 'Missing sub-sheet file name') + if context.ki5(): + setup_ctx(test_dir, 'miss_sfname', 'Missing sub-sheet file name') def test_sch_errors_miss_descr(test_dir): - setup_ctx(test_dir, 'miss_descr', r'Missing \$Descr') + if context.ki5(): + setup_ctx(test_dir, 'miss_descr', r'Missing \$Descr') def test_sch_errors_bad_encoding(test_dir): - setup_ctx(test_dir, 'bad_encoding', 'Unsupported encoding') + if context.ki5(): + setup_ctx(test_dir, 'bad_encoding', 'Unsupported encoding') def test_sch_errors_bad_snum(test_dir): - setup_ctx(test_dir, 'bad_snum', 'Wrong sheet number') + if context.ki5(): + setup_ctx(test_dir, 'bad_snum', 'Wrong sheet number') def test_sch_errors_bad_tbentry(test_dir): - setup_ctx(test_dir, 'bad_tbentry', 'Wrong entry in title block') + if context.ki5(): + setup_ctx(test_dir, 'bad_tbentry', 'Wrong entry in title block') diff --git a/tests/test_plot/test_yaml_errors.py b/tests/test_plot/test_yaml_errors.py index 3eebc655..65b5a7ba 100644 --- a/tests/test_plot/test_yaml_errors.py +++ b/tests/test_plot/test_yaml_errors.py @@ -412,28 +412,28 @@ def test_error_hpgl_pen_num(test_dir): def test_error_bom_wrong_format(test_dir): ctx = context.TestContext(test_dir, 'BoMWrongFormat', PRJ, 'error_bom_wrong_format', '') - ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom.sch')]) + ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom'+context.KICAD_SCH_EXT)]) assert ctx.search_err("Option .?format.? must be any of") ctx.clean_up() def test_error_bom_column(test_dir): ctx = context.TestContext(test_dir, 'BoMColumn', PRJ, 'error_bom_column', '') - ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom.sch')]) + ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom'+context.KICAD_SCH_EXT)]) assert ctx.search_err("Invalid column name .?Impossible.?") ctx.clean_up() def test_error_bom_no_columns(test_dir): ctx = context.TestContext(test_dir, 'BoMNoColumns', PRJ, 'error_bom_column', '') - ctx.run(BOM_ERROR, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom_no_xml.sch')]) + ctx.run(BOM_ERROR, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'bom_no_xml'+context.KICAD_SCH_EXT)]) assert ctx.search_err("Failed to get the column names") ctx.clean_up() def test_error_bom_no_field(test_dir): ctx = context.TestContext(test_dir, 'BoMNoField', PRJ, 'error_bom_no_field', '') - ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'fail-erc.sch')]) + ctx.run(EXIT_BAD_CONFIG, no_board_file=True, extra=['-e', os.path.join(ctx.get_board_dir(), 'fail-erc'+context.KICAD_SCH_EXT)]) assert ctx.search_err("Missing or empty .?field.?") ctx.clean_up()