Unit tests - minsuk-jang/teamproject GitHub Wiki
ν μ€νΈλ ν¬κ² unit ν μ€νΈ (test/unit directory) μ functional ν μ€νΈ (test/functional directory)λ‘ λλ©λλ€. κΈ°μ‘΄ ν μ€νΈ μ€ νλλ₯Ό ν νλ¦ΏμΌλ‘ μ¬μ©νμ¬ μ ν μ€νΈλ₯Ό μμ±ν©λλ€.
- Unit ν μ€νΈλ LuaJit FFIμ μν΄ λ‘λλκ³ νΈμΆλλ 곡μ λΌμ΄λΈλ¬λ¦¬λ‘ ν μ€νΈλ₯Ό μ»΄νμΌνμ¬ μνλ©λλ€.
- _Functional_ν μ€νΈλ RPCμ μν΄ μ£Όλ λλ―λ‘ LuaJit (Luaμ λ°λ)μ νμλ‘ νμ§ μμ΅λλ€.
Luaμ μ£Όμκ°λ μ key concepts of Lua in 15 minutesμμ λ°°μΈ μ μμ΅λλ€.
Building Neovimμ μ°Έμ‘°νμμ€.
- ν μ€νΈμ κ΅¬μ± λ° κ°λ μ±μ μν΄ BDD μ§μΉ¨μ κ³ λ €νμμμ€. ν μ€νΈμ€μΈ λ΄μ©(ν΄λΉλλ κ²½μ° νκ²½)μ κΈ°μ νκ³ λμμ λνλ΄λ specμ μμ±νμμμ€.
- λͺ¨λ μ μ λ³μμμλ§ λ³Ό μ μλ λΆμμ©μ΄μλ μ μ ν¨μλ₯Ό ν
μ€νΈνλ €λ©΄ μμ λ λ³μμ λν μ κ·Όμλ₯Ό λ§λλλ€
μλ₯Όλ€μ΄, μ μ λ³μλ₯Ό μμ νλ misc1.cμ ν¨μλ₯Ό ν
μ€νΈνκ³ ,
test / c-helpers / misc1.c
νμΌμ λ§λ€κ³ , ν¨μ νΈμΆ νμ κ°μ κ²μνλ ν¨μλ₯Ό μΆκ°νλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.test / c-helpers
νμΌμ ν μ€νΈ 곡μ λΌμ΄λΈλ¬λ¦¬λ₯Ό λΉλ ν λλ§ μ»΄νμΌ λ©λλ€. - Luajitμ ν¨μ νλ‘ν νμ μ μ¬μ©λλ μ ν λ° μμ μ μΈμ λν΄ μμμΌν©λλ€. helpers.lua νμΌμ μλμΌλ‘`types.h 'λ₯Ό νμ±νλ―λ‘ ν μ€νΈ λ ν¨μμμ μ¬μ© λ μ νμ λ°λμ μ΄λλμ΄μΌ νλ©° ν μ€νΈ νμΌμ μ μΈμ λ€μ μμ±νμ§ μμλλ©λλ€.
- λ§€ν¬λ‘ μμλ μ΄κ±° νμΌλ‘ μμ±ν΄μΌ μλμΌλ‘ ν μ€νΈμμ μ°Έμ‘°ν μ μμ΅λλ€.
- Bustedλ λ€μν "output providers"λ₯Ό μ§μν©λλ€. The gtest output providerλ ν
μ€νΈλ₯Ό μ§λ¨νλ λ° μ μ© ν μμλ μμΈν μ 보λ₯Ό 보μ¬μ€λλ€. Makefileμ μμ νκ±°λ
make CMAKE_EXTRA_FLAGS = -DBUSTED_OUTPUT_TYPE = gtest
λ₯Ό μ¬μ©νμ¬ μ»΄νμΌνλ©΄ νμ±νλ©λλ€. -
Use busted's
pending()
feature to skip tests (example).if-else
λ‘ ν μ€νΈλ₯Ό 건λ λ°μ§ λ§μμμ€. κΈ°λ₯ ν μ€νΈκ° μΈλΆμμΈμ(e.g. the existence ofmd5sum
on$PATH
) μμ‘΄νλ κ²½μ°, μΈλΆ μμκ° μλ€λ©΄pending ()
μ ν΅ν΄ ν μ€νΈλ₯Ό 건λ λλλ€. μ΄λ κ²νλ©΄ * total * ν μ€νΈ νμ (μ±κ³΅ + μ€ν¨ + μ€λ₯ + 보λ₯ μ€)κ° λͺ¨λ νκ²½μμ λμΌνκ² μ μ§λ©λλ€.- *μ£Όμ : *
pending ()
μ μΈμκ° λΉ μ Έ μλ€λ©΄ _ 무μλ©λλ€.it()
blockμ ν¬ν¨λμ΄ μμ΅λλ€ -pending ()
νΈμΆμ΄it ()
(μμ ) λ°μ μλ€λ©΄ λΉ ν¨μ μΈμλ₯Ό μ 곡νμμμ€.
- *μ£Όμ : *
- μΆν λ luacheck νλ‘κ·Έλ¨ (syntynasticμμ μ§μμ μ¬μ©νλ €λ©΄`make testlint 'λ₯Ό μ¬μ©νμμμ€.
-
μ λ tests (test / unit)λ
src / nvim /
μ ꡬ쑰μ μΌλμΌλ‘ μΌμΉν΄μΌ ν©λλ€. ν¨μλ₯Ό μ§μ ν μ€νΈνκ³ μμ΅λλ€. μ :src / nvim / undo.c
μ λν μ λ ν μ€νΈλtest / unit / undo_spec.lua
μ μμ΄μΌ ν©λλ€. - _ κΈ°λ₯ ν
μ€νΈ _ (ν
μ€νΈ / κΈ°λ₯)λ λ¨μ ν
μ€νΈλ³΄λ€ μμ λ 벨 (νλ¬κ·ΈμΈ λ° μ¬μ©μ μ
λ ₯)μ
λλ€. κ·Έλ€μ κ°λ
λ³λ‘ μ‘°μ§ λμ΄ μμ΅λλ€.
- μλ‘μ΄ 'test / functional / * / * _ spec.lua` κ·Έλ£Ήμ μ°Ύμ보μμμ€.
** μ°Έκ³ : ** "ꡬμ"(src / testdir / *. in
) legacy ν
μ€νΈλ§ λ³νν΄μΌ ν©λλ€.
"μλ‘μ΄ μ€νμΌ"μ Vim ν
μ€νΈλ₯Ό λ³ννμ§ λ§μμμ€.
(src / testdir / *. vim
). "μλ‘μ΄ μ€νμΌ"μ Vim ν
μ€νΈλ μ΄μ ν
μ€νΈλ³΄λ€ λΉ λ₯΄λ©°, λ³νμ μκ°κ³Ό λ
Έλ ₯μ νμλ‘ ν©λλ€.
- Makefileμμ ν
μ€νΈλ₯Ό μ κ±°νμμμ€ (
src / nvim / testdir / Makefile
). - κ΄λ ¨λ
test.in
,test.out
,test.ok
νμΌμsrc / nvim / testdir /
μμ μ κ±°νμμμ€. - Lua ν
μ€νΈκ°
_spec.lua
μμ λλλ μ§ νμΈνμμμ€. - λΉλ λ‘κ·Έμμ ν μ€νΈ νμκ° μ¦κ°νλμ§ νμΈνμμμ€.
- μ ν
μ€νΈμ μ΄μ ν
μ€νΈμ λμΌν μ μ΄ λ¬Έμ (
^]
, ...)κ° ν¬ν¨λμ΄ μλμ§ νμΈνμμμ€.- μ€μ μ μ΄ λ¬Έμ λμ λλ±ν ν
μ€νΈ ννμ μ¬μ©νμμμ€ (μ :
^] λμ
).scripts / legacy2luatest.pl
μ€ν¬λ¦½νΈλ μ΄λ¬ν λ³ν μ€ μΌλΆλ₯Ό μλμΌλ‘ μνν©λλ€.
- μ€μ μ μ΄ λ¬Έμ λμ λλ±ν ν
μ€νΈ ννμ μ¬μ©νμμμ€ (μ :
- μ λ§λ‘ ``source ([= [...] =])
λΈλ‘μ ꡬ문 κ°μ‘°λ₯Ό κΉ¨λ¨λ¦΄ μ μμ΅λλ€.
: syntax sync from start`λ₯Ό μλν΄ μμ νμμμ€.