Packages
nerves_bootstrap
1.3.2
1.16.0
1.15.3
1.15.2
1.15.1
1.15.0
1.14.5
1.14.4
1.14.3
1.14.2
1.14.0
1.13.1
1.13.0
1.12.2
1.12.1
1.12.0
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.6
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.1
1.8.0
1.7.1
1.7.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.0
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
Nerves mix integration bootstrap and new project generator
Current section
Files
Jump to
Current section
Files
test/nerves_new_test.exs
Code.require_file("mix_helper.exs", __DIR__)
defmodule Nerves.NewTest do
use ExUnit.Case
import MixHelper
@app_name "my_device"
setup do
# The shell asks to install deps.
# We will politely say not to.
send(self(), {:mix_shell_input, :yes?, false})
:ok
end
test "new project default targets", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/README.md")
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ "app: :#{@app_name}"
assert file =~ "defp system(\"rpi\"), do: [{:nerves_system_rpi, \"~> 1.0\""
assert file =~ "defp system(\"rpi0\"), do: [{:nerves_system_rpi0, \"~> 1.0\""
assert file =~ "defp system(\"rpi2\"), do: [{:nerves_system_rpi2, \"~> 1.0\""
assert file =~ "defp system(\"rpi3\"), do: [{:nerves_system_rpi3, \"~> 1.0\""
assert file =~ "defp system(\"bbb\"), do: [{:nerves_system_bbb, \"~> 1.0\""
assert file =~ "defp system(\"ev3\"), do: [{:nerves_system_ev3, \"~> 1.0\""
assert file =~ "defp system(\"x86_64\"), do: [{:nerves_system_x86_64, \"~> 1.0\""
end)
end)
end
test "new project single target", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name, "--target", "rpi"])
assert_file("#{@app_name}/README.md")
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ "app: :#{@app_name}"
assert file =~ "defp system(\"rpi\"), do: [{:nerves_system_rpi, \"~> 1.0\""
refute file =~ "defp system(\"rpi0\"), do: [{:nerves_system_rpi0, \"~> 1.0\""
end)
end)
end
test "new project multiple target", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name, "--target", "rpi", "--target", "rpi3"])
assert_file("#{@app_name}/README.md")
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ "app: :#{@app_name}"
assert file =~ "defp system(\"rpi\"), do: [{:nerves_system_rpi, \"~> 1.0\""
assert file =~ "defp system(\"rpi3\"), do: [{:nerves_system_rpi3, \"~> 1.0\""
refute file =~ "defp system(\"rpi0\"), do: [{:nerves_system_rpi0, \"~> 1.0\""
end)
end)
end
test "new project defined cookie set", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name, "--cookie", "12345"])
assert_file("#{@app_name}/rel/vm.args", fn file ->
assert file =~ "-setcookie 12345"
end)
end)
end
test "new project default cookie set", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/rel/vm.args", fn file ->
assert file =~ ~r/.*-setcookie [a-zA-Z0-9]{64}\n|\r|\n\r/s
end)
end)
end
test "new project enables heart", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/rel/vm.args", fn file ->
assert file =~ "-heart -env HEART_BEAT_TIMEOUT"
end)
end)
end
test "new project enables embedded mode", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/rel/vm.args", fn file ->
assert file =~ "-mode embedded"
end)
end)
end
test "new project adds runtime_tools", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ ~r/extra_applications:.*runtime_tools/
end)
end)
end
test "new project includes ring_logger", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ ~r/:ring_logger/
end)
assert_file("#{@app_name}/config/config.exs", fn file ->
assert file =~ ~r/RingLogger/
end)
end)
end
test "new project sets build_embedded", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name])
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ ~r/build_embedded:/
end)
end)
end
test "new project init gadget", context do
in_tmp(context.test, fn ->
Mix.Tasks.Nerves.New.run([@app_name, "--init-gadget"])
assert_file("#{@app_name}/mix.exs", fn file ->
assert file =~ ~r"nerves_init_gadget"
end)
assert_file("#{@app_name}/config/config.exs", fn file ->
assert file =~ ~r"nerves_init_gadget"
assert file =~ ~r"nerves_firmware_ssh"
end)
end)
end
end