mirror of
https://github.com/dimitri/el-get.git
synced 2024-09-30 05:29:52 +08:00
70 lines
2.2 KiB
EmacsLisp
70 lines
2.2 KiB
EmacsLisp
|
;; https://github.com/dimitri/el-get/issues/683
|
||
|
;;
|
||
|
;; el-get-remove needs to be more flexible
|
||
|
|
||
|
(setq el-get-sources (list '(:name a :type builtin))
|
||
|
el-get-default-process-sync t)
|
||
|
|
||
|
(defun assert-package-fully-removed (pkg)
|
||
|
(assert (string= "removed"
|
||
|
(el-get-read-package-status pkg))
|
||
|
nil
|
||
|
"Package %s should have status \"removed\", but actually has status \"%s\"."
|
||
|
pkg (el-get-read-package-status pkg))
|
||
|
(assert (not (or (file-exists-p (el-get-package-directory pkg))
|
||
|
(file-symlink-p (el-get-package-directory pkg))))
|
||
|
nil
|
||
|
"Package directory for %s should not exist, but it does" pkg))
|
||
|
|
||
|
;; Try to just install and remove
|
||
|
(el-get-install 'a)
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Install, then set status to "required", then uninstall.
|
||
|
(el-get-install 'a)
|
||
|
(el-get-save-package-status 'a "required")
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Install, then set status to "removed", then uninstall.
|
||
|
(el-get-install 'a)
|
||
|
(el-get-save-package-status 'a "removed")
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Set status to "installed" but don't actually install, then remove
|
||
|
(el-get-save-package-status 'a "installed")
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Install, then set status to "required", then call install again,
|
||
|
;; which should remove and then reinstall.
|
||
|
(el-get-install 'a)
|
||
|
(el-get-save-package-status 'a "required")
|
||
|
(el-get-install 'a)
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Install, then set status to "required", then call install again,
|
||
|
;; which should remove and then reinstall.
|
||
|
(el-get-install 'a)
|
||
|
(el-get-save-package-status 'a "required")
|
||
|
(el-get-install 'a)
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Create the package directory but don't install it. Then try to
|
||
|
;; install, which should remove and reinstall.
|
||
|
(make-directory (el-get-package-directory 'a) 'recursive)
|
||
|
(el-get-install 'a)
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|
||
|
|
||
|
;; Install, then set the recipe to nil in the status file, then uninstall
|
||
|
(el-get-install 'a)
|
||
|
(flet ((el-get-package-def (&rest ignored) nil))
|
||
|
(el-get-save-package-status 'a "installed"))
|
||
|
(el-get-remove 'a)
|
||
|
(assert-package-fully-removed 'a)
|