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_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_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_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_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_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_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_symlink(self): write('file', 'contents') symlink('file', 'link') rm('link') self.assertEqual(['file'], ls()) rm('file')
def test_chaining(self): write('test', '') and write('test2', '') self.assertEqual(ls(), ['test', 'test2']) rm('test', 'test2')
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_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_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_glob_single(self): write('file', 'contents') write('second_file', 'contents') self.assertEqual(['file'], globs("f*")) self.assertEqual('file', 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')