def test_migrate_snap_files_already_exists(self): os.makedirs('install') os.makedirs('stage') # Place the already-staged file with open('stage/foo', 'w') as f: f.write('staged') # Place the to-be-staged file with the same name with open('install/foo', 'w') as f: f.write('installed') files, dirs = pluginhandler._migratable_filesets('*', 'install') pluginhandler._migrate_files(files, dirs, 'install', 'stage') # Verify that the staged file is the one that was staged last with open('stage/foo', 'r') as f: self.assertEqual(f.read(), 'installed', 'Expected staging to allow overwriting of ' 'already-staged files')
def test_migrate_snap_files_already_exists(self): os.makedirs('install') os.makedirs('stage') # Place the already-staged file with open('stage/foo', 'w') as f: f.write('staged') # Place the to-be-staged file with the same name with open('install/foo', 'w') as f: f.write('installed') files, dirs = pluginhandler._migratable_filesets('*', 'install') pluginhandler._migrate_files(files, dirs, 'install', 'stage') # Verify that the staged file is the one that was staged last with open('stage/foo', 'r') as f: self.assertEqual( f.read(), 'installed', 'Expected staging to allow overwriting of ' 'already-staged files')
def test_migrate_snap_files(self): filesets = { 'nothing': { 'fileset': ['-*'], 'result': [] }, 'all': { 'fileset': ['*'], 'result': [ 'stage/1', 'stage/1/1a/1b', 'stage/1/1a', 'stage/1/a', 'stage/2', 'stage/2/2a', 'stage/3', 'stage/3/a', 'stage/a', 'stage/b', ], }, 'no1': { 'fileset': ['-1'], 'result': [ 'stage/2', 'stage/2/2a', 'stage/3', 'stage/3/a', 'stage/a', 'stage/b', ], }, 'onlya': { 'fileset': ['a'], 'result': [ 'stage/a', ], }, 'onlybase': { 'fileset': ['*', '-*/*'], 'result': [ 'stage/a', 'stage/b', 'stage/1', 'stage/2', 'stage/3', ], }, 'nostara': { 'fileset': ['-*/a'], 'result': [ 'stage/1', 'stage/1/1a/1b', 'stage/1/1a', 'stage/2', 'stage/2/2a', 'stage/3', 'stage/a', 'stage/b', ], }, } for key in filesets: with self.subTest(key=key): tmpdirObject = tempfile.TemporaryDirectory() self.addCleanup(tmpdirObject.cleanup) tmpdir = tmpdirObject.name srcdir = tmpdir + '/install' os.makedirs(tmpdir + '/install/1/1a/1b') os.makedirs(tmpdir + '/install/2/2a') os.makedirs(tmpdir + '/install/3') open(tmpdir + '/install/a', mode='w').close() open(tmpdir + '/install/b', mode='w').close() open(tmpdir + '/install/1/a', mode='w').close() open(tmpdir + '/install/3/a', mode='w').close() dstdir = tmpdir + '/stage' os.makedirs(dstdir) files, dirs = pluginhandler._migratable_filesets( filesets[key]['fileset'], srcdir) pluginhandler._migrate_files(files, dirs, srcdir, dstdir) expected = [] for item in filesets[key]['result']: expected.append(os.path.join(tmpdir, item)) expected.sort() result = [] for root, subdirs, files in os.walk(dstdir): for item in files: result.append(os.path.join(root, item)) for item in subdirs: result.append(os.path.join(root, item)) result.sort() self.assertEqual(expected, result)