diff --git a/gnu/local.mk b/gnu/local.mk index 7fa7e7d818..1957fb66cb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -641,7 +641,6 @@ dist_patch_DATA = \ %D%/packages/patches/e2fsprogs-glibc-2.27.patch \ %D%/packages/patches/eigen-arm-neon-fixes.patch \ %D%/packages/patches/elfutils-tests-ptrace.patch \ - %D%/packages/patches/elixir-disable-failing-tests.patch \ %D%/packages/patches/elogind-glibc-2.27.patch \ %D%/packages/patches/einstein-build.patch \ %D%/packages/patches/emacs-browse-at-remote-cgit-gnu.patch \ diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index ceabc2a6c4..ed6bd00236 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -40,15 +40,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg")) - ;; FIXME: 27 tests (out of 4K) had to be disabled as - ;; they fail in the build environment. Common failures - ;; are: - ;; - Mix.Shell.cmd() fails with error 130 - ;; - The git_repo fixture cannot be found - ;; - Communication with spawned processes fails with EPIPE - ;; - Failure to copy files - (patches (search-patches "elixir-disable-failing-tests.patch")))) + "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -70,27 +62,6 @@ (("#!/usr/bin/env elixir") (string-append "#!" out "/bin/elixir")))) #t)) - (add-after 'unpack 'fix-or-disable-tests - (lambda* (#:key inputs #:allow-other-keys) - ;; Some tests require access to a home directory. - (setenv "HOME" "/tmp") - - ;; FIXME: These tests fail because the "git_repo" fixture does - ;; not exist or cannot be found. - (delete-file "lib/mix/test/mix/tasks/deps.git_test.exs") - - ;; FIXME: Mix.Shell.cmd() always fails with error code 130. - (delete-file "lib/mix/test/mix/shell_test.exs") - - ;; FIXME: - ;; disabled failing impure tests to make it build again. - ;; related discussion: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28034#14 - (delete-file "lib/elixir/test/elixir/kernel/cli_test.exs") - (delete-file "lib/elixir/test/elixir/kernel/dialyzer_test.exs") - (delete-file "lib/iex/test/iex/helpers_test.exs") - (delete-file "lib/ex_unit/test/ex_unit/capture_io_test.exs") - - #t)) (add-before 'build 'make-current ;; The Elixir compiler checks whether or not to compile files by ;; inspecting their timestamps. When the timestamp is equal to the @@ -102,6 +73,11 @@ (utime file recent recent 0 0))) (find-files "." ".*")) #t)) + (add-before 'check 'set-home + (lambda* (#:key inputs #:allow-other-keys) + ;; Some tests require access to a home directory. + (setenv "HOME" "/tmp") + #t)) (delete 'configure)))) (inputs `(("erlang" ,erlang) diff --git a/gnu/packages/patches/elixir-disable-failing-tests.patch b/gnu/packages/patches/elixir-disable-failing-tests.patch deleted file mode 100644 index 547598b292..0000000000 --- a/gnu/packages/patches/elixir-disable-failing-tests.patch +++ /dev/null @@ -1,284 +0,0 @@ -Most of these tests fail for unknown reasons when run in the chroot -environment of a Guix build process. - -Common failures are: - - * Mix.Shell.cmd() fails with error 130 - * The git_repo fixture cannot be found - * Communication with spawned processes fails with EPIPE - * Failure to copy files - - -diff --git a/lib/elixir/test/elixir/kernel/cli_test.exs b/lib/elixir/test/elixir/kernel/cli_test.exs -index 3ffd56c..1232d19 100644 ---- a/lib/elixir/test/elixir/kernel/cli_test.exs -+++ b/lib/elixir/test/elixir/kernel/cli_test.exs -@@ -39,6 +39,7 @@ end - defmodule Kernel.CLI.OptionParsingTest do - use ExUnit.Case, async: true - -+ @tag :skip - test "properly parses paths" do - root = fixture_path("../../..") |> to_charlist - list = elixir('-pa "#{root}/*" -pz "#{root}/lib/*" -e "IO.inspect(:code.get_path, limit: :infinity)"') -@@ -57,6 +58,7 @@ end - defmodule Kernel.CLI.AtExitTest do - use ExUnit.Case, async: true - -+ @tag :skip - test "invokes at_exit callbacks" do - assert elixir(fixture_path("at_exit.exs") |> to_charlist) == - 'goodbye cruel world with status 1\n' -@@ -66,6 +68,7 @@ end - defmodule Kernel.CLI.ErrorTest do - use ExUnit.Case, async: true - -+ @tag :skip - test "properly format errors" do - assert :string.str('** (throw) 1', elixir('-e "throw 1"')) == 0 - assert :string.str('** (ErlangError) erlang error: 1', elixir('-e "error 1"')) == 0 -@@ -86,6 +89,7 @@ defmodule Kernel.CLI.CompileTest do - {:ok, [tmp_dir_path: tmp_dir_path, beam_file_path: beam_file_path, fixture: fixture]} - end - -+ @tag :skip - test "compiles code", context do - assert elixirc('#{context[:fixture]} -o #{context[:tmp_dir_path]}') == '' - assert File.regular?(context[:beam_file_path]) -@@ -96,6 +100,7 @@ defmodule Kernel.CLI.CompileTest do - Code.delete_path context[:tmp_dir_path] - end - -+ @tag :skip - test "fails on missing patterns", context do - output = elixirc('#{context[:fixture]} non_existing.ex -o #{context[:tmp_dir_path]}') - assert :string.str(output, 'non_existing.ex') > 0, "expected non_existing.ex to be mentioned" -@@ -103,6 +108,7 @@ defmodule Kernel.CLI.CompileTest do - refute File.exists?(context[:beam_file_path]), "expected the sample to not be compiled" - end - -+ @tag :skip - test "fails on missing write access to .beam file", context do - compilation_args = '#{context[:fixture]} -o #{context[:tmp_dir_path]}' - -diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs -index 801d852..40fc5bc 100644 ---- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs -+++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs -@@ -60,16 +60,19 @@ defmodule Kernel.DialyzerTest do - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on rewrites", context do - copy_beam! context, Dialyzer.Rewrite - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on raise", context do - copy_beam! context, Dialyzer.Raise - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on macrocallback", context do - copy_beam! context, Dialyzer.Macrocallback - copy_beam! context, Dialyzer.Macrocallback.Impl -diff --git a/lib/elixir/test/elixir/system_test.exs b/lib/elixir/test/elixir/system_test.exs -index aafa559..0f9c178 100644 ---- a/lib/elixir/test/elixir/system_test.exs -+++ b/lib/elixir/test/elixir/system_test.exs -@@ -53,7 +53,8 @@ defmodule SystemTest do - assert System.endianness in [:little, :big] - assert System.endianness == System.compiled_endianness - end -- -+ -+ @tag :skip - test "argv/0" do - list = elixir('-e "IO.inspect System.argv" -- -o opt arg1 arg2 --long-opt 10') - {args, _} = Code.eval_string list, [] -diff --git a/lib/mix/test/mix/dep_test.exs b/lib/mix/test/mix/dep_test.exs -index fff3351..d6ed1b3 100644 ---- a/lib/mix/test/mix/dep_test.exs -+++ b/lib/mix/test/mix/dep_test.exs -@@ -244,6 +244,7 @@ defmodule Mix.DepTest do - end - end - -+ @tag :skip - test "remote converger" do - deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, - {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo")}] -@@ -301,6 +302,7 @@ defmodule Mix.DepTest do - end - end - -+ @tag :skip - test "remote converger is not invoked if deps diverge" do - deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, - {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo"), only: :test}] - -diff --git a/lib/mix/test/mix/shell/io_test.exs b/lib/mix/test/mix/shell/io_test.exs -index 9bfb6b4..d982ef3 100644 ---- a/lib/mix/test/mix/shell/io_test.exs -+++ b/lib/mix/test/mix/shell/io_test.exs -@@ -29,6 +29,7 @@ defmodule Mix.Shell.IOTest do - assert capture_io("", fn -> refute yes?("Ok?") end) - end - -+ @tag :skip - test "runs a given command" do - assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "hello\n" - -diff --git a/lib/mix/test/mix/shell/quiet_test.exs b/lib/mix/test/mix/shell/quiet_test.exs -index 626429b..99fab35 100644 ---- a/lib/mix/test/mix/shell/quiet_test.exs -+++ b/lib/mix/test/mix/shell/quiet_test.exs -@@ -29,6 +29,7 @@ defmodule Mix.Shell.QuietTest do - assert capture_io("", fn -> refute yes?("Ok?") end) - end - -+ @tag :skip - test "runs a given command" do - assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "" - -diff --git a/lib/mix/test/mix/tasks/cmd_test.exs b/lib/mix/test/mix/tasks/cmd_test.exs -index db4bf06..4d441f7 100644 ---- a/lib/mix/test/mix/tasks/cmd_test.exs -+++ b/lib/mix/test/mix/tasks/cmd_test.exs -@@ -3,6 +3,7 @@ Code.require_file "../../test_helper.exs", __DIR__ - defmodule Mix.Tasks.CmdTest do - use MixTest.Case - -+ @tag :skip - test "runs the command for each app" do - in_fixture "umbrella_dep/deps/umbrella", fn -> - Mix.Project.in_project(:umbrella, ".", fn _ -> -diff --git a/lib/mix/test/mix/tasks/deps.tree_test.exs b/lib/mix/test/mix/tasks/deps.tree_test.exs -index 4f09ff3..c371997 100644 ---- a/lib/mix/test/mix/tasks/deps.tree_test.exs -+++ b/lib/mix/test/mix/tasks/deps.tree_test.exs -@@ -29,6 +29,7 @@ defmodule Mix.Tasks.Deps.TreeTest do - end - end - -+ @tag :skip - test "shows the dependency tree", context do - Mix.Project.push ConvergedDepsApp - -@@ -109,6 +110,7 @@ defmodule Mix.Tasks.Deps.TreeTest do - end - end - -+ @tag :skip - test "shows the dependency tree in DOT graph format", context do - Mix.Project.push ConvergedDepsApp - -diff --git a/lib/mix/test/mix/tasks/deps_test.exs b/lib/mix/test/mix/tasks/deps_test.exs -index b061777..cc45cf8 100644 ---- a/lib/mix/test/mix/tasks/deps_test.exs -+++ b/lib/mix/test/mix/tasks/deps_test.exs -@@ -96,6 +96,7 @@ - end - end - -+ @tag :skip - test "prints list of dependencies and their lock status" do - Mix.Project.push DepsApp - -@@ -409,6 +409,7 @@ defmodule Mix.Tasks.DepsTest do - end - end - -+ @tag :skip - test "fails on diverged dependencies by requirement" do - Mix.Project.push ConvergedDepsApp - -@@ -440,6 +441,7 @@ defmodule Mix.Tasks.DepsTest do - end - end - -+ @tag :skip - test "fails on diverged dependencies even when optional" do - Mix.Project.push ConvergedDepsApp - -@@ -469,6 +471,7 @@ defmodule Mix.Tasks.DepsTest do - end - end - -+ @tag :skip - test "works with converged dependencies" do - Mix.Project.push ConvergedDepsApp - -@@ -491,6 +494,7 @@ defmodule Mix.Tasks.DepsTest do - purge [GitRepo, GitRepo.Mixfile] - end - -+ @tag :skip - test "works with overridden dependencies" do - Mix.Project.push OverriddenDepsApp - -diff --git a/lib/mix/test/mix/umbrella_test.exs b/lib/mix/test/mix/umbrella_test.exs -index 69f9428..406668a 100644 ---- a/lib/mix/test/mix/umbrella_test.exs -+++ b/lib/mix/test/mix/umbrella_test.exs -@@ -98,6 +98,7 @@ defmodule Mix.UmbrellaTest do - end - end - -+ @tag :skip - test "loads umbrella child dependencies in all environments" do - in_fixture "umbrella_dep/deps/umbrella", fn -> - Mix.Project.in_project :umbrella, ".", fn _ -> - -diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs -index 792222c..e90beb9 100644 ---- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs -+++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs -@@ -54,6 +54,7 @@ defmodule Kernel.DialyzerTest do - {:ok, [outdir: dir, dialyzer: dialyzer]} - end - -+ @tag :skip - test "no warnings on valid remote calls", context do - copy_beam! context, Dialyzer.RemoteCall - assert_dialyze_no_warnings! context -@@ -78,11 +79,13 @@ defmodule Kernel.DialyzerTest do - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on struct update", context do - copy_beam! context, Dialyzer.StructUpdate - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on protocol calls with opaque types", context do - copy_beam! context, Dialyzer.ProtocolOpaque - copy_beam! context, Dialyzer.ProtocolOpaque.Entity -@@ -90,6 +93,7 @@ defmodule Kernel.DialyzerTest do - assert_dialyze_no_warnings! context - end - -+ @tag :skip - test "no warnings on and/2 and or/2", context do - copy_beam! context, Dialyzer.BooleanCheck - assert_dialyze_no_warnings! context - -diff --git a/Makefile b/Makefile -index 2fc4f9a..aef8366 100644 ---- a/Makefile -+++ b/Makefile -@@ -201,7 +201,7 @@ $(TEST_EBIN)/%.beam: $(TEST_ERL)/%.erl - $(Q) mkdir -p $(TEST_EBIN) - $(Q) $(ERLC) -o $(TEST_EBIN) $< - --test_elixir: test_stdlib test_ex_unit test_logger test_mix test_eex test_iex -+test_elixir: test_stdlib test_ex_unit test_logger test_eex test_iex - - test_stdlib: compile - @ echo "==> elixir (exunit)" -