mirror of
https://github.com/ash-project/igniter.git
synced 2024-09-20 13:33:00 +12:00
c52b226a1c
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
45 lines
1 KiB
Elixir
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
|