diff --git a/.formatter.exs b/.formatter.exs index e4654bd5..6ede60f6 100644 --- a/.formatter.exs +++ b/.formatter.exs @@ -11,7 +11,7 @@ import_deps: [:gen_lsp], plugins: [Styler], inputs: [ - "{mix,.formatter}.exs", + ".formatter.exs", "{config,lib,}/**/*.{ex,exs}", "test/next_ls_test.exs", "test/test_helper.exs", diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 741ec0ed..780a09f9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,11 +11,8 @@ jobs: strategy: matrix: - otp: [24.x, 25.x, 26.x] - elixir: [1.13.x, 1.14.x, 1.15.x] - exclude: - - otp: 26.x - elixir: 1.13.x + otp: [26.0.2] + elixir: [1.15.4] steps: - uses: actions/checkout@v2 @@ -51,15 +48,15 @@ jobs: formatter: runs-on: ubuntu-latest - name: Formatter (1.15.x/26.x) + name: Formatter steps: - uses: actions/checkout@v2 - uses: erlef/setup-beam@v1 id: beam with: - otp-version: 26.x - elixir-version: 1.15.x + otp-version: 26.0.2 + elixir-version: 1.15.4 - uses: actions/cache@v3 with: path: | @@ -83,8 +80,8 @@ jobs: id: beam uses: erlef/setup-beam@v1 with: - otp-version: 26.x - elixir-version: 1.15.x + otp-version: 26.0.2 + elixir-version: 1.15.4 # Don't cache PLTs based on mix.lock hash, as Dialyzer can incrementally update even old ones # Cache key based on Elixir & Erlang version (also useful when running in matrix) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0096bf3a..aabbe8e7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,51 +14,55 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - otp: [25.3] - elixir: [1.14.x] + otp: [26.0.2] + elixir: [1.15.4] steps: - uses: google-github-actions/release-please-action@v3 id: release with: release-type: elixir package-name: next_ls - extra-files: | - bin/nextls - - uses: actions/checkout@v3 - if: ${{ steps.release.outputs.release_created }} + # - uses: actions/checkout@v3 + # if: ${{ steps.release.outputs.release_created }} - - uses: erlef/setup-beam@v1 - with: - otp-version: ${{matrix.otp}} - elixir-version: ${{matrix.elixir}} - if: ${{ steps.release.outputs.release_created }} + # - uses: erlef/setup-beam@v1 + # with: + # otp-version: ${{matrix.otp}} + # elixir-version: ${{matrix.elixir}} + # if: ${{ steps.release.outputs.release_created }} - - uses: actions/cache@v3 - id: cache - if: ${{ steps.release.outputs.release_created }} - with: - path: | - deps - _build - key: ${{ runner.os }}-mix-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('**/mix.lock') }} - restore-keys: | - ${{ runner.os }}-mix-${{ matrix.otp }}-${{ matrix.elixir }}- + # - uses: actions/cache@v3 + # id: cache + # if: ${{ steps.release.outputs.release_created }} + # with: + # path: | + # deps + # _build + # key: ${{ runner.os }}-mix-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('**/mix.lock') }} + # restore-keys: | + # ${{ runner.os }}-mix-${{ matrix.otp }}-${{ matrix.elixir }}- + + # - name: Install Dependencies + # if: steps.release.outputs.release_created && steps.cache.outputs.cache-hit != 'true' + # run: mix deps.get + + # we can't publish to hex anymore because burrito is a git dependency - - name: Install Dependencies - if: steps.release.outputs.release_created && steps.cache.outputs.cache-hit != 'true' - run: mix deps.get + # - name: publish to hex + # if: ${{ steps.release.outputs.release_created }} + # env: + # HEX_API_KEY: ${{secrets.HEX_API_KEY}} + # run: | + # mix hex.publish --yes - - name: publish to hex - if: ${{ steps.release.outputs.release_created }} - env: - HEX_API_KEY: ${{secrets.HEX_API_KEY}} - run: | - mix hex.publish --yes + # figure out how to get an apple silicon runner + # to be able to build the burritos on CI + # I will manually build them and upload for now - - name: Upload Release Artifact - if: ${{ steps.release.outputs.release_created }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: - gh release upload ${{ steps.release.outputs.tag_name }} ./bin/nextls + # - name: Upload Release Artifact + # if: ${{ steps.release.outputs.release_created }} + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: + # gh release upload ${{ steps.release.outputs.tag_name }} ./bin/nextls diff --git a/.gitignore b/.gitignore index 97b369c7..a19ae2b0 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ next_ls-*.tar # Temporary files, for example, from tests. /tmp/ +burrito_out diff --git a/.rtx.toml b/.rtx.toml index 03ed358b..619ebaae 100644 --- a/.rtx.toml +++ b/.rtx.toml @@ -1,3 +1,4 @@ [tools] -elixir = "1.15.2" +elixir = "1.15.4" erlang = "26.0.2" +zig = "0.10.0" diff --git a/bin/7z b/bin/7z new file mode 100755 index 00000000..34a9849f --- /dev/null +++ b/bin/7z @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +7zz "$@" diff --git a/bin/start b/bin/start index 38382807..e07fb166 100755 --- a/bin/start +++ b/bin/start @@ -2,6 +2,10 @@ # used for local development +set -e + cd "$(dirname "$0")"/.. || exit 1 -iex --sname "next-ls-$RANDOM" -S mix run --no-halt -e "Application.ensure_all_started(:next_ls)" -- "$@" +MIX_ENV=dev mix release --overwrite + +./burrito_out/next_ls_macos "$@" diff --git a/lib/next_ls/application.ex b/lib/next_ls/application.ex index f16ed19f..b250d7c9 100644 --- a/lib/next_ls/application.ex +++ b/lib/next_ls/application.ex @@ -7,6 +7,8 @@ defmodule NextLS.Application do @impl true def start(_type, _args) do + Node.start(:"next-ls-#{System.system_time()}", :shortnames) + children = [NextLS.LSPSupervisor] # See https://hexdocs.pm/elixir/Supervisor.html diff --git a/lib/next_ls/lsp_supervisor.ex b/lib/next_ls/lsp_supervisor.ex index 69fc3c56..5c72256c 100644 --- a/lib/next_ls/lsp_supervisor.ex +++ b/lib/next_ls/lsp_supervisor.ex @@ -34,7 +34,7 @@ defmodule NextLS.LSPSupervisor do :ignore else {opts, _, invalid} = - OptionParser.parse(System.argv(), + OptionParser.parse(Burrito.Util.Args.get_arguments(), strict: [stdio: :boolean, port: :integer] ) diff --git a/lib/next_ls/runtime.ex b/lib/next_ls/runtime.ex index 3d90f61b..d38cdc33 100644 --- a/lib/next_ls/runtime.ex +++ b/lib/next_ls/runtime.ex @@ -2,11 +2,6 @@ defmodule NextLS.Runtime do @moduledoc false use GenServer - @exe :next_ls - |> :code.priv_dir() - |> Path.join("cmd") - |> Path.absname() - def start_link(opts) do GenServer.start_link(__MODULE__, opts) end @@ -66,93 +61,114 @@ defmodule NextLS.Runtime do |> Base.encode64() |> String.to_charlist() - port = - Port.open( - {:spawn_executable, @exe}, - [ - :use_stdio, - :stderr_to_stdout, - :binary, - :stream, - cd: working_dir, - env: [ - {~c"LSP", ~c"nextls"}, - {~c"NEXTLS_PARENT_PID", parent}, - {~c"MIX_ENV", ~c"dev"}, - {~c"MIX_BUILD_ROOT", ~c".elixir-tools/_build"} - ], - args: [ - System.find_executable("elixir"), - "--no-halt", - "--sname", - sname, - "-S", - "mix", - "loadpaths", - "--no-compile" + bindir = System.get_env("BINDIR") + path = System.get_env("PATH") + new_path = String.replace(path, bindir <> ":", "") + + with dir when is_list(dir) <- :code.priv_dir(:next_ls) do + exe = + dir + |> Path.join("cmd") + |> Path.absname() + + port = + Port.open( + {:spawn_executable, exe}, + [ + :use_stdio, + :stderr_to_stdout, + :binary, + :stream, + cd: working_dir, + env: [ + {~c"LSP", ~c"nextls"}, + {~c"NEXTLS_PARENT_PID", parent}, + {~c"MIX_ENV", ~c"dev"}, + {~c"MIX_BUILD_ROOT", ~c".elixir-tools/_build"}, + {~c"ROOTDIR", false}, + {~c"BINDIR", false}, + {~c"RELEASE_ROOT", false}, + {~c"RELEASE_SYS_CONFIG", false}, + {~c"PATH", String.to_charlist(new_path)} + ], + args: [ + System.find_executable("elixir"), + "--no-halt", + "--sname", + sname, + "--cookie", + Node.get_cookie(), + "-S", + "mix", + "loadpaths", + "--no-compile" + ] ] - ] - ) + ) - Port.monitor(port) + Port.monitor(port) - me = self() + me = self() - Task.Supervisor.async_nolink(task_supervisor, fn -> - ref = Process.monitor(me) + Task.Supervisor.async_nolink(task_supervisor, fn -> + ref = Process.monitor(me) - receive do - {:DOWN, ^ref, :process, ^me, reason} -> - case reason do - :shutdown -> - NextLS.Logger.log(logger, "The runtime for #{name} has successfully shutdown.") + receive do + {:DOWN, ^ref, :process, ^me, reason} -> + case reason do + :shutdown -> + NextLS.Logger.log(logger, "The runtime for #{name} has successfully shutdown.") - reason -> - NextLS.Logger.error(logger, "The runtime for #{name} has crashed with reason: #{reason}.") - end - end - end) - - Task.start_link(fn -> - with {:ok, host} <- :inet.gethostname(), - node <- :"#{sname}@#{host}", - true <- connect(node, port, 120) do - NextLS.Logger.log(logger, "Connected to node #{node}") - - :next_ls - |> :code.priv_dir() - |> Path.join("monkey/_next_ls_private_compiler.ex") - |> then(&:rpc.call(node, Code, :compile_file, [&1])) - |> tap(fn - {:badrpc, :EXIT, {error, _}} -> - NextLS.Logger.error(logger, error) + reason -> + NextLS.Logger.error(logger, "The runtime for #{name} has crashed with reason: #{reason}.") + end + end + end) - _ -> - :ok - end) + Task.start_link(fn -> + with {:ok, host} <- :inet.gethostname(), + node <- :"#{sname}@#{host}", + true <- connect(node, port, 120) do + NextLS.Logger.log(logger, "Connected to node #{node}") - :rpc.call(node, Code, :put_compiler_option, [:parser_options, [columns: true, token_metadata: true]]) + :next_ls + |> :code.priv_dir() + |> Path.join("monkey/_next_ls_private_compiler.ex") + |> then(&:rpc.call(node, Code, :compile_file, [&1])) + |> tap(fn + {:badrpc, :EXIT, {error, _}} -> + NextLS.Logger.error(logger, error) - send(me, {:node, node}) - else - _ -> - on_initialized.(:error) - send(me, :cancel) - end - end) - - {:ok, - %{ - name: name, - compiler_ref: nil, - port: port, - task_supervisor: task_supervisor, - logger: logger, - parent: parent, - errors: nil, - registry: registry, - on_initialized: on_initialized - }} + _ -> + :ok + end) + + :rpc.call(node, Code, :put_compiler_option, [:parser_options, [columns: true, token_metadata: true]]) + + send(me, {:node, node}) + else + _ -> + on_initialized.(:error) + send(me, :cancel) + end + end) + + {:ok, + %{ + name: name, + compiler_ref: nil, + port: port, + task_supervisor: task_supervisor, + logger: logger, + parent: parent, + errors: nil, + registry: registry, + on_initialized: on_initialized + }} + else + _ -> + {:stop, :failed_to_boot} + end end @impl GenServer @@ -221,7 +237,7 @@ defmodule NextLS.Runtime do end defp connect(_node, _port, 0) do - raise "failed to connect" + false end defp connect(node, port, attempts) do diff --git a/mix.exs b/mix.exs index 416e8555..39535a7f 100644 --- a/mix.exs +++ b/mix.exs @@ -1,6 +1,7 @@ defmodule NextLS.MixProject do use Mix.Project + @version "0.7.1" # x-release-please-version def project do [ app: :next_ls, @@ -9,6 +10,7 @@ defmodule NextLS.MixProject do elixir: "~> 1.13", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, + releases: releases(), package: package(), deps: deps(), docs: [ @@ -28,6 +30,25 @@ defmodule NextLS.MixProject do ] end + def releases do + [ + next_ls: [ + steps: [:assemble, &Burrito.wrap/1], + burrito: [ + targets: [ + "#{@version}-darwin_arm64": [os: :darwin, cpu: :aarch64], + "#{@version}-darwin_amd64": [os: :darwin, cpu: :x86_64], + "#{@version}-linux_arm64": [os: :linux, cpu: :aarch64, libc: :gnu], + "#{@version}-linux_amd64": [os: :linux, cpu: :x86_64, libc: :gnu], + "#{@version}-linux_arm64_musl": [os: :linux, cpu: :aarch64, libc: :musl], + "#{@version}-linux_amd64_musl": [os: :linux, cpu: :x86_64, libc: :musl], + "#{@version}-windows_amd64": [os: :windows, cpu: :x86_64] + ] + ] + ] + ] + end + defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] @@ -38,6 +59,7 @@ defmodule NextLS.MixProject do {:esqlite, "~> 0.8.6"}, {:styler, "~> 0.8", only: :dev}, {:ex_doc, ">= 0.0.0", only: :dev}, + {:burrito, github: "burrito-elixir/burrito"}, {:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false} ] end diff --git a/mix.lock b/mix.lock index 8ef09834..68e022df 100644 --- a/mix.lock +++ b/mix.lock @@ -1,16 +1,24 @@ %{ + "burrito": {:git, "https://github.com/burrito-elixir/burrito.git", "d2672d25ad97fb2cb286fba5f9caaeb5edc1dd4a", []}, + "castore": {:hex, :castore, "1.0.3", "7130ba6d24c8424014194676d608cb989f62ef8039efd50ff4b3f33286d06db8", [:mix], [], "hexpm", "680ab01ef5d15b161ed6a95449fac5c6b8f60055677a8e79acf01b27baa4390b"}, "dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"}, "earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esqlite": {:hex, :esqlite, "0.8.6", "7852d506eb12bd519c1084f03c467f364f8ddff69227154e5e6df9cc6346fbbf", [:rebar3], [], "hexpm", "607e45f4da42601d8f530979417f57a4cd629ab49085891849302057e68ea188"}, "ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"}, + "finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"}, "gen_lsp": {:hex, :gen_lsp, "0.5.0", "463d25c2b81f64b95667e1e6fa9bf2a4ed00896f5e9abe2965bc50edeebae747", [:mix], [{:jason, "~> 1.3", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.5 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:schematic, "~> 0.2.1", [hex: :schematic, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "6d40e2315bd2206cb0e40e93c5d58b28ab15787214fea1066f6561df783ef7c9"}, + "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"}, "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, + "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, + "mint": {:hex, :mint, "1.5.1", "8db5239e56738552d85af398798c80648db0e90f343c8469f6c6d8898944fb6f", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "4a63e1e76a7c3956abd2c72f370a0d0aecddc3976dea5c27eccbecfa5e7d5b1e"}, "nimble_options": {:hex, :nimble_options, "1.0.2", "92098a74df0072ff37d0c12ace58574d26880e522c22801437151a159392270e", [:mix], [], "hexpm", "fd12a8db2021036ce12a309f26f564ec367373265b53e25403f0ee697380f1b8"}, "nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"}, + "nimble_pool": {:hex, :nimble_pool, "1.0.0", "5eb82705d138f4dd4423f69ceb19ac667b3b492ae570c9f5c900bb3d2f50a847", [:mix], [], "hexpm", "80be3b882d2d351882256087078e1b1952a28bf98d0a287be87e4a24a710b67a"}, + "req": {:hex, :req, "0.3.11", "462315e50db6c6e1f61c45e8c0b267b0d22b6bd1f28444c136908dfdca8d515a", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.9", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0e4b331627fedcf90b29aa8064cd5a95619ef6134d5ab13919b6e1c4d7cccd4b"}, "schematic": {:hex, :schematic, "0.2.1", "0b091df94146fd15a0a343d1bd179a6c5a58562527746dadd09477311698dbb1", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0b255d65921e38006138201cd4263fd8bb807d9dfc511074615cd264a571b3b1"}, "styler": {:hex, :styler, "0.8.1", "f3c0f65023e4bfbf7e7aa752d128b8475fdabfd30f96ee7314b84480cc56e788", [:mix], [], "hexpm", "1aa48d3aa689a639289af3d8254d40e068e98c083d6e5e3d1a695e71a147b344"}, "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, diff --git a/test/test_helper.exs b/test/test_helper.exs index 18118be6..b69eddb8 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,5 +1,3 @@ -{:ok, _pid} = Node.start(:"nextls#{System.system_time()}", :shortnames) - Logger.configure(level: :warning) timeout =