def test_pickles(self): self.assertEqual(ShellBool.true, psaves('test.pkl', [[1, 2, 3], { 4: 5 }])) self.assertEqual([[1, 2, 3], {4: 5}], ploads('test.pkl')) self.assertEqual([[1, 2, 3]], ploads('test.pkl', limit=1)) rm('test.pkl')
def test_rm_with_one_nonexistant(self): write('existant', 'contents') self.assertRaises(FileNotFoundError, lambda: rm('existant', 'nonexistant')) self.assertEqual(['existant'], ls()) rm('existant', 'nonexistant', ignore_missing=True) self.assertEqual([], ls())
def test_mv_single_file_to_existing_folder(self): write('file', 'contents') mkdir('folder') move_to('file', 'folder') self.assertEqual(['folder'], ls()) self.assertEqual(['file'], ls('folder')) self.assertEqual('contents', read('folder/file')) rm('folder', recursively=True)
def test_mv_single_file_to_nonexistant_folder(self): write('file', 'contents') self.assertRaises(RuntimeError, lambda: move_to('file', 'folder', create_dir=False)) move_to('file', 'folder') self.assertEqual(['folder'], ls()) self.assertEqual(['file'], ls('folder')) self.assertEqual('contents', read('folder/file')) rm('folder', recursively=True)
def test_rm_with_one_with_contents(self): write('existant', 'contents') mkdir('folder') write('folder/file', 'contents') self.assertRaises(CannotRemoveDirectoryError, lambda: rm('existant', 'folder', interactive=False)) self.assertEqual(['existant', 'folder'], ls()) rm('existant', 'folder', recursively=True) self.assertEqual([], ls())
def test_read_fail(self): result = cat('nonexistant') > Collect self.assertEqual(False, bool(result)) self.assertIn("No such file", result.stderr()) mkdir('folder') result = cat('folder') > Collect self.assertEqual(False, bool(result)) self.assertIn("Is a directory", result.stderr()) rm('folder')
def test_mv_dst_exists(self): write('src', 'abc') write('file', 'def') self.assertRaises(RuntimeError, lambda: mv('src', 'file')) self.assertEqual(['file', 'src'], ls()) mv('src', 'file', overwrite=True) self.assertEqual(['file'], ls()) self.assertEqual('abc', read('file')) rm('file')
def test_mv_dst_folder_doesnt_exist(self): write('src', 'abc') mv('src', 'folder/file') self.assertEqual(['folder'], ls()) self.assertEqual(['file'], ls('folder')) self.assertEqual('abc', read('folder/file')) mv('folder/file', 'folder/to/a/file') self.assertEqual(['folder'], ls()) self.assertEqual(['to'], ls('folder')) self.assertEqual(['a'], ls('folder/to')) self.assertEqual(['file'], ls('folder/to/a')) self.assertEqual('abc', read('folder/to/a/file')) rm('folder', recursively=True)
def test_more_complicated_cd(self): mkdir('path/to/folder') cd('path') self.assertEqual(join(INITIAL_PWD, 'path'), pwd()) cd('..') self.assertEqual(INITIAL_PWD, pwd()) cd('path/to') self.assertEqual(join(INITIAL_PWD, 'path/to'), pwd()) cd('.') self.assertEqual(join(INITIAL_PWD, 'path/to'), pwd()) cd('..') self.assertEqual(join(INITIAL_PWD, 'path'), pwd()) cd('to/folder') self.assertEqual(join(INITIAL_PWD, 'path/to/folder'), pwd()) write('file.txt', "hello") cd(3) self.assertEqual(join(INITIAL_PWD, 'path/to'), pwd()) cd(1) self.assertEqual(INITIAL_PWD, pwd()) cd(1) self.assertEqual(join(INITIAL_PWD, 'path'), pwd()) cd(INITIAL_PWD) self.assertEqual(read('path/to/folder/file.txt'), "hello") rm('path', recursively=True)
def test_rm_nonemptydir(self): mkdir('path') write('path/file', 'contents') self.assertRaises(CannotRemoveDirectoryError, lambda: rm('path', interactive=False)) self.assertEqual(['path'], ls()) rm('path', recursively=True) self.assertEqual([], ls()) mkdir('path') write('path/file', '') Interactive.ask_question = lambda _: "n" rm('path') self.assertEqual(['path'], ls()) Interactive.ask_question = lambda _: "y" rm("path") self.assertEqual([], ls())
def test_rmdir(self): mkdir('empty-folder') rm('empty-folder') self.assertEqual([], ls())
def test_rm_dne(self): self.assertRaises(FileNotFoundError, lambda: rm('does-not-exist')) rm('does-not-exist', ignore_missing=True)
def test_chaining(self): write('test', '') and write('test2', '') self.assertEqual(ls(), ['test', 'test2']) rm('test', 'test2')
def test_pload_wrong_size(self): self.assertEqual(ShellBool.true, psaves('test.pkl', [])) self.assertRaises(RuntimeError, lambda: pload('test.pkl')) self.assertEqual(ShellBool.true, psaves('test.pkl', [1, 2])) self.assertRaises(RuntimeError, lambda: pload('test.pkl')) rm('test.pkl')
def test_glob_multiple(self): write('file', 'contents') write('second_file', 'contents') self.assertEqual(['file', 'second_file'], globs("*f*")) self.assertRaises(RuntimeError, lambda: glob("*f*")) rm('file', 'second_file')
def test_read_succeed(self): write('file', 'contents\nline 2') self.assertEqual('contents\nline 2', (cat('file') > Collect).stdout()) write('file', 'contents\n', clobber=True) self.assertEqual('contents\n', (cat('file') > Collect).stdout()) rm('file')
def test_mv_single_file_to_existant_file(self): write('file', 'contents') write('other_file', 'contents') self.assertRaises(RuntimeError, lambda: move_to('file', 'other_file')) rm('file', 'other_file', recursively=True)
def test_return_code(self): mkdir('path') self.assertEqual(ShellBool.true, cd('path')) self.assertEqual(ShellBool.true, cd('..')) self.assertRaises(FileNotFoundError, lambda: cd('does-not-exist')) rm('path')
def test_mv_dst_folder_doesnt_exist_create_dir_false(self): write('src', 'abc') self.assertRaises(RuntimeError, lambda: mv('src', 'folder/file', create_dir=False)) rm('src')
def test_mv_dst_folder(self): write('src', 'abc') mkdir('folder') self.assertRaises(RuntimeError, lambda: mv('src', 'folder')) rm('folder', 'src')
def test_rm_symlink(self): write('file', 'contents') symlink('file', 'link') rm('link') self.assertEqual(['file'], ls()) rm('file')
def test_rm_symlink_to_folder(self): mkdir('folder') symlink('folder', 'link') rm('link') self.assertEqual(['folder'], ls()) rm('folder')
def test_pickle(self): self.assertEqual(ShellBool.true, psave('test.pkl', [1, 2, 3])) self.assertEqual(pload('test.pkl'), [1, 2, 3]) rm('test.pkl')
def test_mkdir(self): self.assertEqual(ShellBool.true, mkdir('folder')) self.assertEqual(ShellBool.false, mkdir('folder')) rm('folder')
def test_glob_single(self): write('file', 'contents') write('second_file', 'contents') self.assertEqual(['file'], globs("f*")) self.assertEqual('file', glob("f*")) rm('file', 'second_file')