def test_cli_save_fails_file_exists(self): # Create some temporary files and directories that simulate save files. expected_content = 'This is example content for comparison.\n' source_dir = mkdtemp() dest_dir = mkdtemp() source_file = NamedTemporaryFile(dir=source_dir, delete=False) source_file.write(expected_content.encode()) source_file.close() config = { 'manager': 'NativeCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): dest_dir }, 'games': [{ 'name': 'Some Game', GameBackupExtension.get_system_platform(): { 'local': source_dir } }] } with TempConfig(config) as cfg: rv, so, se = self._call_cli( ['-c', cfg, 'save', '--game', 'Some Game']) self.assertEqual(rv, 5) self.assertIn(b'Cannot backup save games because:', se) shutil.rmtree(source_dir) shutil.rmtree(dest_dir)
def test_cli_saves_all_successfully(self): # Create some temporary files and directories that simulate save files. expected_content = 'This is example content for comparison.\n' source_dir = mkdtemp() dest_dir = mkdtemp() shutil.rmtree(dest_dir) source_file = NamedTemporaryFile(dir=source_dir, delete=False) source_file.write(expected_content.encode()) source_file.close() config = { 'manager': 'NativeCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): dest_dir }, 'games': [{ 'name': 'Some Game', GameBackupExtension.get_system_platform(): { 'local': source_dir } }, { 'name': 'Some Other Game', 'some_platform': { 'local': '/lol/path/doesnt/matter', 'remote': '/somewhere/else/lol' } }] } with TempConfig(config) as cfg: rv, so, se = self._call_cli(['-c', cfg, 'save', '--all']) self.assertEqual(rv, 0) with open(os.path.join(dest_dir, os.path.basename(source_file.name))) as f: self.assertEqual(f.read(), expected_content) shutil.rmtree(source_dir) shutil.rmtree(dest_dir)
def test_cli_resolves_variables_from_environment_first(self): # Create some temporary files and directories that simulate save files. expected_content = 'This is example content for comparison.\n' source_dir = mkdtemp() dest_dir = mkdtemp() shutil.rmtree(dest_dir) source_file = NamedTemporaryFile(dir=source_dir, delete=False) source_file.write(expected_content.encode()) source_file.close() config = { 'manager': 'NativeCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): dest_dir }, 'variables': { 'EXAMPLE_VARIABLE': 'some_dirname' }, 'games': [{ 'name': 'Some Game', GameBackupExtension.get_system_platform(): { 'local': source_dir, 'remote': os.path.join('$REMOTE_ROOT', '$EXAMPLE_VARIABLE') } }] } with TempConfig(config) as cfg, SetEnv({'EXAMPLE_VARIABLE': '123'}): rv, so, se = self._call_cli( ['-c', cfg, 'save', '--game', 'Some Game']) self.assertEqual(rv, 0) with open( os.path.join(dest_dir, '123', os.path.basename(source_file.name))) as f: self.assertEqual(f.read(), expected_content) shutil.rmtree(source_dir) shutil.rmtree(dest_dir)
def test_cli_unknown_copy_manager(self): config = { 'manager': 'ActuallyDeletesCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): '/some/root/path' }, 'games': [{ 'name': 'Some Game', GameBackupExtension.get_system_platform(): { 'local': '/lol/path/doesnt/matter', 'remote': '/somewhere/else/lol' } }] } with TempConfig(config) as cfg: rv, so, se = self._call_cli(['-c', cfg, 'save']) self.assertEqual(rv, 1) self.assertIn( b'Failed to find copy manager: ActuallyDeletesCopyManager', se)
def test_cli_empty_config(self): config = { 'manager': 'NativeCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): '/some/root/path' } } with TempConfig(config) as cfg: rv, so, se = self._call_cli(['-c', cfg, 'save']) self.assertEqual(rv, 1) self.assertIn( 'No game definitions found in {}'.format(cfg).encode(), se)
def test_cli_no_remote(self): config = { 'manager': 'NativeCopyManager', 'remotes': { 'some_platform': '/lol/didnt/read' }, 'games': [{ 'name': 'Some Game', GameBackupExtension.get_system_platform(): { 'local': '/lol/path/doesnt/matter', 'remote': '/somewhere/else/lol' } }] } with TempConfig(config) as cfg: rv, so, se = self._call_cli(['-c', cfg, 'save']) self.assertEqual(rv, 1) self.assertIn(b'Cannot set up remote for this platform', se)
def test_cli_platform_empty_config(self): config = { 'manager': 'NativeCopyManager', 'remotes': { GameBackupExtension.get_system_platform(): '/some/root/path' }, 'games': [{ 'name': 'Some Game', 'some_platform': { 'local': '/lol/path/doesnt/matter', 'remote': '/somewhere/else/lol' } }] } with TempConfig(config) as cfg: rv, so, se = self._call_cli(['-c', cfg, 'save']) self.assertEqual(rv, 1) self.assertIn(b'There are no games configured for this platform', se)