gnu: elixir: Enable more tests and remove patch.
Previously, due to issues in the erlang package, many tests would fail, and the package would also nondeterministically fail to build. This is now fixed (by patching occurrences of /bin/sh in the erlang package), so all the tests can be run. * gnu/packages/elixir.scm (elixir)[source]: Remove patches. [arguments]: Remove the fix-or-disable-tests phase. Add a new set-home phase to set the HOME environment variable prior to running the tests. * gnu/packages/patches/elixir-disable-failing-tests.patch: Delete this file. * gnu/local.mk: Remove now deleted patch.
This commit is contained in:
parent
b5453aa7c3
commit
e7a25d2ae7
|
@ -641,7 +641,6 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/e2fsprogs-glibc-2.27.patch \
|
%D%/packages/patches/e2fsprogs-glibc-2.27.patch \
|
||||||
%D%/packages/patches/eigen-arm-neon-fixes.patch \
|
%D%/packages/patches/eigen-arm-neon-fixes.patch \
|
||||||
%D%/packages/patches/elfutils-tests-ptrace.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/elogind-glibc-2.27.patch \
|
||||||
%D%/packages/patches/einstein-build.patch \
|
%D%/packages/patches/einstein-build.patch \
|
||||||
%D%/packages/patches/emacs-browse-at-remote-cgit-gnu.patch \
|
%D%/packages/patches/emacs-browse-at-remote-cgit-gnu.patch \
|
||||||
|
|
|
@ -40,15 +40,7 @@
|
||||||
(file-name (string-append name "-" version ".tar.gz"))
|
(file-name (string-append name "-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg"))
|
"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"))))
|
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:test-target "test"
|
`(#:test-target "test"
|
||||||
|
@ -70,27 +62,6 @@
|
||||||
(("#!/usr/bin/env elixir")
|
(("#!/usr/bin/env elixir")
|
||||||
(string-append "#!" out "/bin/elixir"))))
|
(string-append "#!" out "/bin/elixir"))))
|
||||||
#t))
|
#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
|
(add-before 'build 'make-current
|
||||||
;; The Elixir compiler checks whether or not to compile files by
|
;; The Elixir compiler checks whether or not to compile files by
|
||||||
;; inspecting their timestamps. When the timestamp is equal to the
|
;; inspecting their timestamps. When the timestamp is equal to the
|
||||||
|
@ -102,6 +73,11 @@
|
||||||
(utime file recent recent 0 0)))
|
(utime file recent recent 0 0)))
|
||||||
(find-files "." ".*"))
|
(find-files "." ".*"))
|
||||||
#t))
|
#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))))
|
(delete 'configure))))
|
||||||
(inputs
|
(inputs
|
||||||
`(("erlang" ,erlang)
|
`(("erlang" ,erlang)
|
||||||
|
|
|
@ -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)"
|
|
||||||
|
|
Loading…
Reference in New Issue