Я использую пример Doug Hoyte's и The Phoeron's let-over-lambda, чтобы одновременно создать мое понимание пакетов с общими словами, quicklisp и asdf, а также профессиональная практика для программирования в масштабе в общем lisp.common lisp: как запустить тесты let-over-ambda
Я могу использовать пакет в порядке, проиллюстрированном ниже, но еще не понял, как запустить его тесты, используя аналогичные частично ориентированные догадки. Подробности следуют.
Я нашел здесь код: https://github.com/thephoeron/let-over-lambda. Я использую подход «firehose» и «постепенное образование», чтобы как можно быстрее вписаться в мою голову, используя this в качестве путеводителя. Конечно, этот подход заставит меня оставить гораздо больше нечетких пятен знания, чем более структурированный подход, но он может ускорить меня на вершину горы (не стесняйтесь меня отключить от этого понятия).
В моем нынешнем, рудиментарном уровне понимания, я могу использовать пакет в своем собственном коде. Например, я могу написать
(load "~/quickload/setup.lisp") (ql:quickload "let-over-lambda") (let-overlambda:flatten '((a . b) c (d e)))
и получить
(A B C D E)
я могу заметить, что пакет определяет псевдоним, lol
, читая defpackage
в "package.lisp", а именно (сокращенно):
(defpackage #:let-over-lambda (:nicknames #:lol) (:use #:cl #:cl-user #:cl-ppcre)
я могу использовать ник:
(lol:flatten '((a . b) c (d e)))
=> (A B C D E)
и даже импортировать свой экспорт, чтобы избавиться от какой-либо необходимости квалифицировать символы:
(use:package :lol)
(flatten '((a . b) c (d e)))
=> (A B C D E)
Теперь я замечаю, что репо содержит дразнящий тестовый пакет и каталог «т»:
-rw-r--r-- 1 921 Dec 5 05:27 let-over-lambda-test.asd -rw-r--r-- 1 941 Dec 5 05:27 let-over-lambda.asd -rw-r--r-- 1 17421 Dec 5 05:27 let-over-lambda.lisp -rw-r--r-- 1 1771 Dec 5 05:27 package.lisp drwxr-xr-x 3 102 Dec 5 05:27 t
Я не мог понять, как запустить тесты, хотя, и это мой вопрос: как я сделай это? Вот некоторые из вещей, которые я пытался, но безуспешно, в SbCl 1.3.1:
* (ql:quickload "let-over-lambda-test")
debugger invoked on a QUICKLISP-CLIENT:SYSTEM-NOT-FOUND in thread
#<THREAD "main thread" RUNNING {1002ACC943}>:
System "let-over-lambda-test" not found
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Try again
1: [ABORT ] Give up on "let-over-lambda-test"
2: Exit debugger, returning to top level.
((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "let-over-lambda-test")
0]
и это
* (load "./t/let-over-lambda.lisp")
While evaluating the form starting at line 3, column 0
of #P"/Users/bbeckman/Documents/let-over-lambda/./t/let-over-lambda.lisp":
debugger invoked on a SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread
#<THREAD "main thread" RUNNING {1002ACC943}>:
The name "PROVE" does not designate any package.
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [RETRY ] Retry EVAL of current toplevel form.
1: [CONTINUE] Ignore error and continue loading file "/Users/bbeckman/Documents/let-over-lambda/./t/let-over-lambda.lisp".
2: [ABORT ] Abort loading file "/Users/bbeckman/Documents/let-over-lambda/./t/let-over-lambda.lisp".
3: Exit debugger, returning to top level.
(SB-INT:%FIND-PACKAGE-OR-LOSE "PROVE")
0]
EDIT: quickloading "доказать", как следует, погрузили связка более прохладный в мою среду, но все же оставил меня не зная, как запускать тесты. Я бы подумал, что «доказать» будет автоматически quickloaded как зависимость от defsystem
в «пусть-над-лямбда-тест», так что это был несовершеннолетним сюрприз:
* (ql:quickload "prove")
To load "prove":
Load 2 ASDF systems:
alexandria cl-ppcre
Install 5 Quicklisp releases:
anaphora cl-ansi-text cl-colors let-plus prove
; Fetching #<URL "http://beta.quicklisp.org/archive/anaphora/2011-06-19/anaphora-0.9.4.tgz">
; 5.02KB
==================================================
5,136 bytes in 0.00 seconds (5015.63KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/let-plus/2013-12-11/let-plus-20131211-git.tgz">
; 10.52KB
==================================================
10,768 bytes in 0.00 seconds (0.00KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/cl-colors/2015-03-02/cl-colors-20150302-git.tgz">
; 14.11KB
==================================================
14,449 bytes in 0.06 seconds (220.47KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/cl-ansi-text/2015-08-04/cl-ansi-text-20150804-git.tgz">
; 5.74KB
==================================================
5,876 bytes in 0.00 seconds (5738.28KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/prove/2015-08-04/prove-20150804-git.tgz">
; 854.08KB
==================================================
874,578 bytes in 3.35 seconds (254.95KB/sec)
; Loading "prove"
[package alexandria.0.dev]........................
..................................................
[package anaphora]................................
[package anaphora-basic]..........................
[package anaphora-symbol].........................
[package let-plus]................................
[package cl-colors]...............................
[package cl-ansi-text]............................
[package prove.output]............................
[package prove.report]............................
[package prove.reporter]..........................
[package prove.asdf]..............................
[package prove.suite].............................
[package prove.test]..............................
[package prove.color].............................
[package prove]...................................
[package prove.reporter.tap]......................
[package prove.reporter.fiveam]...................
[package prove.reporter.list].....................
[package prove.reporter.dot].
("prove")
* (ql:quickload "let-over-lambda-test")
debugger invoked on a QUICKLISP-CLIENT:SYSTEM-NOT-FOUND in thread
#<THREAD "main thread" RUNNING {1002ACC943}>:
System "let-over-lambda-test" not found
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Try again
1: [ABORT ] Give up on "let-over-lambda-test"
2: Exit debugger, returning to top level.
((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "let-over-lambda-test")
0] 2
Я был бы признателен за любые руководство.
При вводе в REPL этот вызов (без «#») возвращает 't', предполагая, что тесты были выполнены. Тем не менее, когда я вставляю умышленные ошибки в тесте, чтобы увидеть, что они терпят неудачу, чтобы убедиться, что тесты действительно выполняются, я не получаю уведомления об отказах: форма выше все еще производит 't'. Я собираюсь искать меньший пример; Я думаю, что в этом слишком много. –