cmd_back_test.v

1.0 KB · raw

1module cli23import os4import src.history5import src.snapshot6import src.storage78// The history view's `l` key goes through restore_now, which a CLI test cannot9// reach without a terminal, so it is checked here directly.10fn test_restore_now_refuses_to_overwrite_unsaved_work() {11	dir := os.join_path(os.temp_dir(), 'koh3_cli_restore_now_${os.getpid()}')12	os.rmdir_all(dir) or {}13	os.mkdir_all(dir)!14	defer {15		os.rmdir_all(dir) or {}16	}17	store := storage.create(dir)!18	defer {19		store.close()20	}21	path := os.join_path(dir, 'a.txt')22	os.write_file(path, 'one\n')!23	first := history.commit_worktree(store, dir, snapshot.load(dir), history.SaveInput{24		message: 'one'25	})!26	os.write_file(path, 'two\n')!27	history.commit_worktree(store, dir, snapshot.load(dir), history.SaveInput{28		message: 'two'29	})!30	os.write_file(path, 'unsaved\n')!31	if _ := restore_now(store, first, 'load') {32		assert false, 'restore_now overwrote unsaved work'33	} else {34		assert err.msg() == unsaved_changes35	}36	assert os.read_file(path)! == 'unsaved\n'37}