4.2 KiB
Съвместимост с Clojure Test Suite
Bara Lang участва в между-диалектния jank-lang/clojure-test-suite — стандартният Clojure тестови пакет за съответствие, който валидира поведението на всички Clojure диалекти.
Поддържани диалекти
Clojure Test Suite се поддържа официално за следните диалекти:
| Диалект | Статус | Runtime |
|---|---|---|
| Clojure (JVM) | ✅ Официален | JVM |
| ClojureScript | ✅ Официален | JavaScript / Node.js |
| Babashka | ✅ Официален | GraalVM native-image |
| Clojure CLR | ✅ Официален | .NET CLR |
| Basilisp | ✅ Официален | Python |
| Bara Lang | 🚀 Кандидат | Nim → C → Native |
Бърз старт
1. Клониране на тестовия пакет
git clone https://github.com/jank-lang/clojure-test-suite.git /tmp/clojure-test-suite
2. Пускане на индивидуални тестове
Използвайте test_single.py за пускане на конкретен тестов файл:
python3 test_single.py /tmp/clojure-test-suite/test/clojure/core_test/nil_qmark.cljc
3. Пускане на пакет
python3 test_single.py
# Пуска: zipmap, zero_qmark, with_out_str
Редактирайте файла test_single.py, за да добавите още тестови файлове към списъка.
Формат на тестовете
Всеки тестов файл е .cljc (cross-platform Clojure/ClojureScript) файл със стандартна структура:
(ns clojure.core-test.nil-qmark
(:require [clojure.test :as t :refer [are deftest is testing]]
[clojure.core-test.portability :refer [when-var-exists]]))
(when-var-exists nil?
(deftest test-nil?
(testing "common"
(are [in ex] (= (nil? in) ex)
nil true
0 false
false false
"" false))))
Обработка на Reader Conditionals
test_single.py на Bara Lang предварително обработва .cljc файловете, като премахва #? и #?@ reader conditionals и извлича :default клона:
;; Преди
#?(:cljs :refer-macros :default :refer)
;; След
:refer
;; Преди
#?@(:cljs [] :default [1 2 3])
;; След
[1 2 3]
Това следва стандартната между-диалектна конвенция — всеки диалект разрешава :default според своята платформа.
Текущ обхват на тестовете
Тестовият пакет покрива 212+ функции от clojure.core и 8 функции от clojure.string. Bara Lang работи към пълно съответствие.
Вижте Roadmap за статуса на имплементацията.
Настройка на тестове за отделните диалекти
За справка, ето линкове към официалните ръководства за настройка на тестовете за други платформи:
| Диалект | Ръководство за настройка |
|---|---|
| Clojure (JVM) | clojure.md |
| ClojureScript | clojurescript.md |
| Babashka | babashka.md |
| Clojure CLR | clojureclr.md |
| Basilisp | basilisp.md |
| Bara Lang | Този документ |
Последно обновено: 2026-05-09