diff --git a/tests/test_plot/test_gerber.py b/tests/test_plot/test_gerber.py index 2853ce12..e3f17197 100644 --- a/tests/test_plot/test_gerber.py +++ b/tests/test_plot/test_gerber.py @@ -40,6 +40,37 @@ ALL_LAYERS = ['B_Adhes', 'F_SilkS', 'Margin', ] +ALL_EXTS = ['gba', + 'gbr', + 'gbl', + 'gbr', + 'gbs', + 'gbp', + 'gbo', + 'gbr', + 'gbr', + 'gbr', + 'gbr', + 'gm1', + 'gta', + 'gbr', + 'gtl', + 'gbr', + 'gts', + 'gtp', + 'gto', + 'gbr', + ] +INNER_LAYERS = ['GND_Cu', + 'Power_Cu', + 'Signal1_Cu', + 'Signal2_Cu', + ] +INNER_EXTS = ['g2', + 'g5', + 'g3', + 'g4', + ] def test_gerber_2layer(): @@ -116,3 +147,34 @@ def test_gerber_variant_1(): check_layers_exist(ctx, 'test', prj, ALL_LAYERS, '_(test)') check_components(ctx, 'test', prj, ['F_Paste', 'F_Adhes'], '_(test)', ['R2'], ['C1', 'R1', 'R3', 'C2']) ctx.clean_up(keep_project=True) + + +def test_gerber_protel_1(): + prj = 'good-project' + ctx = context.TestContext('test_gerber_protel_1', prj, 'gerber_inner_protel_1', GERBER_DIR) + ctx.run() + exts = ALL_EXTS+INNER_EXTS + for n, suf in enumerate(ALL_LAYERS+INNER_LAYERS): + ctx.expect_out_file(os.path.join(GERBER_DIR, prj+'_'+suf+'.'+exts[n])) + ctx.clean_up() + + +def test_gerber_protel_2(): + prj = 'good-project' + ctx = context.TestContext('test_gerber_protel_2', prj, 'gerber_inner_protel_2', GERBER_DIR) + ctx.run() + inner = ['gin'+str(int(layer[-1])-1) for layer in INNER_EXTS] + exts = ALL_EXTS+inner + files = [] + for n, suf in enumerate(ALL_LAYERS+INNER_LAYERS): + ext = exts[n] + if ext == 'gm1': + ext = 'e_cut' + file = os.path.join(GERBER_DIR, prj+'_'+suf+'.'+ext.upper()) + ctx.expect_out_file(file) + files.append(file) + assert ctx.search_err('Layer "Inner layer 6" isn\'t used') + ctx.search_in_file(os.path.join(GERBER_DIR, 'Report.txt'), + ['Top layer: good-project_F_Cu.GTL', 'Basename: good-project']) + ctx.test_compress(prj+'-result.tar.gz', files) + ctx.clean_up() diff --git a/tests/yaml_samples/gerber_inner_protel_1.kibot.yaml b/tests/yaml_samples/gerber_inner_protel_1.kibot.yaml new file mode 100644 index 00000000..0ab03473 --- /dev/null +++ b/tests/yaml_samples/gerber_inner_protel_1.kibot.yaml @@ -0,0 +1,33 @@ +# Example KiBot config file for a basic 2-layer board +kibot: + version: 1 + +outputs: + - name: 'gerbers' + comment: "Gerbers for the Gerber god" + type: gerber + dir: gerberdir + options: + # generic layer options + exclude_edge_layer: false + exclude_pads_from_silkscreen: false + use_aux_axis_as_origin: false + plot_sheet_reference: false + plot_footprint_refs: true + plot_footprint_values: true + force_plot_invisible_refs_vals: false + tent_vias: true + + # gerber options + line_width: 0.15 + subtract_mask_from_silk: true + use_protel_extensions: true + gerber_precision: 4.6 + create_gerber_job_file: false + gerber_job_file: 'test-%f.%x' + use_gerber_x2_attributes: true + use_gerber_net_attributes: false + output: '%f_%i.%x' + + layers: all + diff --git a/tests/yaml_samples/gerber_inner_protel_2.kibot.yaml b/tests/yaml_samples/gerber_inner_protel_2.kibot.yaml new file mode 100644 index 00000000..9454a68f --- /dev/null +++ b/tests/yaml_samples/gerber_inner_protel_2.kibot.yaml @@ -0,0 +1,47 @@ +# Example KiBot config file for a basic 2-layer board +kibot: + version: 1 + +outputs: + - name: 'gerbers' + comment: "Gerbers for the Gerber god" + type: gerber + dir: gerberdir + options: + # generic layer options + exclude_edge_layer: false + exclude_pads_from_silkscreen: false + use_aux_axis_as_origin: false + plot_sheet_reference: false + plot_footprint_refs: true + plot_footprint_values: true + force_plot_invisible_refs_vals: false + tent_vias: true + # gerber options + line_width: 0.15 + subtract_mask_from_silk: true + use_protel_extensions: true + gerber_precision: 4.6 + create_gerber_job_file: false + gerber_job_file: 'test-%f.%x' + use_gerber_x2_attributes: true + use_gerber_net_attributes: false + output: '%f_%i.%x' + inner_extension_pattern: '.gin%n' + edge_cut_extension: '.e_cut' + uppercase_extensions: true + custom_reports: + - output: 'Report.txt' + content: 'Top layer: ${filename(F.Cu)}\nBasename: ${basename}\n' + + layers: [all, In6.Cu] + + - name: result + comment: Test tarball compress + type: compress + options: + format: TAR + compression: deflated + files: + - from_output: gerbers +