drc_proto: don't launch DRC providers with empty/incomplete rule sets
This commit is contained in:
parent
cf0bb60fbb
commit
a504bd0795
|
@ -207,10 +207,25 @@ void test::DRC_ENGINE::RunTests( )
|
||||||
|
|
||||||
|
|
||||||
inferImplicitRules();
|
inferImplicitRules();
|
||||||
|
|
||||||
CompileRules();
|
CompileRules();
|
||||||
|
|
||||||
for( auto provider : m_testProviders )
|
for( auto provider : m_testProviders )
|
||||||
{
|
{
|
||||||
|
bool skipProvider = false;
|
||||||
|
|
||||||
|
for( auto ruleID : provider->GetMatchingRuleIds() )
|
||||||
|
{
|
||||||
|
if( !HasCorrectRulesForId( ruleID ) )
|
||||||
|
{
|
||||||
|
ReportAux( wxString::Format( "DRC provider '%s' has no rules provided. Skipping run.", provider->GetName() ) );
|
||||||
|
skipProvider = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( skipProvider )
|
||||||
|
continue;
|
||||||
|
|
||||||
drc_dbg(0, "Running test provider: '%s'\n", (const char *) provider->GetName().c_str() );
|
drc_dbg(0, "Running test provider: '%s'\n", (const char *) provider->GetName().c_str() );
|
||||||
ReportAux( wxString::Format( "Run DRC provider: '%s'", provider->GetName() ) );
|
ReportAux( wxString::Format( "Run DRC provider: '%s'", provider->GetName() ) );
|
||||||
provider->Run();
|
provider->Run();
|
||||||
|
@ -316,10 +331,10 @@ std::vector<test::DRC_RULE*> test::DRC_ENGINE::QueryRulesById( test::DRC_RULE_ID
|
||||||
std::vector<test::DRC_RULE*> rv;
|
std::vector<test::DRC_RULE*> rv;
|
||||||
|
|
||||||
auto dr = m_ruleMap[ruleID]->defaultRule;
|
auto dr = m_ruleMap[ruleID]->defaultRule;
|
||||||
|
|
||||||
assert( dr );
|
assert( dr );
|
||||||
|
|
||||||
if ( dr )
|
rv.push_back( dr );
|
||||||
rv.push_back( dr );
|
|
||||||
|
|
||||||
for( auto rule : m_ruleMap[ruleID]->sortedRules )
|
for( auto rule : m_ruleMap[ruleID]->sortedRules )
|
||||||
{
|
{
|
||||||
|
@ -331,3 +346,9 @@ std::vector<test::DRC_RULE*> test::DRC_ENGINE::QueryRulesById( test::DRC_RULE_ID
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool test::DRC_ENGINE::HasCorrectRulesForId( test::DRC_RULE_ID_T ruleID )
|
||||||
|
{
|
||||||
|
return m_ruleMap[ruleID]->defaultRule != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -148,6 +148,8 @@ public:
|
||||||
|
|
||||||
std::vector<DRC_RULE*> QueryRulesById( test::DRC_RULE_ID_T ruleID );
|
std::vector<DRC_RULE*> QueryRulesById( test::DRC_RULE_ID_T ruleID );
|
||||||
|
|
||||||
|
bool HasCorrectRulesForId( test::DRC_RULE_ID_T ruleID );
|
||||||
|
|
||||||
EDA_UNITS UserUnits() const
|
EDA_UNITS UserUnits() const
|
||||||
{
|
{
|
||||||
return EDA_UNITS::MILLIMETRES;
|
return EDA_UNITS::MILLIMETRES;
|
||||||
|
|
Loading…
Reference in New Issue