Closed AlbertMoscow closed 11 years ago
Oh, this is awesome! Thanks for the report.
@AlbertMoscow, how have you compiled Elixir on Windows? Doesn't it require make to run all the Makefile
commands?
Last I checked, you can build Elixir in a MinGW shell.
@josevalim, that's right! I used MinGW shell with MSYS installed when was trying to compile Elixir on Windows.
http://www.mingw.org/wiki/MSYS
http://www.mingw.org/wiki/Getting_Started
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/
One should never forget to add to his or her Path:
;C:\MinGW\bin;C:\MinGW\msys\1.0\bin
and restart the computer. :)
Thanks @AlbertMoscow! I have fixed a couple of those but I don't have a Windows machine set up. Would you be interested in helping us getting our suite green on Windows? I am making myself available for any kind of help you may need on this task. :)
@josevalim, of course! Do you mean testing your fixes on my Windows machine, don't you?
@AlbertMoscow I mean by testing my fixes and helping us investigating and fixing the other ones. :)
@josevalim, I believe we understood each other! :)
José, are your fixes in master branch? I'd like to test them.
In the master branch, yes.
Great news! There are two books awaiting for Elixir 1.0 to come out by the end of this year, so you guys have whole six months to fix all 46 remaining failures in 1074 tests on Windows. :)
And with our community growing every day, hopefully many developers will help us tackle this task by sending lovely pull requests! :D :heart: :green_heart: :blue_heart: :yellow_heart: :purple_heart:
@AlbertMoscow I also have mingw etc, and eveything in the path, but somehow I get the following error:
Tom@Jommeke /C/dev/elixir/elixir
$ mix compile
/c/Program Files/elixir/bin/elixir: line 2: [: too many arguments
/c/Program Files/elixir/bin/elixir: line 2: [: too many arguments
c:/dev/elixir/elixir/lib/eex/lib/eex/smart_engine.ex:1: redefining module EEx.TransformerEngine
c:/dev/elixir/elixir/lib/elixir/lib/behaviour.ex:1: redefining module Behaviour
c:/dev/elixir/elixir/lib/eex/lib/eex/tokenizer.ex:1: redefining module EEx.Tokenizer
c:/dev/elixir/elixir/lib/eex/lib/eex/engine.ex:1: redefining module EEx.Engine
c:/dev/elixir/elixir/lib/elixir/lib/application/behaviour.ex:1: redefining module Application.Behaviour
c:/dev/elixir/elixir/lib/eex/lib/eex/compiler.ex:1: redefining module EEx.State
c:/dev/elixir/elixir/lib/elixir/lib/access.ex:3: redefining module Access
c:/dev/elixir/elixir/lib/eex/lib/eex.ex:1: redefining module EEx.SyntaxError
c:/dev/elixir/elixir/lib/eex/lib/eex/smart_engine.ex:47: redefining module EEx.AssignsEngine
Compiled lib/elixir/lib/application/behaviour.ex
Compiled lib/eex/lib/eex/engine.ex
c:/dev/elixir/elixir/lib/eex/lib/eex/smart_engine.ex:88: redefining module EEx.SmartEngine
c:/dev/elixir/elixir/lib/elixir/lib/binary/chars.ex:3: redefining module Binary.Chars
c:/dev/elixir/elixir/lib/elixir/lib/access.ex:22: redefining module Access.List
Compiled lib/elixir/lib/behaviour.ex
Compiled lib/eex/lib/eex/tokenizer.ex
c:/dev/elixir/elixir/lib/elixir/lib/binary/inspect.ex:3: redefining module Binary.Inspect
c:/dev/elixir/elixir/lib/elixir/lib/bitwise.ex:1: redefining module Bitwise
Compiled lib/eex/lib/eex/smart_engine.ex
c:/dev/elixir/elixir/lib/elixir/lib/access.ex:47: redefining module Access.Atom
== Compilation error on file lib/eex/lib/eex.ex ==
c:/dev/elixir/elixir/lib/elixir/lib/code.ex:1: redefining module Code
** (CompileError) c:/dev/elixir/elixir/lib/eex/lib/eex.ex:1: type '->'(_) undefined
Any tips/pointers/... ?
All, you need to run make compile
and make test
. Please don't use mix to compile elixir as it runs into bootstrapping issues! :D
Tried with make, other error:
Tom@Jommeke /C/dev/elixir/elixir
$ make compile
==> elixir (compile)
{error_logger,{{2013,6,17},{14,26,37}},std_error,"File operation error: eio. Target: :c:/dev/elixir/elixir/bin/../lib. Function: list_dir. Process: code_server.
"}
=ERROR REPORT==== 17-Jun-2013::16:26:37 ===
File operation error: eio. Target: :c:/dev/elixir/elixir/bin/../lib. Function: list_dir. Process: code_server.
{"init terminating in do_boot",{undef,[{elixir,start_cli,[],[]},{init,start_it,1,[{file,"init.erl"},{line,1054}]},{init,start_em,1,[{file,"init.erl"},{line,1034
}]}]}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
make: *** [lib/mix/ebin/mix.app] Error 1
Try make clean
, to clean up any possible garbage generated by mix compile
and then please try make compile
again. Maybe git clean -df
to
remove unchecked files too.
it crashes again on lib/mix/lib/mix/version.ex I presume:
==> eex (compile)
Compiled lib/eex/lib/eex/engine.ex
Compiled lib/eex/lib/eex/tokenizer.ex
Compiled lib/eex/lib/eex/smart_engine.ex
Compiled lib/eex/lib/eex.ex
Compiled lib/eex/lib/eex/compiler.ex
==> mix (compile)
Compiled lib/mix/lib/mix/archive.ex
Compiled lib/mix/lib/mix/deps/lock.ex
Compiled lib/mix/lib/mix/cli.ex
Compiled lib/mix/lib/mix/generator.ex
Compiled lib/mix/lib/mix.ex
Compiled lib/mix/lib/mix/local.ex
Compiled lib/mix/lib/mix/scm.ex
Compiled lib/mix/lib/mix/scm/path.ex
Compiled lib/mix/lib/mix/rebar.ex
Compiled lib/mix/lib/mix/shell.ex
Compiled lib/mix/lib/mix/scm/git.ex
Compiled lib/mix/lib/mix/sup.ex
Compiled lib/mix/lib/mix/shell/io.ex
Compiled lib/mix/lib/mix/shell/process.ex
Compiled lib/mix/lib/mix/deps/converger.ex
Compiled lib/mix/lib/mix/task.ex
Compiled lib/mix/lib/mix/tasks/iex.ex
Compiled lib/mix/lib/mix/tasks/archive.ex
Compiled lib/mix/lib/mix/tasks/loadpaths.ex
Compiled lib/mix/lib/mix/tasks/deps.unlock.ex
Compiled lib/mix/lib/mix/tasks/do.ex
Compiled lib/mix/lib/mix/tasks/clean.ex
Compiled lib/mix/lib/mix/tasks/local.rebar.ex
Compiled lib/mix/lib/mix/tasks/compile.yecc.ex
Compiled lib/mix/lib/mix/tasks/local.ex
Compiled lib/mix/lib/mix/tasks/run.ex
Compiled lib/mix/lib/mix/tasks/compile.leex.ex
Compiled lib/mix/lib/mix/tasks/app.start.ex
Compiled lib/mix/lib/mix/tasks/local.uninstall.ex
Compiled lib/mix/lib/mix/tasks/help.ex
Compiled lib/mix/lib/mix/tasks/compile.ex
Compiled lib/mix/lib/mix/tasks/local.install.ex
Compiled lib/mix/lib/mix/tasks/compile.elixir.ex
Compiled lib/mix/lib/mix/tasks/test.ex
Compiled lib/mix/lib/mix/deps/retriever.ex
Compiled lib/mix/lib/mix/tasks/compile.app.ex
Compiled lib/mix/lib/mix/tasks/escriptize.ex
Compiled lib/mix/lib/mix/deps.ex
Compiled lib/mix/lib/mix/utils.ex
Compiled lib/mix/lib/mix/tasks/deps.loadpaths.ex
Compiled lib/mix/lib/mix/tasks/deps.ex
Compiled lib/mix/lib/mix/tasks/deps.clean.ex
Compiled lib/mix/lib/mix/tasks/deps.check.ex
Compiled lib/mix/lib/mix/tasks/deps.get.ex
Compiled lib/mix/lib/mix/tasks/deps.update.ex
Compiled lib/mix/lib/mix/tasks/deps.compile.ex
Compiled lib/mix/lib/mix/tasks/compile.erlang.ex
Compiled lib/mix/lib/mix/server.ex
Compiled lib/mix/lib/mix/project.ex
Compiled lib/mix/lib/mix/tasks/new.ex
Compiled lib/mix/lib/mix/exceptions.ex
Compiled lib/mix/lib/mix/version.ex
{error_logger,{{2013,6,17},{14,34,9}},std_error,"File operation error: eio. Target: :c:/dev/elixir/elixir/bin/../lib. Function: list_dir. Process: code_server."
}
=ERROR REPORT==== 17-Jun-2013::16:34:09 ===
File operation error: eio. Target: :c:/dev/elixir/elixir/bin/../lib. Function: list_dir. Process: code_server.
{"init terminating in do_boot",{undef,[{elixir,start_cli,[],[]},{init,start_it,1,[{file,"init.erl"},{line,1054}]},{init,start_em,1,[{file,"init.erl"},{line,1034
}]}]}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
make: *** [lib/mix/ebin/mix.app] Error 1
Tom@Jommeke /C/dev/elixir/elixir
@ToJans It seems it compiled mix successfully and then it attempted to run something else but failed. It seems Elixir is failing to boot in the first place. Can you get bin/elixir -v
to run?
Elixir works:
Tom@Jommeke /C/dev/elixir/elixir
$ bin/elixir -v
Elixir 0.9.3.dev
However, when I run make test
it crashes, because it tries to compile mix
I think.
Could it be that this has something to do with a place where you fetch the version, or is this hard-coded?
When I run bin/mix -v I get the wrong version:
Tom@Jommeke /C/dev/elixir/elixir
$ bin/mix -v
Elixir 0.9.2.dev
Ah, I know what is happening! The Makefile is trying to run bin/elixir
which calls:
$ erl -env ERL_LIBS $ERL_LIBS:"$SCRIPT_PATH/../lib"
Notice it uses :
as a separator but, for Windows, the separator should be ;
. So Erlang considers the path to be invalid and fails to boot. Now, I don't know why bin/mix -v
works... maybe because it is automatically picking up the .bat
file?
Anyway, the solution seems to change the Makefile to pick the bin/elixir.bat
instead of bin/elixir
for Windows. We could give it a rough try though: Try replacing bin/elixir
by bin/elixir.bat
in the Makefile, the same for bin/elixirc
. Does it solve the issue?
I tried it, but it does not work, as MSys has problems executing batch files apparently:
checkout this gist: https://gist.github.com/ToJans/5797448/revisions
@ToJans for now, it may be easier to change the bin/elixir file to use ;
instead of :
in your local version. Do you have any idea of how we could find this information out in the shell file?
I have not tried yet,as I first have to put the kids to bed, but in the mean time I found a way to detect msys:
Tom@Jommeke /C/dev/elixir/elixir/bin
$ which msys-1.0.dll
/bin/msys-1.0.dll
I would assume msys-1.0.dll
is unavailable on non-msys-systems ;-)
Is there a way we could run this check but without the version? :)
Tom@Jommeke /C/dev/elixir/elixir/bin
$ echo $MSYSTEM
MINGW32
@ToJans Awesome! Can you send a pull request that changes our bin/elixir file to use ";" or ":" based on $MSYSTEM or would you prefer if I tackled that here? :) I really appreciate all the help!
I changed all the :
to \;
, but the build seems to fail:
https://gist.github.com/ToJans/5799189/revisions
This is the output from make compile
(after a make clean
):
Tom@Jommeke /C/dev/elixir/elixir
$ make clean
==> elixir (clean)
rm -rf ebin
rm -rf lib/*/ebin
rm -rf lib/*/test/tmp
rm -rf lib/mix/test/fixtures/git_repo
rm -rf lib/*/tmp
rm -rf lib/elixir/src/elixir.app.src
rm -rf lib/elixir/src/*_lexer.erl
rm -rf lib/elixir/src/*_parser.erl
rm -rf lib/elixir/test/ebin
Tom@Jommeke /C/dev/elixir/elixir
$ make compile
==> elixir (compile)
Compiled src/elixir_parser.yrl
Compiled src/elixir.erl
Compiled src/elixir_aliases.erl
Compiled src/elixir_clauses.erl
Compiled src/elixir_code_server.erl
Compiled src/elixir_compiler.erl
Compiled src/elixir_def_defaults.erl
Compiled src/elixir_def_local.erl
Compiled src/elixir_def.erl
Compiled src/elixir_def_overridable.erl
Compiled src/elixir_errors.erl
Compiled src/elixir_import.erl
Compiled src/elixir_dispatch.erl
Compiled src/elixir_literal.erl
Compiled src/elixir_interpolation.erl
Compiled src/elixir_module.erl
Compiled src/elixir_partials.erl
Compiled src/elixir_macros.erl
Compiled src/elixir_quote.erl
Compiled src/elixir_scope.erl
Compiled src/elixir_sup.erl
Compiled src/elixir_tracker.erl
Compiled src/elixir_translator.erl
Compiled src/elixir_tree_helpers.erl
Compiled src/elixir_tokenizer.erl
Compiled src/elixir_try.erl
Compiled src/elixir_parser.erl
==> bootstrap (compile)
Compiled lib/elixir/lib/kernel.ex
Compiled lib/elixir/lib/keyword.ex
Compiled lib/elixir/lib/list.ex
Compiled lib/elixir/lib/kernel/typespec.ex
Compiled lib/elixir/lib/module.ex
Compiled lib/elixir/lib/record.ex
Compiled lib/elixir/lib/macro.ex
Compiled lib/elixir/lib/macro/env.ex
Compiled lib/elixir/lib/exception.ex
Compiled lib/elixir/lib/code.ex
Compiled lib/elixir/lib/protocol.ex
Compiled lib/elixir/lib/enum.ex
Compiled lib/elixir/lib/binary/inspect.ex
Compiled lib/elixir/lib/binary/chars.ex
Compiled lib/elixir/lib/io.ex
Compiled lib/elixir/lib/path.ex
Compiled lib/elixir/lib/system.ex
Compiled lib/elixir/lib/kernel/cli.ex
Compiled lib/elixir/lib/kernel/error_handler.ex
Compiled lib/elixir/lib/kernel/parallel_compiler.ex
Compiled lib/elixir/lib/kernel/record_rewriter.ex
Compiled lib/elixir/lib/module/dispatch_tracker.ex
==> kernel (compile)
{"init terminating in do_boot",{undef,[{elixir,start_cli,[],[]},{init,start_it,1,[{file,"init.erl"},{line,1054}]},{init,start_em,1,[{file,"init.erl"},{line,1034
}]}]}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
make: *** [lib/elixir/ebin/Elixir.Kernel.beam] Error 1
The code is failing because it can't find the elixir.beam
file. So I am assuming that replacing ":" by ";" in ERL_LIBS wasn't effective, as it still can't find the directory. :(
Here are some ideas. If you replace in bin/elixir
:
-env ERL_LIBS $ERL_LIBS:"$SCRIPT_PATH/../lib"
Simply by:
-env ERL_LIBS $SCRIPT_PATH/../lib
Does it work?
Also, what is $SCRIPT_PATH/../lib
returning for you? Maybe it is pointing to the wrong location? If so, maybe that's why it can't find elixir.beam
?
$SCRIPT_PATH/../lib
points to /c:/dev/elixir/elixir/bin/../lib
The beam file is not under the lib
folder, but under the lib/elixir/ebin/elixir
folder, maybe that is the problem?
Tom@Jommeke /C/dev/elixir/elixir
$ ls lib/
eex/ elixir/ ex_unit/ iex/ mix/
Tom@Jommeke /C/dev/elixir/elixir
$ ls lib/elixir/
ebin/ include/ lib/ mix.exs priv/ rebar.config src/ test/
Tom@Jommeke /C/dev/elixir/elixir
$ ls lib/elixir/ebin/
Display all 147 possibilities? (y or n)
Tom@Jommeke /C/dev/elixir/elixir
$ ls lib/elixir/ebin/elixir
elixir.app elixir_def.beam elixir_import.beam elixir_partials.beam elixir_translator.beam
elixir.beam elixir_def_defaults.beam elixir_interpolation.beam elixir_quote.beam elixir_tree_helpers.beam
elixir_aliases.beam elixir_def_local.beam elixir_literal.beam elixir_scope.beam elixir_try.beam
elixir_clauses.beam elixir_def_overridable.beam elixir_macros.beam elixir_sup.beam
elixir_code_server.beam elixir_dispatch.beam elixir_module.beam elixir_tokenizer.beam
elixir_compiler.beam elixir_errors.beam elixir_parser.beam elixir_tracker.beam
/c:/dev/elixir/elixir/bin/../lib
this is supposed to be correct (unless Windows is choking on the ..
). ERL_LIBS works by automatically adding everything in */ebin
to the load path, that's why it is expected to work. :)
Aha!! I found out a while ago that on windows things like erl -pa lib/*/ebin
do not work on windows... I solved this by adding -pa lib/xxx/ebin
for every individual folder.
Somehow all of this does not make sense, as @AlbertMoscow had no problems compiling... Maybe we should wait for his input?
Another idea: maybe we can setup a screen sharing session or something similar tomorrow, as I feel this might go a bit quicker; I can use Skype or Join.me or something similar....
@ToJans, hi! I assume, you have msysgit (Git for Windows) installed on your computer along with MinGW and MSYS (if not, please, download it from here: http://git-scm.com/downloads).
Here is my approach of how to make test the master branch of Elixir on Windows:
1) Run "Git Bash" and type in this:
$ pwd
$ git clone https://github.com/elixir-lang/elixir.git --branch master
The first command (pwd) shows your working directory.
The second command clones master branch into 'elixir' folder in your working directory. If the folder doesn't exist, it will be created. So before running the second command, please check, if the folder 'elixir' exists in your working directory and delete it, if it's there, to start all from scratch.
In my case the output of pwd command is "/u".
2) Run "MinGW Shell" and type in this:
$ cd u:
$ cd elixir/
$ make test
That's all!
This is with MSysGit
And his is with c:\mingw\msys\1.0\Msys.bat
Could it be a mingw version issue? Btw, @ToJans I have sent you an e-mail regarding screen sharing session. Did you get it? :)
Btw, regarding which path separator we should use, I found this on Stack Overflow.
Just adding me in to keep track of this issue. Note that cygwin returns $OSTYPE=cygwin as well.
Also for the various NIFs that are used (e.g. exdoc's sundown dependency) we can expect different behaviour depending on what compiler is used (gcc / mingw chain, gcc / cygwin, and the more common MS VC++ under cmd.exe).
Elixir should be compiling on MinGW after this commit. @AlbertMoscow, could you please you can still compile Elixir? Since it already worked for you, I want to make sure it isn't broken after those latest changes.
@josevalim, sure! BTW, one more failure was eliminated. :)
This is an output for "make compile" after "make clean" command:
tovmasyan@input255 /u/elixir $ make clean ==> elixir (clean) rm -rf ebin rm -rf lib//ebin rm -rf lib//test/tmp rm -rf lib/mix/test/fixtures/gitrepo rm -rf lib//tmp rm -rf lib/elixir/src/elixir.app.src rm -rf lib/elixir/src/__lexer.erl rm -rf lib/elixir/src/*_parser.erl rm -rf lib/elixir/test/ebin
tovmasyan@input255 /u/elixir
$ make compile
==> elixir (compile)
Compiled src/elixir_parser.yrl
Compiled src/elixir_clauses.erl
Compiled src/elixir_aliases.erl
Compiled src/elixir.erl
Compiled src/elixir_code_server.erl
Compiled src/elixir_compiler.erl
Compiled src/elixir_def.erl
Compiled src/elixir_def_defaults.erl
Compiled src/elixir_def_local.erl
Compiled src/elixir_def_overridable.erl
Compiled src/elixir_errors.erl
Compiled src/elixir_dispatch.erl
Compiled src/elixir_import.erl
Compiled src/elixir_literal.erl
Compiled src/elixir_interpolation.erl
Compiled src/elixir_macros.erl
Compiled src/elixir_module.erl
Compiled src/elixir_partials.erl
Compiled src/elixir_quote.erl
Compiled src/elixir_scope.erl
Compiled src/elixir_sup.erl
Compiled src/elixir_tracker.erl
Compiled src/elixir_tokenizer.erl
Compiled src/elixir_translator.erl
Compiled src/elixir_tree_helpers.erl
Compiled src/elixir_try.erl
Compiled src/elixir_parser.erl
==> bootstrap (compile)
Compiled lib/elixir/lib/kernel.ex
Compiled lib/elixir/lib/keyword.ex
Compiled lib/elixir/lib/list.ex
Compiled lib/elixir/lib/kernel/typespec.ex
Compiled lib/elixir/lib/module.ex
Compiled lib/elixir/lib/record.ex
Compiled lib/elixir/lib/macro.ex
Compiled lib/elixir/lib/macro/env.ex
Compiled lib/elixir/lib/exception.ex
Compiled lib/elixir/lib/code.ex
Compiled lib/elixir/lib/protocol.ex
Compiled lib/elixir/lib/enum.ex
Compiled lib/elixir/lib/binary/inspect.ex
Compiled lib/elixir/lib/binary/chars.ex
Compiled lib/elixir/lib/io.ex
Compiled lib/elixir/lib/path.ex
Compiled lib/elixir/lib/system.ex
Compiled lib/elixir/lib/kernel/cli.ex
Compiled lib/elixir/lib/kernel/error_handler.ex
Compiled lib/elixir/lib/kernel/parallel_compiler.ex
Compiled lib/elixir/lib/kernel/record_rewriter.ex
Compiled lib/elixir/lib/module/dispatch_tracker.ex
==> kernel (compile)
Compiled lib/elixir/lib/application/behaviour.ex
Compiled lib/elixir/lib/behaviour.ex
Compiled lib/elixir/lib/access.ex
Compiled lib/elixir/lib/binary/chars.ex
Compiled lib/elixir/lib/bitwise.ex
Compiled lib/elixir/lib/code.ex
Compiled lib/elixir/lib/binary/inspect.ex
Compiled lib/elixir/lib/dict.ex
Compiled lib/elixir/lib/enum.ex
Compiled lib/elixir/lib/gen_event/behaviour.ex
Compiled lib/elixir/lib/gen_server/behaviour.ex
Compiled lib/elixir/lib/hash_dict.ex
Compiled lib/elixir/lib/exception.ex
Compiled lib/elixir/lib/io.ex
Compiled lib/elixir/lib/kernel/cli.ex
Compiled lib/elixir/lib/kernel/error_handler.ex
Compiled lib/elixir/lib/kernel/parallel_compiler.ex
Compiled lib/elixir/lib/kernel.ex
Compiled lib/elixir/lib/kernel/parallel_require.ex
Compiled lib/elixir/lib/kernel/record_rewriter.ex
Compiled lib/elixir/lib/kernel/special_forms.ex
Compiled lib/elixir/lib/keyword.ex
Compiled lib/elixir/lib/kernel/typespec.ex
Compiled lib/elixir/lib/list.ex
Compiled lib/elixir/lib/list_dict.ex
Compiled lib/elixir/lib/list/chars.ex
Compiled lib/elixir/lib/macro/env.ex
Compiled lib/elixir/lib/macro.ex
Compiled lib/elixir/lib/module/dispatch_tracker.ex
Compiled lib/elixir/lib/module.ex
Compiled lib/elixir/lib/node.ex
Compiled lib/elixir/lib/option_parser.ex
Compiled lib/elixir/lib/port.ex
Compiled lib/elixir/lib/path.ex
Compiled lib/elixir/lib/process.ex
Compiled lib/elixir/lib/protocol.ex
Compiled lib/elixir/lib/range.ex
Compiled lib/elixir/lib/record.ex
Compiled lib/elixir/lib/record/extractor.ex
Compiled lib/elixir/lib/regex.ex
Compiled lib/elixir/lib/io/ansi.ex
Compiled lib/elixir/lib/string.ex
Compiled lib/elixir/lib/file.ex
Compiled lib/elixir/lib/supervisor/behaviour.ex
Compiled lib/elixir/lib/tuple.ex
Compiled lib/elixir/lib/uri.ex
Compiled lib/elixir/lib/system.ex
Compiled lib/elixir/lib/uri/parser.ex
Compiled lib/elixir/lib/uri/http.ex
Compiled lib/elixir/lib/uri/https.ex
Compiled lib/elixir/lib/uri/ftp.ex
Compiled lib/elixir/lib/uri/ldap.ex
Compiled lib/elixir/lib/uri/sftp.ex
Compiled lib/elixir/lib/uri/tftp.ex
make[1]: Entering directory /u/elixir' ==> unicode (compile) This step can take up to a minute to compile in order to embed the Unicode database Compiled lib/elixir/priv/unicode.ex make[1]: Leaving directory
/u/elixir'
==> elixir (compile)
==> eex (compile)
Compiled lib/eex/lib/eex/compiler.ex
Compiled lib/eex/lib/eex.ex
Compiled lib/eex/lib/eex/engine.ex
Compiled lib/eex/lib/eex/smart_engine.ex
Compiled lib/eex/lib/eex/tokenizer.ex
==> mix (compile)
Compiled lib/mix/lib/mix/archive.ex
Compiled lib/mix/lib/mix.ex
Compiled lib/mix/lib/mix/cli.ex
Compiled lib/mix/lib/mix/deps/converger.ex
Compiled lib/mix/lib/mix/deps/lock.ex
Compiled lib/mix/lib/mix/deps.ex
Compiled lib/mix/lib/mix/deps/retriever.ex
Compiled lib/mix/lib/mix/generator.ex
Compiled lib/mix/lib/mix/local.ex
Compiled lib/mix/lib/mix/exceptions.ex
Compiled lib/mix/lib/mix/rebar.ex
Compiled lib/mix/lib/mix/scm.ex
Compiled lib/mix/lib/mix/scm/path.ex
Compiled lib/mix/lib/mix/scm/git.ex
Compiled lib/mix/lib/mix/shell.ex
Compiled lib/mix/lib/mix/shell/io.ex
Compiled lib/mix/lib/mix/shell/process.ex
Compiled lib/mix/lib/mix/sup.ex
Compiled lib/mix/lib/mix/project.ex
Compiled lib/mix/lib/mix/server.ex
Compiled lib/mix/lib/mix/task.ex
u:/elixir/lib/mix/lib/mix/tasks/archive.ex:25: variable argv is unused
Compiled lib/mix/lib/mix/tasks/archive.ex
Compiled lib/mix/lib/mix/tasks/clean.ex
Compiled lib/mix/lib/mix/tasks/app.start.ex
Compiled lib/mix/lib/mix/tasks/compile.app.ex
Compiled lib/mix/lib/mix/tasks/compile.elixir.ex
Compiled lib/mix/lib/mix/tasks/compile.ex
Compiled lib/mix/lib/mix/tasks/compile.leex.ex
Compiled lib/mix/lib/mix/tasks/compile.erlang.ex
Compiled lib/mix/lib/mix/tasks/compile.yecc.ex
Compiled lib/mix/lib/mix/tasks/deps.check.ex
Compiled lib/mix/lib/mix/tasks/deps.clean.ex
Compiled lib/mix/lib/mix/tasks/deps.compile.ex
Compiled lib/mix/lib/mix/tasks/deps.ex
Compiled lib/mix/lib/mix/tasks/deps.get.ex
Compiled lib/mix/lib/mix/tasks/deps.loadpaths.ex
Compiled lib/mix/lib/mix/tasks/deps.unlock.ex
Compiled lib/mix/lib/mix/tasks/deps.update.ex
Compiled lib/mix/lib/mix/tasks/do.ex
Compiled lib/mix/lib/mix/tasks/help.ex
Compiled lib/mix/lib/mix/tasks/iex.ex
Compiled lib/mix/lib/mix/tasks/escriptize.ex
Compiled lib/mix/lib/mix/tasks/loadpaths.ex
Compiled lib/mix/lib/mix/tasks/local.ex
Compiled lib/mix/lib/mix/tasks/local.install.ex
Compiled lib/mix/lib/mix/tasks/local.rebar.ex
Compiled lib/mix/lib/mix/tasks/local.uninstall.ex
Compiled lib/mix/lib/mix/tasks/run.ex
Compiled lib/mix/lib/mix/tasks/test.ex
Compiled lib/mix/lib/mix/utils.ex
Compiled lib/mix/lib/mix/tasks/new.ex
Compiled lib/mix/lib/mix/version.ex
Generated mix.app
==> ex_unit (compile)
Compiled lib/ex_unit/lib/ex_unit.ex
Compiled lib/ex_unit/lib/ex_unit/assertions.ex
Compiled lib/ex_unit/lib/ex_unit/callbacks.ex
Compiled lib/ex_unit/lib/ex_unit/case.ex
Compiled lib/ex_unit/lib/ex_unit/case_template.ex
Compiled lib/ex_unit/lib/ex_unit/capture_io.ex
Compiled lib/ex_unit/lib/ex_unit/formatter.ex
Compiled lib/ex_unit/lib/ex_unit/doc_test.ex
Compiled lib/ex_unit/lib/ex_unit/cli_formatter.ex
Compiled lib/ex_unit/lib/ex_unit/server.ex
Compiled lib/ex_unit/lib/ex_unit/runner.ex
Compiled lib/ex_unit/lib/ex_unit/sup.ex
Generated ex_unit.app
Generated eex.app
==> iex (compile)
Compiled lib/iex/lib/iex.ex
Compiled lib/iex/lib/iex/cli.ex
Compiled lib/iex/lib/iex/autocomplete.ex
Compiled lib/iex/lib/iex/history.ex
Compiled lib/iex/lib/iex/helpers.ex
Compiled lib/iex/lib/iex/introspection.ex
Compiled lib/iex/lib/iex/remsh.ex
Compiled lib/iex/lib/iex/options.ex
Compiled lib/iex/lib/iex/server.ex
Generated iex.app
tovmasyan@input255 /u/elixir $
You can notice a warning "variable argv is unused" in line:
u:/elixir/lib/mix/lib/mix/tasks/archive.ex:25: variable argv is unused
Right now I get 38 errors; the most of them are windows-file/path related, so we should probably implement different tests here, unless this is unexpected behavior?
Failures:
1) test_absname_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:84
2) test_absname_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:96
3) test_expand_path_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:118
4) test_expand_path_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:134
5) test_argv (SystemTest)
** (SyntaxError) nofile:1: syntax error before: 'ERROR'
stacktrace:
6) test_at_exit (SystemTest)
** (ExUnit.ExpectationError)
expected: []
to be equal to (==): '0\n'
at test/elixir/system_test.exs:51
7) test_path (Kernel.CLI.OptionParsingTest)
** (Protocol.UndefinedError) protocol Enumerable not implemented for nil
at test/elixir/kernel/cli_test.exs:25
8) test_possible_deadlock (Kernel.CLI.CompileTest)
** (ExUnit.AssertionError) expected foo.ex to miss module Bar
at test/elixir/kernel/cli_test.exs:88
9) test_rm_rf (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:772
10) test_rm_rf! (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:842
11) test_rm_rf_with_char_list (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:806
12) test_rm_rf_with_file (FileTest.Rm)
** (ExUnit.ExpectationError)
expected: {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp","c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a"]}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp"]}
at test/elixir/file_test.exs:826
13) test_rm_rf_with_invalid (FileTest.Rm)
** (ExUnit.ExpectationError)
expected: {:ok,[]}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:836
14) test_rm_rf_with_invalid! (FileTest.Rm)
** (ExUnit.AssertionError) Expected File.Error exception but nothing was raised
at test/elixir/file_test.exs:861
15) test_rm_rf_with_symlink (FileTest.Rm)
** (ExUnit.AssertionError) Expected false to be true
at test/elixir/file_test.exs:794
16) test_rmdir_with_file (FileTest.Rm)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:751
17) test_rmdir_with_file! (FileTest.Rm)
** (ExUnit.ExpectationError)
expected error message: "could not remove directory c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt: not a directory"
to match: "could not remove directory c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt: I/O error"
at test/elixir/file_test.exs:764
18) test_mkdir_p_with_invalid_path (FileTest.Mkdir)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:670
19) test_mkdir_p_with_invalid_path! (FileTest.Mkdir)
** (ExUnit.ExpectationError)
expected error message: "could not make directory (with -p) c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: not a directory"
to match: "could not make directory (with -p) c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: no such file or directory
"
at test/elixir/file_test.exs:689
20) test_mkdir_with_invalid_path (FileTest.Mkdir)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:589
21) test_mkdir_with_invalid_path! (FileTest.Mkdir)
** (ExUnit.ExpectationError)
expected error message: "could not make directory c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: not a directory"
to match: "could not make directory c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: no such file or directory"
at test/elixir/file_test.exs:608
22) test_cp_r! (FileTest.Cp)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:347
23) test_cp_r_with_dir_and_file_conflict (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:271
24) test_cp_r_with_src_dir_and_dest_dir (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:188
25) test_cp_r_with_src_dir_and_dest_dir_using_lists (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:288
26) test_cp_r_with_src_dir_and_dest_file (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:232
27) test_cp_r_with_src_dir_and_dest_unknown (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:247
28) test_cp_r_with_src_dir_dot_and_dest_dir (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:215
29) test_cp_r_with_src_file_and_dest_dir (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/file.txt"]}
at test/elixir/file_test.exs:157
30) test_cp_r_with_src_file_and_dest_file (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/sample.txt"]}
at test/elixir/file_test.exs:141
31) test_cp_r_with_src_file_and_dest_unknown (FileTest.Cp)
** (ExUnit.AssertionError) Expected true to be false
at test/elixir/file_test.exs:169
32) test_cp_r_with_src_with_file_conflict (FileTest.Cp)
** (File.Error) could not write to file c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory
at test/elixir/file_test.exs:305
33) test_cp_r_with_src_with_file_conflict_callback (FileTest.Cp)
** (File.Error) could not write to file c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory
at test/elixir/file_test.exs:321
34) test_cp_with_src_file_and_dest_unknown (FileTest.Cp)
** (ExUnit.AssertionError) Expected true to be false
at test/elixir/file_test.exs:61
35) test_invalid_cd (FileTest)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:1073
36) test_invalid_cd! (FileTest)
** (ExUnit.ExpectationError)
expected error message: "could not set current working directory to c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt: not a directory"
to match: "could not set current working directory to c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt: no such file or direct
ory"
at test/elixir/file_test.exs:1078
37) test_touch_with_failure (FileTest)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:1122
38) test_touch_with_failure! (FileTest)
** (ExUnit.ExpectationError)
expected error message: "could not touch c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/bar: not a directory"
to match: "could not touch c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/file.txt/bar: no such file or directory"
at test/elixir/file_test.exs:1131
Finished in 8.4 seconds (5.1s on load, 3.2s on tests)
1086 tests, 38 failures
make: *** [test_kernel] Error 1
Tom, I don't think that's the desired behaviour. But I also wouldn't necessarily blame the tests. It may be bugs in the implementation too. So we'll need to look at them one by one!
Hey José,
These are my findings
In windows there is no such thing as a root path for a machine, it is always a root path for a drive. You could strip the drive letter from the implementation, but I am wondering whether that is the right thing to do, as c:/blah
is different from `d:/blah' (different devices), so I would assume altering the test would fix the problem here.
EnotDir
instead of EIO
: 23-30,35,37These are probably based on the fact that {:error,:enoent}
is received, and the expected value is {:error,:enotdir}
, so if you fix the first, the rest will probably be easy; once again I have no idea whether this is an implementation error, a platform difference, or the need for platform-specific tests. If we decide the implementation should capture & translate the output, this should be easy to fix.
This is about a different expected literal:
returned: /fixtures/file.txt/bar: not a directory
expected:/fixtures/file.txt/bar: no such file or directory
Once again this is one that can easily be fixed in the implementation.
If you can tell me what you prefer, I can fix these issues.
T.
Regarding 2, there are many places in file.ex
where we are expecting for a { :error, :enoent }
. I assume we should update some of those function to also expect for a { :error, :enotdir }
. This should allow a good part of the tests to pass.
Regarding 3, we should change the test to many on any of those messages.
Regarding 1, I am not sure how to proceed too. :)
About 1:
At least erlang has some support for drives: http://www.erlang.org/doc/man/file.html#get_cwd-1
I would like to know whether the way I implemented my changes represent the best way to verify, or is there a better construct to follow in Elixir: https://github.com/ToJans/elixir/commit/11ebcc244988f875af59275da2530e36601e734d
Could you take another look please (especially about the duplication of is_io_error?
; I 'd assume there is no other way if you want to keep them private?
https://github.com/ToJans/elixir/commit/d5388ef4474047f030f267a52314f2656b5e298b
Pull request #1277 reduces the errors to 32 failures.
I pushed another commit that must have reduced the number of failures more. :)
26 errors
Failures:
1) test_absname_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:84
2) test_absname_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:96
3) test_expand_path_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:118
4) test_expand_path_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:134
5) test_argv (SystemTest)
** (SyntaxError) nofile:1: syntax error before: 'ERROR'
stacktrace:
6) test_at_exit (Kernel.CLI.AtExitTest)
** (ExUnit.ExpectationError)
expected: 'goodbye '
to be equal to (==): 'goodbye cruel world with status 0\n'
at test/elixir/kernel/cli_test.exs:39
7) test_possible_deadlock (Kernel.CLI.CompileTest)
** (ExUnit.AssertionError) expected foo.ex to miss module Bar
at test/elixir/kernel/cli_test.exs:88
8) test_rm_rf (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:784
9) test_rm_rf! (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:854
10) test_rm_rf_with_char_list (FileTest.Rm)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:818
11) test_rm_rf_with_file (FileTest.Rm)
** (ExUnit.ExpectationError)
expected: {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp","c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a"]}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp"]}
at test/elixir/file_test.exs:838
12) test_rm_rf_with_invalid (FileTest.Rm)
** (ExUnit.ExpectationError)
expected: {:ok,[]}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:848
13) test_rm_rf_with_invalid! (FileTest.Rm)
** (ExUnit.AssertionError) Expected File.Error exception but nothing was raised
at test/elixir/file_test.exs:873
14) test_rm_rf_with_symlink (FileTest.Rm)
** (ExUnit.AssertionError) Expected false to be true
at test/elixir/file_test.exs:806
15) test_cp_r! (FileTest.Cp)
** (File.CopyError) could not copy recursively from c:/dev/elixir/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to c:/dev/elixir/elixir/lib/elixir/test/tmp
/tmp: I/O error
at test/elixir/file_test.exs:348
16) test_cp_r_with_src_dir_and_dest_dir (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:189
17) test_cp_r_with_src_dir_and_dest_dir_using_lists (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:289
18) test_cp_r_with_src_dir_and_dest_unknown (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:248
19) test_cp_r_with_src_dir_dot_and_dest_dir (FileTest.Cp)
** (MatchError) no match of right hand side value: {:error,:eio}
at test/elixir/file_test.exs:216
20) test_cp_r_with_src_file_and_dest_dir (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/file.txt"]}
at test/elixir/file_test.exs:158
21) test_cp_r_with_src_file_and_dest_file (FileTest.Cp)
** (ExUnit.ExpectationError)
expected: {:error,:eio}
to be equal to (==): {:ok,["c:/dev/elixir/elixir/lib/elixir/test/tmp/sample.txt"]}
at test/elixir/file_test.exs:142
22) test_cp_r_with_src_file_and_dest_unknown (FileTest.Cp)
** (ExUnit.AssertionError) Expected true to be false
at test/elixir/file_test.exs:170
23) test_cp_r_with_src_with_file_conflict (FileTest.Cp)
** (File.Error) could not write to file c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory
at test/elixir/file_test.exs:306
24) test_cp_r_with_src_with_file_conflict_callback (FileTest.Cp)
** (File.Error) could not write to file c:/dev/elixir/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory
at test/elixir/file_test.exs:322
25) test_cp_with_src_file_and_dest_unknown (FileTest.Cp)
** (ExUnit.AssertionError) Expected true to be false
at test/elixir/file_test.exs:62
26) test_touch_with_failure (FileTest)
** (ExUnit.ExpectationError)
expected: {:error,:enoent}
to be equal to (==): {:error,:enotdir}
at test/elixir/file_test.exs:1139
Finished in 8.3 seconds (5.0s on load, 3.2s on tests)
1091 tests, 26 failures
make: *** [test_kernel] Error 1
Down to 8 errors...
Failures:
1) test_absname_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:84
2) test_absname_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:96
3) test_expand_path_with_binary (PathTest)
** (ExUnit.ExpectationError)
expected: "c:/foo/bar"
to be equal to (==): "/foo/bar"
at test/elixir/path_test.exs:118
4) test_expand_path_with_list (PathTest)
** (ExUnit.ExpectationError)
expected: 'c:/foo/bar'
to be equal to (==): '/foo/bar'
at test/elixir/path_test.exs:134
5) test_argv (SystemTest)
** (SyntaxError) nofile:1: syntax error before: 'ERROR'
stacktrace:
6) test_at_exit (Kernel.CLI.AtExitTest)
** (ExUnit.ExpectationError)
expected: 'goodbye '
to be equal to (==): 'goodbye cruel world with status 0\n'
at test/elixir/kernel/cli_test.exs:39
7) test_possible_deadlock (Kernel.CLI.CompileTest)
** (ExUnit.AssertionError) expected foo.ex to miss module Bar
at test/elixir/kernel/cli_test.exs:88
8) test_rm_rf_with_symlink (FileTest.Rm)
** (ExUnit.AssertionError) Expected false to be true
at test/elixir/file_test.exs:774
Finished in 8.5 seconds (5.1s on load, 3.3s on tests)
1091 tests, 8 failures
make: *** [test_kernel] Error 1
Since the history in this issue is long, I am closing it and opening a new one with the remaining failures. :) Thanks everyone!
https://github.com/elixir-lang/elixir/blob/stable/lib/elixir/test/elixir/file_test.exs
....FFFFFFF....FF..FF.....FF.............FFFF......FFFFFFFFFF..FFF...F..F....FF.....FFF..........FF...
Failures:
1) test_rm_rf (FileTest.Rm) \ (File.CopyError) could not copy recursively from u:/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to u:/elixir/lib/elixir/test/tmp/tmp: I/O error at file_test.exs:772
2) test_rm_rf! (FileTest.Rm) \ (File.CopyError) could not copy recursively from u:/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to u:/elixir/lib/elixir/test/tmp/tmp: I/O error at file_test.exs:842
3) test_rm_rf_with_char_list (FileTest.Rm) \ (File.CopyError) could not copy recursively from u:/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to u:/elixir/lib/elixir/test/tmp/tmp: I/O error at file_test.exs:806
4) test_rm_rf_with_file (FileTest.Rm) \ (ExUnit.ExpectationError) expected: {:error,:eio} to be equal to (==): {:ok,["u:/elixir/lib/elixir/test/tmp/tmp"]} at file_test.exs:826
5) test_rm_rf_with_invalid (FileTest.Rm) \ (ExUnit.ExpectationError) expected: {:ok,[]} to be equal to (==): {:error,:enotdir} at file_test.exs:836
6) test_rm_rf_with_invalid! (FileTest.Rm) \ (ExUnit.AssertionError) Expected File.Error exception but nothing was raised at file_test.exs:861
7) test_rm_rf_with_symlink (FileTest.Rm) \ (ExUnit.AssertionError) Expected false to be true at file_test.exs:794
8) test_rmdir_with_file (FileTest.Rm) \ (ExUnit.ExpectationError) expected: {:error,:eio} to be equal to (==): {:error,:enotdir} at file_test.exs:751
9) test_rmdir_with_file! (FileTest.Rm) \ (ExUnit.ExpectationError) expected file.error[reason: :eio, action: "remove directory", path: "u:/elixir/lib/elixir/test/elixir/fixtures/file.txt"]'s message: "could not remove directory u:/elixir/lib/elixir/test/elixir/fixtures/file.txt: not a directory" to match: "could not remove directory u:/elixir/lib/elixir/test/elixir/fixtures/file.txt: I/O error" at file_test.exs:764
10) test_mkdir_p_with_invalid_path (FileTest.Mkdir) \ (ExUnit.ExpectationError) expected: {:error,:enoent} to be equal to (==): {:error,:enotdir} at file_test.exs:670
11) test_mkdir_p_with_invalid_path! (FileTest.Mkdir) \ (ExUnit.ExpectationError) expected file.error[reason: :enoent, action: "make directory (with -p)", path: "u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test"]'s message: "could not make directory (with -p) u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: not a directory" to match: "could not make directory (with -p) u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: no such file or directory" at file_test.exs:689
12) test_mkdir_with_invalid_path (FileTest.Mkdir) \ (ExUnit.ExpectationError) expected: {:error,:enoent} to be equal to (==): {:error,:enotdir} at file_test.exs:589
13) test_mkdir_with_invalid_path! (FileTest.Mkdir) \ (ExUnit.ExpectationError) expected file.error[reason: :enoent, action: "make directory", path: "u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test"]'s message: "could not make directory u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: not a directory" to match: "could not make directory u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/test: no such file or directory" at file_test.exs:608
14) test_read! (FileTest.OpenReadWrite) \ (ExUnit.ExpectationError) expected: "FOO\r\n" to be equal to (==): "FOO\n" at file_test.exs:436
15) test_read_with_binary (FileTest.OpenReadWrite) \ (ExUnit.ExpectationError) expected: {:ok,"FOO\r\n"} to match pattern (=): {:ok, "FOO\n"} at file_test.exs:422
16) test_read_with_list (FileTest.OpenReadWrite) \ (ExUnit.ExpectationError) expected: {:ok,"FOO\r\n"} to match pattern (=): {:ok, "FOO\n"} at file_test.exs:427
17) test_read_with_utf8 (FileTest.OpenReadWrite) \ (ExUnit.ExpectationError) expected: {:ok,"Русский\r\n日\r\n"} to match pattern (=): {:ok, "Русский\n日\n"} at file_test.exs:432
18) test_cp_r! (FileTest.Cp) \ (File.CopyError) could not copy recursively from u:/elixir/lib/elixir/test/elixir/fixtures/cp_r/. to u:/elixir/lib/elixir/test/tmp/tmp: I/O error at file_test.exs:347
19) test_cp_r_with_dir_and_file_conflict (FileTest.Cp) \ (ExUnit.ExpectationError) expected: {:error,:eio} to be equal to (==): {:error,:enotdir} at file_test.exs:271
20) test_cp_r_with_src_dir_and_dest_dir (FileTest.Cp) \ (MatchError) no match of right hand side value: {:error,:eio} at file_test.exs:188
21) test_cp_r_with_src_dir_and_dest_dir_using_lists (FileTest.Cp) \ (MatchError) no match of right hand side value: {:error,:eio} at file_test.exs:288
22) test_cp_r_with_src_dir_and_dest_file (FileTest.Cp) \ (ExUnit.ExpectationError) expected: {:error,:enoent} to be equal to (==): {:error,:enotdir} at file_test.exs:232
23) test_cp_r_with_src_dir_and_dest_unknown (FileTest.Cp) \ (MatchError) no match of right hand side value: {:error,:eio} at file_test.exs:247
24) test_cp_r_with_src_dir_dot_and_dest_dir (FileTest.Cp) \ (MatchError) no match of right hand side value: {:error,:eio} at file_test.exs:215
25) test_cp_r_with_src_file_and_dest_dir (FileTest.Cp) \ (ExUnit.AssertionError) Expected true to be false at file_test.exs:156
26) test_cp_r_with_src_file_and_dest_file (FileTest.Cp) \ (ExUnit.ExpectationError) expected: {:error,:eio} to be equal to (==): {:ok,["u:/elixir/lib/elixir/test/tmp/sample.txt"]} at file_test.exs:141
27) test_cp_r_with_src_file_and_dest_unknown (FileTest.Cp) \ (ExUnit.AssertionError) Expected true to be false at file_test.exs:169
28) test_cp_r_with_src_with_file_conflict (FileTest.Cp) \ (File.Error) could not write to file u:/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory at file_test.exs:305
29) test_cp_r_with_src_with_file_conflict_callback (FileTest.Cp) \ (File.Error) could not write to file u:/elixir/lib/elixir/test/tmp/tmp/a/1.txt: no such file or directory at file_test.exs:321
30) test_cp_with_conflict (FileTest.Cp) \ (ExUnit.ExpectationError) expected: "FOO\r\n" to be equal to (==): "FOO\n" at file_test.exs:84
31) test_cp_with_src_file_and_dest_dir (FileTest.Cp) \ (ExUnit.AssertionError) Expected true to be false at file_test.exs:48
32) test_cp_with_src_file_and_dest_unknown (FileTest.Cp) \ (ExUnit.AssertionError) Expected true to be false at file_test.exs:61
33) test_copy (FileTest) \ (ExUnit.ExpectationError) expected: {:ok,5} to be equal to (==): {:ok,4} at file_test.exs:993
34) test_copy! (FileTest) \ (ExUnit.ExpectationError) expected: 5 to be equal to (==): 4 at file_test.exs:1023
35) test_cwd_and_cd_with_utf8 (FileTest) \ (File.Error) could not set current working directory to u:/elixir/lib/elixir/test/elixir/fixtures/héllò: no such file or directory stacktrace: /Volumes/Work/github/elixir/lib/elixir/lib/file.ex:892: File.cd!/2 file_test.exs:1062: FileTest.test_cwd_and_cd_with_utf8/1
36) test_invalid_cd (FileTest) \ (ExUnit.ExpectationError) expected: {:error,:enoent} to be equal to (==): {:error,:enotdir} at file_test.exs:1069
37) test_invalid_cd! (FileTest) \ (ExUnit.ExpectationError) expected file.error[reason: :enoent, action: "set current working directory to", path: "u:/elixir/lib/elixir/test/elixir/fixtures/file.txt"]'s message: "could not set current working directory to u:/elixir/lib/elixir/test/elixir/fixtures/file.txt: not a directory" to match: "could not set current working directory to u:/elixir/lib/elixir/test/elixir/fixtures/file.txt: no such file or directory" at file_test.exs:1074
38) test_touch_with_failure (FileTest) \ (ExUnit.ExpectationError) expected: {:error,:enoent} to be equal to (==): {:error,:enotdir} at file_test.exs:1118
39) test_touch_with_failure! (FileTest) \ (ExUnit.ExpectationError) expected file.error[reason: :enoent, action: "touch", path: "u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/bar"]'s message: "could not touch u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/bar: not a directory" to match: "could not touch u:/elixir/lib/elixir/test/elixir/fixtures/file.txt/bar: no such file or directory" at file_test.exs:1127
Finished in 6.8 seconds (1.4s on load, 5.3s on tests) 102 tests, 39 failures [Finished in 9.2s with exit code 1]
https://github.com/elixir-lang/elixir/blob/stable/lib/elixir/test/elixir/io_test.exs
..F........
Failures:
1) test_getn (IOTest) \ (ExUnit.ExpectationError) expected: "\n" to be equal to (==): "\r" at io_test.exs:29
Finished in 0.5 seconds (0.2s on load, 0.3s on tests) 11 tests, 1 failures [Finished in 2.8s with exit code 1]
https://github.com/elixir-lang/elixir/blob/stable/lib/elixir/test/elixir/path_test.exs
FF....FFF...........F.FF
Failures:
1) test_absname_with_binary (PathTest) \ (ExUnit.ExpectationError) expected: "u:/foo/bar" to be equal to (==): "/foo/bar" at path_test.exs:82
2) test_absname_with_list (PathTest) \ (ExUnit.ExpectationError) expected: 'u:/foo/bar' to be equal to (==): '/foo/bar' at path_test.exs:94
3) test_expand_path_with_binary (PathTest) \ (ExUnit.ExpectationError) expected: "u:/foo/bar" to be equal to (==): "/foo/bar" at path_test.exs:116
4) test_expand_path_with_list (PathTest) \ (ExUnit.ExpectationError) expected: 'u:/foo/bar' to be equal to (==): '/foo/bar' at path_test.exs:132
5) test_expand_path_with_user_home (PathTest) \ (ExUnit.ExpectationError) expected: "C:\erl5.10.1\erts-5.10.1\bin;C:\elixir\bin" to be equal to (==): "c:/erl5.10.1/erts-5.10.1/bin;C:elixir/bin" at path_test.exs:103
6) test_split_with_binary (PathTest) \ (ExUnit.ExpectationError) expected: [] to be equal to (==): ["/"] at path_test.exs:241
7) test_type (PathTest) \ (ExUnit.ExpectationError) expected: :volumerelative to be equal to (==): :absolute at path_test.exs:67
8) test_wildcard (PathTest) \ (ExUnit.ExpectationError) expected: [] to be equal to (==): ["u:/elixir/lib/elixir/test/elixir/fixtures/héllò"] at path_test.exs:10
Finished in 0.5 seconds (0.3s on load, 0.1s on tests) 24 tests, 8 failures [Finished in 2.9s with exit code 1]
https://github.com/elixir-lang/elixir/blob/stable/lib/elixir/test/elixir/system_test.exs
..."binary" is not recognized as an internal or external command, operable program or batch file. "binary" is not recognized as an internal or external command, operable program or batch file. ..F.....
Failures:
1) test_cwd_with_utf8 (SystemTest) \ (File.Error) could not set current working directory to u:/elixir/lib/elixir/test/elixir/fixtures/héllò: no such file or directory stacktrace: /Volumes/Work/github/elixir/lib/elixir/lib/file.ex:892: File.cd!/2 system_test.exs:24: SystemTest.test_cwd_with_utf8/1
Finished in 4.8 seconds (0.2s on load, 4.6s on tests) 11 tests, 1 failures [Finished in 7.0s with exit code 1]
And it seems to me this one especially needs to be rethought:
test :cmd do assert is_binary(System.cmd "binary") assert is_list(System.cmd 'binary') end