
The default `raco pkg' mode should work right for a multiple-version installation (because everything in Racket should work in a multiple-version installation). Along the same lines, `raco pkg' should work if the installation directory is unwriteable. So, the default mode is user-specific and version-specific. Use `--shared' or `-s' for user-specific, all-version installs. By default, `raco pkg show' now shows packages installed in all three modes (installation-wide, user- and version- specific, and user-specific all-version). Use `-i', `-u', or `-s' to show just one of them.
73 lines
3.7 KiB
Racket
73 lines
3.7 KiB
Racket
#lang racket/base
|
|
(require rackunit
|
|
racket/system
|
|
unstable/debug
|
|
racket/match
|
|
(for-syntax racket/base
|
|
syntax/parse)
|
|
racket/file
|
|
racket/runtime-path
|
|
racket/path
|
|
racket/list
|
|
planet2/util
|
|
"shelly.rkt"
|
|
"util.rkt")
|
|
|
|
(pkg-tests
|
|
(shelly-begin
|
|
(initialize-indexes)
|
|
|
|
(shelly-case
|
|
"remove and show"
|
|
(shelly-case "remove of not installed package fails"
|
|
$ "raco pkg show -u" =stdout> "Package(auto?) Checksum Source\n"
|
|
$ "raco pkg remove not-there" =exit> 1)
|
|
(shelly-install "remove test"
|
|
"test-pkgs/planet2-test1.zip")
|
|
(shelly-install "remove of dep fails"
|
|
"test-pkgs/planet2-test1.zip"
|
|
$ "raco pkg show -u" =stdout> #rx"Package\\(auto\\?\\) +Checksum +Source\nplanet2-test1 +[a-f0-9]+ +\\(file .+tests/planet2/test-pkgs/planet2-test1.zip\\)\n"
|
|
$ "raco pkg install test-pkgs/planet2-test2.zip"
|
|
$ "raco pkg show -u" =stdout> #rx"Package\\(auto\\?\\) +Checksum +Source\nplanet2-test1 +[a-f0-9]+ +\\(file .+tests/planet2/test-pkgs/planet2-test1.zip\\)\nplanet2-test2 +[a-f0-9]+ +\\(file .+tests/planet2/test-pkgs/planet2-test2.zip\\)\n"
|
|
$ "raco pkg remove planet2-test1" =exit> 1
|
|
$ "raco pkg remove planet2-test2"
|
|
$ "raco pkg show -u" =stdout> #rx"Package\\(auto\\?\\) +Checksum +Source\nplanet2-test1 +[a-f0-9]+ +\\(file .+tests/planet2/test-pkgs/planet2-test1.zip\\)\n")
|
|
(shelly-install "remove of dep can be forced"
|
|
"test-pkgs/planet2-test1.zip"
|
|
$ "raco pkg install test-pkgs/planet2-test2.zip"
|
|
$ "racket -e '(require planet2-test2/contains-dep)'" =exit> 0
|
|
$ "raco pkg remove --force planet2-test1"
|
|
$ "racket -e '(require planet2-test2/contains-dep)'" =exit> 1
|
|
$ "raco pkg install test-pkgs/planet2-test1.zip"
|
|
$ "raco pkg remove planet2-test2")
|
|
(with-fake-root
|
|
(shelly-case
|
|
"remove two"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 1
|
|
$ "racket -e '(require planet2-test2)'" =exit> 1
|
|
$ "raco pkg install test-pkgs/planet2-test2.zip test-pkgs/planet2-test1.zip" =exit> 0
|
|
$ "racket -e '(require planet2-test1)'" =exit> 0
|
|
$ "racket -e '(require planet2-test2)'" =exit> 0
|
|
$ "racket -e '(require planet2-test2/contains-dep)'" =exit> 0
|
|
$ "raco pkg remove planet2-test1 planet2-test2"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 1
|
|
$ "racket -e '(require planet2-test2)'" =exit> 1))
|
|
(with-fake-root
|
|
(shelly-case
|
|
"autoremove"
|
|
$ "raco pkg config --set indexes http://localhost:9990"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 1
|
|
$ "racket -e '(require planet2-test2)'" =exit> 1
|
|
$ "raco pkg install --deps search-auto test-pkgs/planet2-test2.zip" =exit> 0
|
|
$ "raco pkg show -u" =stdout> #rx"Package\\(auto\\?\\) +Checksum +Source\nplanet2-test1\\* +[a-f0-9]+ +\\(pns planet2-test1\\)\nplanet2-test2 +[a-f0-9]+ +\\(file .+tests/planet2/test-pkgs/planet2-test2.zip\\)\n"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 0
|
|
$ "racket -e '(require planet2-test2)'" =exit> 0
|
|
$ "racket -e '(require planet2-test2/contains-dep)'" =exit> 0
|
|
$ "raco pkg remove planet2-test2"
|
|
$ "raco pkg show -u" =stdout> #rx"Package\\(auto\\?\\) +Checksum +Source\nplanet2-test1\\* +[a-f0-9]+ +\\(pns planet2-test1\\)\n"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 0
|
|
$ "raco pkg remove --auto"
|
|
$ "raco pkg show -u" =stdout> "Package(auto?) Checksum Source\n"
|
|
$ "racket -e '(require planet2-test1)'" =exit> 1
|
|
$ "racket -e '(require planet2-test2)'" =exit> 1)))))
|