26 април, 2024

Време е за нова версия на Elixir, която носи подобрения в качеството на документацията, обработката на грешки, отчитането и ExUnit, както и тестовата библиотека на Elixir.

Elixir v1.7 изпълнява EEP 48. EEP 48 и има за цел да осигури оперативна съвместимост на документацията на всички езици, работещи на Erlang VM. Освен това EEP 48 има опцията да отбележите документацията с метаданни, които са вече възможни за Elixir:

@moduledoc “A brand new module”
@moduledoc authors: [“Jane”, “Mary”], since: “1.4.0”

Метаданните могат да бъдат зададени към @moduledoc, @typedoc и @doc.

Инструментът ExDoc е актуализиран, за да използваме метаданните и да предоставим по-добра документация за разработчиците. Някои от подобренията включват:

  • Отменените модули, функции, обратни повиквания и типове имат автоматично предупреждение към тях.

 

  • Функциите, макросите, обратните операции и типовете вече включват версията, в която са добавени.

 

  • Версиите на Future Elixir ще съдържат собствена секция за охранители в документацията и в страничната лента.

 

ExUnit винаги е използвал макроси от Elixir, за да осигури отлични отчети за грешки, когато се случи неуспех. Например, следния код:

assert “fox jumps over the lazy dog” == “brown fox jumps over the dog”

ще се провали със следния отчет:  

Утвърждаващият макрос е в състояние да разгледа кода, да извлече текущия файл, да извлече операндите и да покаже разлика между структурите за данни, заедно със статичното представяне, когато анонсирането не успее.

Все пак, понякога трябва да напишем твърдения като assert some_function (expr1, var2). Когато такова твърдение не е успешно, обикновено трябва да извършим повторно тестовете, като сега отстраняваме грешки или отпечатваме стойностите на expr1 и var2. В Elixir v1.7, когато едно “самотно” твърдение не успее, ние ще отпечатаме стойността на всеки аргумент поотделно. Като например assert some_vars (1 + 2, 3 + 4), получаваме този отчет: 

Докато ExUnit е нашата тестова рамка, Mix е нашият инструмент за изграждане. Разработчиците обикновено провеждат своите тестове, като добавят mix test.

На страна на нещата mix test има нов –failed флаг, който изпълнява всички тестове, които не успяха да минат последно. Накрая, отчетите за покритие, генерирани с mix test — cover включват резюме от полето:

Generating cover results …

Percentage | Module
———–|————————–
  100.00% | Plug.Exception.Any
  100.00% | Plug.Adapters.Cowboy2.Stream
  100.00% | Collectable.Plug.Conn
  100.00% | Plug.Crypto.KeyGenerator
  100.00% | Plug.Parsers
  100.00% | Plug.Head
  100.00% | Plug.Router.Utils
  100.00% | Plug.RequestId
      … | …
———–|————————–
   77.19% | Total

Тагове: , , , , , , , ,