37#include <wx/filename.h> 
   55    wxFileName tmp( wxFileName::CreateTempFileName( wxS( 
"saveas" ) ) );
 
   56    wxString dirPath = tmp.GetPath();      
 
   57    wxString dirName = tmp.GetName();      
 
   58    wxRemoveFile( tmp.GetFullPath() );
 
   60    wxFileName base( dirPath, wxEmptyString ); 
 
   61    base.AppendDir( dirName );                 
 
   75    wxCopyFile( dataDir.GetFullPath() + wxS( 
"/issue13212.kicad_sch" ),
 
   76                m_srcDir.GetFullPath() + wxS( 
"/issue13212.kicad_sch" ) );
 
   77    wxCopyFile( dataDir.GetFullPath() + wxS( 
"/issue13212_subsheet_1.kicad_sch" ),
 
   78                m_srcDir.GetFullPath() + wxS( 
"/issue13212_subsheet_1.kicad_sch" ) );
 
   79    wxCopyFile( dataDir.GetFullPath() + wxS( 
"/issue13212_subsheet_2.kicad_sch" ),
 
   80                m_externalDir.GetFullPath() + wxS( 
"/issue13212_subsheet_2.kicad_sch" ) );
 
   83    rootFile.SetFullName( wxS( 
"issue13212.kicad_sch" ) );
 
   85    wxFFile file( rootFile.GetFullPath(), wxS( 
"rb" ) );
 
   87    file.ReadAll( &content );
 
   89    content.Replace( wxS( 
"issue13212_subsheet_2.kicad_sch" ),
 
   90                     wxS( 
"../external/issue13212_subsheet_2.kicad_sch" ) );
 
   91    wxFFile outFile( rootFile.GetFullPath(), wxS( 
"wb" ) );
 
   92    outFile.Write( content );
 
 
   99    fn.SetName( aRelativePath );
 
 
  111    wxFileName srcRoot = GetSchematicPath( wxS( 
"issue13212" ) );
 
  113    wxFileName destRoot( m_baseDir );
 
  114    destRoot.AppendDir( wxS( 
"new" ) );
 
  115    destRoot.AppendDir( wxS( 
"location" ) );
 
  116    destRoot.SetName( wxS( 
"issue13212" ) );
 
  118    { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString ); 
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
 
  120    std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
 
  123    m_schematic->Root().SetFileName( destRoot.GetFullName() );
 
  124    m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
 
  127                                  false, filenameMap, msg );
 
  133    for( 
size_t i = 0; i < screens.
GetCount(); i++ )
 
  137        if( wxString( s->
GetFileName() ).EndsWith( wxS( 
"issue13212_subsheet_1.kicad_sch" ) ) )
 
  139        else if( wxString( s->
GetFileName() ).EndsWith( wxS( 
"issue13212_subsheet_2.kicad_sch" ) ) )
 
  143    wxFileName internalExpected( destRoot.GetPath(), wxS( 
"issue13212_subsheet_1.kicad_sch" ) );
 
  146    wxFileName externalExpected( m_externalDir.GetFullPath(), wxS( 
"issue13212_subsheet_2.kicad_sch" ) );
 
  149    SCH_SHEET_LIST sheetList = m_schematic->BuildSheetListSortedByPageNumbers();
 
  151    wxString externalSheetPath;
 
  155        if( 
path.Last()->GetFileName().Contains( wxS( 
"issue13212_subsheet_2" ) ) )
 
  156            externalSheetPath = 
path.Last()->GetFileName();
 
  159    BOOST_CHECK_EQUAL( externalSheetPath, wxS( 
"../../external/issue13212_subsheet_2.kicad_sch" ) );
 
 
  167    wxFileName srcRoot = GetSchematicPath( wxS( 
"issue13212" ) );
 
  169    wxFileName destRoot( m_baseDir );
 
  170    destRoot.AppendDir( wxS( 
"destall" ) );
 
  171    destRoot.SetName( wxS( 
"issue13212" ) );
 
  173    { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString ); 
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
 
  175    std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
 
  178    m_schematic->Root().SetFileName( destRoot.GetFullName() );
 
  179    m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
 
  182                                  true, filenameMap, msg );
 
  187    for( 
size_t i = 0; i < screens.
GetCount(); i++ )
 
  191        if( wxString( s->
GetFileName() ).EndsWith( wxS( 
"issue13212_subsheet_2.kicad_sch" ) ) )
 
  195    wxFileName externalExpected( destRoot.GetPath(), wxS( 
"issue13212_subsheet_2.kicad_sch" ) );
 
 
  204    wxFileName srcRoot = GetSchematicPath( wxS( 
"issue13212" ) );
 
  206    wxFileName destRoot( m_baseDir );
 
  207    destRoot.AppendDir( wxS( 
"nocopy" ) );
 
  208    destRoot.SetName( wxS( 
"issue13212" ) );
 
  210    { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString ); 
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
 
  212    std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
 
  215    m_schematic->Root().SetFileName( destRoot.GetFullName() );
 
  216    m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
 
  219                                  false, filenameMap, msg );
 
  224    for( 
size_t i = 0; i < screens.
GetCount(); i++ )
 
  228        if( wxString( s->
GetFileName() ).EndsWith( wxS( 
"issue13212_subsheet_1.kicad_sch" ) ) )
 
  232    wxFileName internalExpected( m_srcDir.GetFullPath(), wxS( 
"issue13212_subsheet_1.kicad_sch" ) );
 
 
A generic fixture for loading schematics and associated settings for qa tests.
 
wxFileName GetSchematicPath(const wxString &aRelativePath)
 
SAVEAS_SUBSHEET_FIXTURE()
 
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
 
SCH_SCREEN * GetScreen(unsigned int aIndex) const
 
const wxString & GetFileName() const
 
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
bool PrepareSaveAsFiles(SCHEMATIC &aSchematic, SCH_SCREENS &aScreens, const wxFileName &aOldRoot, const wxFileName &aNewRoot, bool aSaveCopy, bool aCopySubsheets, bool aIncludeExternSheets, std::unordered_map< SCH_SCREEN *, wxString > &aFilenameMap, wxString &aErrorMsg)
 
static const std::string KiCadSchematicFileExtension
 
std::string GetEeschemaTestDataDir()
Get the configured location of Eeschema test data.
 
static void LoadSchematic(SCHEMATIC *aSchematic, SCH_SHEET *aRootSheet, const wxString &aFileName)
 
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
 
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
 
BOOST_AUTO_TEST_SUITE_END()
 
BOOST_AUTO_TEST_CASE(CopyInternalReferenceExternal)
 
BOOST_CHECK_EQUAL(result, "25.4")
 
Definition of file extensions used in Kicad.