mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 10:13:19 +02:00
The connectivity routine would consider symbols, overwriting unused subgraphs for pins that were not in the change list. This is resolved by updating the full connectivity to only use pins in the graph since symbols are not connected independently. In the process of adding QA tests for this change, additional issues with the schematic QA were discovered. Specifically, we were not properly setting the root sheet UUID. This was partially masked by a const_cast setting of the RefDes in sch_symbol when called the RefDes getter. This exposed the fact that our QA ERC numbers did not match the schematic editor stand alone ERC numbers. So the test value for one check needed to be updated Fixes https://gitlab.com/kicad/code/kicad/-/issues/17528
87 lines
3.0 KiB
C++
87 lines
3.0 KiB
C++
/*
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
*
|
|
* Copyright (C) 2022 KiCad Developers, see AUTHORS.TXT for contributors.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 3
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, you may find one at
|
|
* http://www.gnu.org/licenses/
|
|
*/
|
|
|
|
#include <qa_utils/wx_utils/unit_test_utils.h>
|
|
#include <schematic_utils/schematic_file_util.h>
|
|
|
|
#include <connection_graph.h>
|
|
#include <schematic.h>
|
|
#include <erc_settings.h>
|
|
#include <erc.h>
|
|
#include <erc_report.h>
|
|
#include <settings/settings_manager.h>
|
|
#include <locale_io.h>
|
|
|
|
|
|
struct ERC_REGRESSION_TEST_FIXTURE
|
|
{
|
|
ERC_REGRESSION_TEST_FIXTURE() : m_settingsManager( true /* headless */ ) {}
|
|
|
|
SETTINGS_MANAGER m_settingsManager;
|
|
std::unique_ptr<SCHEMATIC> m_schematic;
|
|
};
|
|
|
|
|
|
BOOST_FIXTURE_TEST_CASE( ERCHierarchicalSchematics, ERC_REGRESSION_TEST_FIXTURE )
|
|
{
|
|
LOCALE_IO dummy;
|
|
|
|
// Check not-connected ERC errors
|
|
|
|
std::vector<std::pair<wxString, int>> tests =
|
|
{
|
|
{ "issue10926_1", 3 },
|
|
{ "issue12814", 0 },
|
|
{ "ERC_dynamic_power_symbol_test", 2 }
|
|
};
|
|
|
|
for( const std::pair<wxString, int>& test : tests )
|
|
{
|
|
KI_TEST::LoadSchematic( m_settingsManager, test.first, m_schematic );
|
|
|
|
ERC_SETTINGS& settings = m_schematic->ErcSettings();
|
|
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() );
|
|
|
|
// Skip the "Modified symbol" warning
|
|
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE;
|
|
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE;
|
|
|
|
m_schematic->ConnectionGraph()->RunERC();
|
|
|
|
ERC_TESTER tester( m_schematic.get() );
|
|
tester.TestConflictingBusAliases();
|
|
tester.TestMultUnitPinConflicts();
|
|
tester.TestMultiunitFootprints();
|
|
tester.TestNoConnectPins();
|
|
tester.TestPinToPin();
|
|
tester.TestSimilarLabels();
|
|
tester.TestTextVars( nullptr );
|
|
|
|
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING );
|
|
|
|
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MILLIMETRES );
|
|
|
|
BOOST_CHECK_MESSAGE( errors.GetCount() == test.second,
|
|
"Expected " << test.second << " errors in " << test.first.ToStdString()
|
|
<< " but got " << errors.GetCount() << "\n"
|
|
<< reportWriter.GetTextReport() );
|
|
}
|
|
}
|