Как самостоятельно проверить комплект ракетки? - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь разобраться в тестировании пакетов в racket. И мне интересно, может ли кто-нибудь дать мне объяснение идиоматического c способа тестирования пакетов. Итак, передо мной пакет (это чей-то другой, но я думаю о том, чтобы внести свой вклад), в котором есть несколько коллекций. Info.rkt выглядит примерно так:

#lang info
(define collection 'multi)
(define deps '(("base" #:version "6.2.900.15") ;runtime dependencies ))
(define build-deps '(;build dependencies))

Теперь статья о пакете по адресу https://blog.racket-lang.org/2017/10/tutorial-creating-a-package.html довольно ясно показывает, что происходит в ситуации единственного сбора. Но в меньшей степени в ситуации с несколькими коллекциями.

Прямо сейчас, чтобы протестировать пакет, вам нужно установить пакет, запустите raco test, затем очистите, удалив пакет. Я думаю Мне нужно протестировать пакет, не устанавливая его. В каком случае, как лучше всего организовать info.rkt и requires в main.rkt и друзьях, чтобы путь оставался локализованным и, следовательно, самодостаточным тестом?

1 Ответ

3 голосов
/ 26 мая 2020

Это интересный вопрос, и вы можете задать его в списке рассылки Racket или Slack.

Я рекомендую исходить из того, что в большинстве случаев вам необходимо установить пакет для его тестирования, особенно если он содержит несколько коллекций. В частности, я рекомендую предположить, что при требовании модуля из другой коллекции всегда должен использовать абсолютный путь к модулю вместо относительного, даже если они находятся в одном пакете. Я был удивлен, что это, похоже, не соблюдается (на основании одного небольшого теста, который я провел), но я бы не стал полагаться на текущее слабое поведение. Я сомневаюсь, что Scribble может обрабатывать относительные имена модулей (но я не проверял), поэтому, если ваше определение «тестирования» включает сборку и проверку документов, это еще одна причина, по которой потребуется установка.

...