igniter/test/mix/task_test.exs
Zach Daniel c52b226a1c improvement: clean up dependency compiling logic
fix: ensure igniter is compiled first
fix: fetch deps after adding any nested installers
improvement: optimize module finding w/ async_stream
fix: various fixes & improvements to positional argument listing
improvement: add `rest: true` option for positional args
2024-07-27 16:57:10 -04:00

45 lines
1 KiB
Elixir

defmodule Igniter.Mix.TaskTest do
use ExUnit.Case
defmodule ExampleTask do
use Igniter.Mix.Task
def info(_argv, _parent) do
%Igniter.Mix.Task.Info{
schema: [
option: :string
],
positional: [
:a,
b: [
optional: true,
rest: true
]
]
}
end
def igniter(igniter, argv) do
options = options!(argv)
{args, _argv} = positional_args!(argv)
send(self(), {:args, args})
send(self(), {:options, options})
igniter
end
end
test "it parses options" do
ExampleTask.igniter(Igniter.new(), ["foo", "--option", "foo"])
assert_received {:options, options}
assert options[:option] == "foo"
assert_received {:args, %{a: "foo"}}
end
test "it parses rest options" do
ExampleTask.igniter(Igniter.new(), ["foo", "--option", "foo"])
assert_received {:options, options}
assert options[:option] == "foo"
assert_received {:args, %{a: "foo"}}
end
end