def test_moveFileAboveTopLayer(self): os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() testFile = self.filesIn(level=0)[0] self.assertFalse(testFile.path.is_symlink()) runner.run(command=commands.Move, level='up', path=testFile.path) self.assertFalse(testFile.path.is_symlink())
def test_purelyDerivativeDirectoryHandling(self): from layers.cli import commands runner = Runner().applyDefaults().quiet() dirs = self.dirlinks dirs = [d for d in dirs if len(d.origin.listdir()) >= 2] d = dirs[0] testFile = d.origin.listdir()[0] originLayer = testFile.layer # Take one file from the directory and move it to the symlinked directory try: testFile.origin.move(inLayer=d.layer) # Confirm that it is not not a symlink self.assertFalse(d.isSymlink()) # Move it back testFile.origin.move(inLayer=originLayer) # The directory is still not a symlink # But now contains no files self.assertFalse(d.isSymlink()) # But now, if we sync, the sync function should # be able to recognize the fact that the directory # can be removed and replaced with a single symlink runner.run(command=commands.Sync, target_layer=self.layers[0].path) self.assertTrue(d.isSymlink()) except Exception as e: self.printFsStruct() raise e
def setUp(self): layers: [Path] = [ TEST_ENV / layerPath for layerPath in TEST_STRUCT['layers'] ] # Create testenv dir, and go in try: self._prev_cwd = Path(os.getcwd()).absolute() except: self._prev_cwd = Path("/") if TEST_ENV.exists(): subprocess.Popen(["rm", "-rf", TEST_ENV]).wait() # Make filestructur self._mkfs(TEST_ENV, TEST_STRUCT['paths']) # Chdir to root of new fs os.chdir(TEST_ENV) # Make the layers for layerPath in layers: Runner().quiet().run(command=commands.New, level=-1, target_layer=layers[0], mount=layerPath)
def test_missingOriginal(self): os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() #There should be a problem file = self.filesIn(level=0)[0] # Remove the original file.path.unlink() # Confirm the error self.assertTrue(self.verify()) # Purge runner.run(command=commands.Purge) # Error running sync self.assertFalse(self.verify())
def test_missingSymlink(self): os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() #There should be no problems file = self.filesIn(level=0)[0] # Remove a symlink file.inLevel(1).path.unlink() # Confirm the error self.assertTrue(self.verify()) # Run sync runner.run(command=commands.Sync) # The error is gone self.assertFalse(self.verify())
def test_renameFile(self): os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() testFile = self.files[0] newName = '46031CAD-C9C0-4E79-9BCA-AF9C876C3EC0' try: runner.run(command=commands.Move, level='bottom', path=testFile.localPath, new_path=testFile.withName(newName).localPath) except Exception as e: self.printFsStruct() raise e self.assertFalse(testFile.path.exists()) self.assertTrue(testFile.withName(newName).path.exists()) self.assertVerify()
def test_moveFileToSymlinkedDirectory(self): from layers.lib import LayerLocalPath # Find the symlinks that point to a directory symdirs: [LayerLocalPath] = self.dirlinks # Find the ones that themselves contain a directory symdirs = [ s for s in symdirs if [p for p in s.path.glob('*') if p.is_dir()] ] # And a file symdirs = [ s for s in symdirs if [p for p in s.path.glob('*') if p.is_file()] ] # Pick any symdir = symdirs[0] # Fileter for directories dirtargets = [ t for t in symdir.path.resolve().glob('*') if t.resolve().is_dir() ] # Fileter for files filetargets = [ t for t in symdir.path.resolve().glob('*') if t.resolve().is_file() ] dirtarget = dirtargets[0] filetarget = filetargets[0] os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() runner.run(command=commands.Move, path=dirtarget, level=symdir.layer.level) runner.run(command=commands.Move, path=filetarget, level=symdir.layer.level)
def test_moveTopBottom(self): runner = Runner().quiet().applyDefaults() os.chdir(self.layers[0].path) testFile = self.filesIn(level=-1)[0] runner.run(command=commands.Move, level='top', path=testFile.path) self.assertTrue(testFile.path.is_symlink()) self.assertFalse( testFile.inLayer(layer=self.layers[0]).path.is_symlink()) testFile = self.filesIn(level=0)[0] runner.run(command=commands.Move, level='bottom', path=testFile.path) self.assertTrue(testFile.path.is_symlink()) self.assertFalse( testFile.inLayer(layer=self.layers[-1]).path.is_symlink()) self.assertVerify()
def test_moveUpDown(self): import contextlib os.chdir(self.layers[0].path) runner = Runner().quiet().applyDefaults() testFile = self.filesIn(level=2)[0] runner.run(command=commands.Move, level="up", path=testFile.path) self.assertTrue(testFile.path.is_symlink()) self.assertFalse( testFile.inLayer(layer=self.layers[1]).path.is_symlink()) testFile = self.filesIn(level=0)[0] runner.run(command=commands.Move, level="down", path=testFile.path) self.assertTrue(testFile.path.is_symlink()) self.assertFalse( testFile.inLayer(layer=self.layers[1]).path.is_symlink()) self.assertVerify()
def sync(self): Runner().quiet().run(command=commands.Sync, target_layer=self.layers[0].path) return self.verify()
(command + '.py')).resolve().absolute())).load_module() subcommandParser = subcommands.add_parser(module.info['name'], help=module.info['help']) loadedCommands[module.info['name']] = module loadedCommands[module.info['name']].setup(subcommandParser) rawArgs = sys.argv[1:] if (len(rawArgs) == 0): rawArgs = ['-h'] args = main.parse_args(rawArgs) commandModule = loadedCommands[args.command] runner = Runner() try: vargs = vars(args) del vargs['command'] runner.run(command=commandModule, **vargs) except Exception as err: message = "{0}".format(err) if message == "": message = "Unknown Error" #if args.verbose: traceback.print_exc(file=sys.stdout) sys.exit(message) sys.exit(0)