racket/collects/tests/pkg/tests-catalogs.rkt
Matthew Flatt d8f9820ef3 raco pkg: expose, record, etc., module and dependency information
A package catalog now supplies information about a package's modules
and dependencies, so propagate it when copying a catalog, make the
information accessible via `raco pkg catalog-show', and so on.
2013-04-28 08:34:14 -06:00

98 lines
3.9 KiB
Racket

#lang racket/base
(require pkg/lib
(prefix-in db: pkg/db)
racket/file
racket/format
"shelly.rkt"
"util.rkt")
(pkg-tests
(shelly-begin
(initialize-catalogs)
$ "raco pkg config --set catalogs http://localhost:9990"
$ "racket -l racket/base -l pkg/lib -e '(pkg-config-catalogs)'"
=stdout> "'(\"http://localhost:9990\")\n"
$ "racket -l racket/base -l tests/pkg/test-catalogs-api -e '(test-api)'"
=stderr> ""
(define d (make-temporary-file "pkg-~a" 'directory))
(define db (build-path d "catalog.sqlite"))
(define dir (build-path d "catalog"))
(define dir2 (build-path d "catalog2"))
$ (~a "raco pkg catalog-copy --from-config " (path->string db))
$ (~a "raco pkg config --set catalogs file://" (path->string db))
$ "raco pkg catalog-show pkg-test1"
=stdout> #rx"Source: http://localhost:9999/pkg-test1.zip"
(parameterize ([db:current-pkg-catalog-file db])
(db:set-pkgs! "local"
(append (db:get-pkgs)
(list
(db:pkg "fish" "local" "nemo@sub" "http://localhost:9999/fish.zip" "123"
"Not a whale"))))
(db:set-pkg-modules! "fish" "local" "123" '((lib "fish/main.rkt") (lib "fish/food.rkt")))
(db:set-pkg-dependencies! "fish" "local" "123"
'("ocean" ("water" "1.0") ("crash-helmet" #:platform windows))))
$ "raco pkg catalog-show fish" =stdout> #rx"Checksum: 123"
$ "raco pkg catalog-show fish" =stdout> #rx"ocean"
$ "raco pkg catalog-show fish" =stdout> #rx"water version 1.0"
$ "raco pkg catalog-show fish" =stdout> #rx"crash-helmet on platform 'windows"
$ "raco pkg catalog-show --modules fish" =stdout> #rx"fish/food"
$ (~a "raco pkg catalog-copy " (path->string db) " " (path->string dir))
$ (~a "raco pkg config --set catalogs file://" (path->string dir))
$ "raco pkg catalog-show fish" =stdout> #rx"Checksum: 123"
$ "raco pkg catalog-show --only-names fish" =stdout> #rx"fish"
$ "raco pkg catalog-show --only-names --all" =stdout> #rx"fish"
$ "raco pkg catalog-show --modules fish" =stdout> #rx"fish/food"
$ "raco pkg catalog-show fish" =stdout> #rx"water version 1.0"
(delete-file (build-path dir "pkgs"))
(delete-file (build-path dir "pkgs-all"))
$ "raco pkg catalog-show fish" =stdout> #rx"Checksum: 123"
$ "raco pkg catalog-show --only-names fish" =stdout> #rx"^fish"
$ "raco pkg catalog-show --only-names --all" =stdout> #rx"^fish"
$ "raco pkg catalog-show --modules fish" =stdout> #rx"fish/food"
$ "raco pkg catalog-show fish" =stdout> #rx"water version 1.0"
(delete-file (build-path dir "pkg/fish"))
$ "raco pkg catalog-show fish" =exit> 1
(define (try-merge dest)
(shelly-begin
$ (~a "raco pkg config --set catalogs file://" (path->string dest))
(make-directory* (build-path dir2 "pkg"))
(define (add-whale! cksum)
(call-with-output-file*
(build-path dir2 "pkg" "whale")
#:exists 'truncate
(lambda (o)
(write (hash 'name "whale"
'checksum cksum
'source "http://localhost:9999/whale.plt")
o))))
(add-whale! "345")
$ (~a "raco pkg catalog-show --catalog file://" (path->string dir2) " whale") =stdout> #rx"Checksum: 345"
$ "raco pkg catalog-show whale" =exit> 1
$ (~a "raco pkg catalog-copy --merge " (path->string dir2) " " (path->string dest))
$ "raco pkg catalog-show whale" =stdout> #rx"Checksum: 345"
(add-whale! "567")
$ (~a "raco pkg catalog-copy --merge " (path->string dir2) " " (path->string dest))
$ "raco pkg catalog-show whale" =stdout> #rx"Checksum: 345"
$ (~a "raco pkg catalog-copy --merge --override " (path->string dir2) " " (path->string dest))
$ "raco pkg catalog-show whale" =stdout> #rx"Checksum: 567"))
(try-merge dir)
(try-merge db)
$ "raco pkg config --set catalogs http://localhost:9990"
(delete-directory/files d)))