diff --git a/pcbnew/drc/drc_test_provider_library_parity.cpp b/pcbnew/drc/drc_test_provider_library_parity.cpp index 310b53d0b9..41219c0ddc 100644 --- a/pcbnew/drc/drc_test_provider_library_parity.cpp +++ b/pcbnew/drc/drc_test_provider_library_parity.cpp @@ -163,6 +163,15 @@ bool padsNeedUpdate( const PAD* a, const PAD* b ) TEST( a->GetDrillShape(), b->GetDrillShape() ); TEST( a->GetDrillSize(), b->GetDrillSize() ); + // Clearance and zone connection overrides are as likely to be set at the board level as in + // the library. + // + // If we ignore them and someone *does* change one of them in the library, then stale + // footprints won't be caught. + // + // On the other hand, if we report them then boards that override at the board level are + // going to be VERY noisy. +#if 0 TEST( a->GetLocalClearance(), b->GetLocalClearance() ); TEST( a->GetLocalSolderMaskMargin(), b->GetLocalSolderMaskMargin() ); TEST( a->GetLocalSolderPasteMargin(), b->GetLocalSolderPasteMargin() ); @@ -173,6 +182,7 @@ bool padsNeedUpdate( const PAD* a, const PAD* b ) TEST( a->GetThermalSpokeWidth(), b->GetThermalSpokeWidth() ); TEST_D( a->GetThermalSpokeAngle().AsDegrees(), b->GetThermalSpokeAngle().AsDegrees() ); TEST( a->GetCustomShapeInZoneOpt(), b->GetCustomShapeInZoneOpt() ); +#endif TEST( a->GetPrimitives().size(), b->GetPrimitives().size() ); @@ -349,22 +359,37 @@ bool FOOTPRINT::FootprintNeedsUpdate( const FOOTPRINT* aLibFootprint ) TEST_ATTR( GetAttributes(), aLibFootprint->GetAttributes(), FP_ALLOW_SOLDERMASK_BRIDGES ); TEST_ATTR( GetAttributes(), aLibFootprint->GetAttributes(), FP_ALLOW_MISSING_COURTYARD ); + // Clearance and zone connection overrides are as likely to be set at the board level as in + // the library. + // + // If we ignore them and someone *does* change one of them in the library, then stale + // footprints won't be caught. + // + // On the other hand, if we report them then boards that override at the board level are + // going to be VERY noisy. +#if 0 TEST( GetLocalClearance(), aLibFootprint->GetLocalClearance() ); TEST( GetLocalSolderMaskMargin(), aLibFootprint->GetLocalSolderMaskMargin() ); TEST( GetLocalSolderPasteMargin(), aLibFootprint->GetLocalSolderPasteMargin() ); TEST_D( GetLocalSolderPasteMarginRatio(), aLibFootprint->GetLocalSolderPasteMarginRatio() ); TEST( GetZoneConnection(), aLibFootprint->GetZoneConnection() ); +#endif // Text items are really problematic. We don't want to test the reference, but after that - // it gets messy. What about the value? Depends on whether or not it's a singleton part. + // it gets messy. + // + // What about the value? Depends on whether or not it's a singleton part. + // // And what about other texts? They might be added only to instances on the board, or even // changed for instances on the board. Or they might want to be tested for equality. + // // Currently we punt and ignore all the text items. // Drawings and pads are also somewhat problematic as there's no guarantee that they'll be // in the same order in the two footprints. Rather than building some sophisticated hashing - // algorithm we use the footprint sorting functions to attempt to sort them in the same order. + // algorithm we use the footprint sorting functions to attempt to sort them in the same + // order. std::set aShapes; std::copy_if( GraphicalItems().begin(), GraphicalItems().end(),