Pengujian: rangkaian validasi
Menjalankannya
just test
# or
python3 tests/validate.py Ia berjalan dari mana saja dan hanya membutuhkan Python 3 (tanpa paket pihak ketiga, tanpa jaringan). Ia mencetak satu baris per pemeriksaan dan keluar dengan kode bukan nol jika ada pemeriksaan yang gagal, sehingga cocok di CI dan sebagai pre-commit hook.
Apa yang diperiksanya
- Jumlah topik yang diharapkan (konstanta di bagian atas skrip).
- Penomoran berkesinambungan di dalam setiap bagian, dimulai dari N.0.
- H1 cocok dengan desimal pada nama berkas untuk setiap topik.
- Judul H1 cocok dengan
spec/structure.mdkarakter demi karakter, bukan hanya desimal di depan. - Bagian yang diwajibkan ada di setiap topik isi (Bagian 1 sampai 8, topik N.1 ke atas), persis dalam urutan templat.
- Jumlah kata minimum untuk setiap topik isi (1.500 kata), dengan daftar izin di skrip untuk pengecualian yang disengaja.
- Tanpa em-dash di berkas Markdown mana pun.
- En-dash hanya di antara angka, jadi “2.1–2.8” lulus dan yang lain gagal.
- Tanpa ungkapan terlarang (“not only”, “but also”, “load-bearing”).
- Semua tautan
.mdinternal terselesaikan. - Referensi silang dalam prosa menunjuk ke topik yang nyata: rujukan ke nomor topik tanpa berkas yang cocok di disk gagal, memakai pola rujukan yang sama dengan yang dipakai penautan otomatis topik pada situs yang diterbitkan.
- Tautan Wikipedia berbentuk benar (
https://en.wikipedia.org/wiki/...). spec/structure.mdcocok dengan berkas di disk, di kedua arah.- README, beranda, dan halaman isi menautkan setiap topik.
Ketika sebuah pemeriksaan gagal
Baris yang gagal menyebut berkas dan masalahnya. Perbaikan umum:
- Em-dash ditemukan: tulis ulang kalimat untuk menghilangkan ”—“. Jangan sekadar menghapusnya.
- Bagian hilang: tambahkan bagian
##yang hilang dari templat topik. - Ketidakcocokan struktur: Anda menambah atau mengganti nama topik tanpa
memperbarui
spec/structure.md, atau sebaliknya. Selaraskan kembali. - Tautan rusak: perbaiki jalurnya, atau perbarui setelah penggantian nama.
- Celah penomoran: nomori ulang agar bagian berkesinambungan dari N.0.
Di luar rangkaian validasi
just spellmenjalankan codespell pada repositori. Konfigurasinya, termasuk daftar abaikan untuk positif palsu, adalah bagian[tool.codespell]dipyproject.toml.just statsmencetak laporan Markdown (jumlah kata per topik, topik tipis, tautan Wikipedia, entri rujukan) daritools/stats.py.
Integrasi berkelanjutan
.github/workflows/test.ymlberjalan pada setiap pull request dan pada push ke cabang non-utama: rangkaian validasi dan codespell. Repositori ini tidak membangun atau men-deploy situs; perenderan terjadi di repositorisoftware-engineering-metrics.github.ioyang terpisah..github/workflows/links.ymlmemeriksa tautan eksternal setiap minggu dengan lychee (pola abaikan di.lycheeignore) dan menyimpan hasilnya di satu isu “Link checker report”. Tautan eksternal sengaja dijauhkan dari jalur PR.
Tidak tercakup oleh pengujian
Rangkaian ini memeriksa struktur dan gaya, bukan kebenaran. Ia tidak dapat tahu apakah sebuah rujukan nyata atau apakah prosanya akurat. Verifikasi kutipan dan fakta secara manual atau dengan penelusuran riset. Keberadaan tautan Wikipedia (berbeda dari bentuknya) juga membutuhkan pemeriksaan jaringan, yang sengaja ditinggalkan rangkaian agar dapat berjalan luring.