Rename the core package to periscopex, update UI/docs/Docker/deploy defaults to periscope.michelebigi.it, and keep legacy version/storage key aliases so existing projects keep working. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""KiCad BOM: Value/PNM as MPN when Manufacturer Part Number is empty."""
|
|
|
|
from pathlib import Path
|
|
|
|
from backend.periscopex.parsers import parse_bom
|
|
|
|
|
|
def test_parse_bom_uses_value_for_ic_when_mpn_column_empty(tmp_path: Path):
|
|
csv = tmp_path / "bom.csv"
|
|
csv.write_text(
|
|
"Reference,Qty,Value,DNP,Footprint,Datasheet,PNM\n"
|
|
"U1,1,TPS22965DSGR,,SON-8,,\n"
|
|
'"U9,U13",5,TPD2E007DCKR,,SOT-23,,\n'
|
|
"C1,1,100nF,,0805,,\n"
|
|
)
|
|
bom = parse_bom(csv, mpn_col="Manufacturer Part Number")
|
|
assert bom["U1"]["mpn"] == "TPS22965DSGR"
|
|
assert bom["U9"]["mpn"] == "TPD2E007DCKR"
|
|
assert bom["U13"]["mpn"] == "TPD2E007DCKR"
|
|
assert bom["C1"]["mpn"] is None
|
|
|
|
|
|
def test_parse_bom_keeps_pnm_and_datasheet_url(tmp_path: Path):
|
|
csv = tmp_path / "bom.csv"
|
|
csv.write_text(
|
|
"Reference,Value,PNM,Datasheet\n"
|
|
"U31,TMP117,TMP117NAIDRVR,https://www.ti.com/lit/ds/symlink/tmp117.pdf\n"
|
|
)
|
|
bom = parse_bom(csv, mpn_col="Manufacturer Part Number")
|
|
assert bom["U31"]["mpn"] == "TMP117NAIDRVR"
|
|
assert bom["U31"]["datasheet_url"].endswith("tmp117.pdf")
|