scalacenter / bloop

Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool.
https://scalacenter.github.io/bloop/
Apache License 2.0
907 stars 202 forks source link

Unexpected carriage return in Windows CLI autocompletion #723

Closed philwalk closed 3 years ago

philwalk commented 5 years ago

I work in a bash shell under cygwin on Windows 10. When I hit the <tab> character to get an autocompletion, the result has a carriage return appended:

bloop proje<tab> ; fills in an autocompletion value of projects^M

The trailing newline is likely due to the default value of System property "path.separator" on the Windows JVM.

I may be willing to do the work of fixing this, although I'm not yet familiar with the code (just cloned the project this afternoon), so any clues are welcome.

jvican commented 5 years ago

@philwalk Thanks for the report. The fix for this issue would be not to use state.logger.info here:

https://github.com/scalacenter/bloop/blob/f36ae3d33540c15cc792a575ef5e43ba752a7e67/frontend/src/main/scala/bloop/engine/Interpreter.scala#L238-L285

The issue is, what should it replace it? Should the use of only a new line fix this for all Windows environments (not only cygwin? If so, replacing state.logger.info by a direct state.commonOptions.out.print("") would do it? Also, does cygwin specify that it only expects \n or is this an implementation detail?

philwalk commented 5 years ago

To answer your question, bloop.logging.BloopLogger#printInfo sending a Windows '\r\n', which is not appropriate in cygwin, or any Windows bash or similar shell environment.

I'm looking at the code now, and trying to become sufficiently familiar to be able to offer suggestions. My hunch is that the problem is related to the fact that, by default, Windows JVM path.separator property is set to '\r\n' whereas every other OS jvm sets it by default to '\n' .

When I capture the output produced by the autocompletion, here's what it looks like:

Command not found: projects^M

Here are the bytes captured from the console:

0000: 43 6f 6d 6d 61 6e 64 20 6e 6f 74 20 66 6f 75 6e  Command not foun
0010: 64 3a 20 70 72 6f 6a 65 63 74 73 0d 0d 0a        d: projects...

I'm not sure why there are two consecutive CRs before the final newline, but apparently one of them is displayed as a control-M.

The following code appears to be splitting a String into lines in an OS-independent way:

./backend/src/main/scala/bloop/logging/BloopLogger.scala: val lines = msg.split("\\r?\\n", -1)

My preferred regex for this purpose (assuming we're not interested in blank lines) is:

val lines = msg.split("[\\r\\n]+",-1)

which produces identical output regardless of the presence or not of carriage returns. It's also impervious to consecutive carriage returns, which somehow are occurring in the console output.

Other places in the code that might be dealing with the same issue:

./backend/src/test/scala/bloop/logging/RecordingLogger.scala: 
    msgs.map {
      // Remove trailing '\r' so that we don't have to special case for Windows
      case (category, msg0) =>
        val msg = if (msg0 == null) "<null reference>" else msg0
        (category, msg.stripSuffix("\r"))
    }.toList

There are explicit occurrences of "\r" in the following files:

./backend/src/main/scala/bloop/logging/BloopLogger.scala
./backend/src/test/scala/bloop/logging/RecordingLogger.scala
./benchmark-bridge/corpus/better-files/a45f905/Scanner.scala
./benchmark-bridge/corpus/re2j/a311ea0/java/util/regex/Parser.java
./benchmark-bridge/corpus/re2j/a311ea0/java/util/regex/Utils.java
./benchmark-bridge/corpus/re2s/a311ea0/java/util/regex/Parser.scala
./benchmark-bridge/corpus/re2s/a311ea0/java/util/regex/Utils.scala
./benchmark-bridge/corpus/scala/21d12e9/compiler/scala/tools/nsc/ast/DocComments.scala
./benchmark-bridge/corpus/scala/21d12e9/compiler/scala/tools/nsc/ast/parser/Scanners.scala
./benchmark-bridge/corpus/scala/21d12e9/compiler/scala/tools/nsc/javac/JavaScanners.scala
./benchmark-bridge/corpus/scala/21d12e9/compiler/scala/tools/reflect/FormatInterpolator.scala
./benchmark-bridge/corpus/scala/21d12e9/library/scala/io/Source.scala
./benchmark-bridge/corpus/scala/21d12e9/library/scala/StringContext.scala
./benchmark-bridge/corpus/scala/21d12e9/reflect/scala/reflect/internal/Constants.scala
./benchmark-bridge/corpus/scala/21d12e9/reflect/scala/reflect/internal/util/SourceFile.scala
./benchmark-bridge/corpus/scalap/a8c43dc/scalax/rules/scalasig/ScalaSigPrinter.scala
./zinc/internal/zinc-compile-core/src/main/scala/sbt/internal/inc/javac/DiagnosticsReporter.scala
./zinc/internal/zinc-compile-core/src/main/scala/sbt/internal/inc/javac/JavaErrorParser.scala

I've been trying to examine the project from the Intellij IDE but have not yet been successful. Is anyone using it?

Thanks! Phil

jvican commented 5 years ago

I've been trying to examine the project from the Intellij IDE but have not yet been successful. Is anyone using it?

Yes, I'm using it full time and it works. Make sure you get it to work in the sbt shell first and then import it from sbt. The developer docs can be helpful to get more familiar with the codebase and general code organization https://scalacenter.github.io/bloop/docs/developer-documentation/

I'm looking at the code now, and trying to become sufficiently familiar to be able to offer suggestions. My hunch is that the problem is related to the fact that, by default, Windows JVM path.separator property is set to '\r\n' whereas every other OS jvm sets it by default to '\n' .

Yes, sounds about right but it's also suspicious that there are two carriage returns. I don't have a clear idea what's causing them, so i would continue the research until you have something conclusive. If the issue turns out to be that regex, any improvement there is welcome; however, we do care about empty lines, so we should make sure we handle them correctly and not swallow them

In order to fix this ticket I would make sure I can reproduce this issue without nailgun, so I would start by creating a test in InterpreterSpec that runs the Autocomplete command in your machine and checks the output and new lines are as expected. If you cannot reproduce, then the issue is possibly in the nailgun client side.

By the way, you can safely ignore RecordingLogger and all the files you found \r in -- they look unrelated to this autocompletion bug.

jvican commented 5 years ago

@philwalk I think I know why IntelliJ wasn't working for you. I'll fix it hopefully soon, as a workaround make sure you first run sbt in the terminal and then import.

philwalk commented 5 years ago

@jvican when you say "run sbt in the terminal", are you referring to an interactive session? Do I need to invoke any particular tasks? After doing a "git pull" from the command line, I'm unable to start an sbt session. Here's what I get:

[debug] Load.apply: load took 58529.0372ms
[debug] Load.apply: resolveProjects took 6.9208ms
[debug] Load.apply: finalTransforms took 116.4267ms
[debug] Load.apply: config.delegates took 6.722ms
[info] Resolving key references (21727 settings) ...
[debug] sbt-release-early: Trying to fetch `pgpPassphrase in Global` from the environment.
[debug] Load.apply: Def.make(settings)... took 6634.3577ms
[debug] Load.apply: structureIndex took 1507.1592ms
[debug] Load.apply: mkStreams took 0.0036ms
[info]       _____            __         ______           __
[info]      / ___/_________ _/ /___ _   / ____/__  ____  / /____  _____
[info]      \__ \/ ___/ __ `/ / __ `/  / /   / _ \/ __ \/ __/ _ \/ ___/
[info]     ___/ / /__/ /_/ / / /_/ /  / /___/ /__/ / / / /_/ /__/ /
[info]    /____/\___/\__,_/_/\__,_/   \____/\___/_/ /_/\__/\___/_/
[info]
[info]    ***********************************************************
[info]    ***       Welcome to the build of `loooooooooop`        ***
[info]    ***        An effort funded by the Scala Center         ***
[info]    ***********************************************************
[info]
[info] Generating bloop configuration files for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6
[error] Failed to generate bloop config for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6.
[debug] > Exec(loadFailed, None, None)
[debug] > Exec(last, None, None)
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

if I ignore, I get this:

[warn] Ignoring load failure: no project loaded.
[error] java.lang.RuntimeException: Session not initialized.
[error]         at scala.sys.package$.error(package.scala:27)
[error]         at sbt.Project$.$anonfun$getOrError$1(Project.scala:442)
[error]         at scala.Option.getOrElse(Option.scala:121)
[error]         at sbt.Project$.getOrError(Project.scala:442)
[error]         at sbt.Project$.session(Project.scala:448)
[error]         at sbt.Project$.extract(Project.scala:453)
[error]         at sbt.BuiltinCommands$.notifyUsersAboutShell(Main.scala:928)
[error]         at sbt.BuiltinCommands$.$anonfun$notifyUsersAboutShell$3(Main.scala:937)
[error]         at sbt.Command$.$anonfun$command$2(Command.scala:91)
[error]         at sbt.Command$.process(Command.scala:181)
[error]         at sbt.MainLoop$.processCommand(MainLoop.scala:151)
[error]         at sbt.MainLoop$.$anonfun$next$2(MainLoop.scala:139)
[error]         at sbt.State$$anon$1.runCmd$1(State.scala:246)
[error]         at sbt.State$$anon$1.process(State.scala:250)
[error]         at sbt.MainLoop$.$anonfun$next$1(MainLoop.scala:139)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.MainLoop$.next(MainLoop.scala:139)
[error]         at sbt.MainLoop$.run(MainLoop.scala:132)
[error]         at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:110)
[error]         at sbt.io.Using.apply(Using.scala:22)
[error]         at sbt.MainLoop$.runWithNewLog(MainLoop.scala:104)
[error]         at sbt.MainLoop$.runAndClearLast(MainLoop.scala:59)
[error]         at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:44)
[error]         at sbt.MainLoop$.runLogged(MainLoop.scala:35)
[error]         at sbt.StandardMain$.runManaged(Main.scala:138)
[error]         at sbt.xMain.run(Main.scala:89)
[error]         at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
[error]         at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
[error]         at xsbt.boot.Launch$.run(Launch.scala:109)
[error]         at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
[error]         at xsbt.boot.Launch$.launch(Launch.scala:117)
[error]         at xsbt.boot.Launch$.apply(Launch.scala:18)
[error]         at xsbt.boot.Boot$.runImpl(Boot.scala:56)
[error]         at xsbt.boot.Boot$.main(Boot.scala:18)
[error]         at xsbt.boot.Boot.main(Boot.scala)
[error] Session not initialized.
[error] Use 'last' for the full log.
jvican commented 5 years ago

The contributing guide also shows you the steps to run after cloning (you need to initialize the git submodules), can you try that?

philwalk commented 5 years ago

Sorry for the delay in responding ... After initializing the git submodules, I got a slightly different error (possibly). Here's my session:

$ git submodule update --init
philwalk@q6:~/workspace/bloop
$ sbt
[info] Loading settings for project global-plugins from dirtymoney.sbt,idea.sbt,plugins.sbt ...
[info] Loading global plugins from C:\Users\philwalk\.sbt\1.0\plugins
[info] Updating ProjectRef(uri("file:/C:/Users/philwalk/.sbt/1.0/plugins/"), "global-plugins")...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings for project bloop-build-build from build.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\project\project
[info] Updating ProjectRef(uri("file:/C:/Users/philwalk/workspace/bloop/project/project/"), "bloop-build-build")...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings for project bloop-build from build.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\project
[info] Updating ProjectRef(uri("file:/C:/Users/philwalk/workspace/bloop/project/"), "bloop-build")...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[success] Generated .bloop\bloop-build.json
[success] Total time: 15 s, completed Nov 26, 2018 8:14:58 AM
[info] Updating ProjectRef(uri("file:/C:/Users/philwalk/workspace/bloop/project/"), "bloop-build")...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings for project bloop from build.sbt ...
[info] Loading settings for project benchmark-bridge-build from plugins.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\benchmark-bridge\project
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings for project benchmark-bridge from build.sbt ...
[info] Resolving key references (21727 settings) ...
[info]       _____            __         ______           __
[info]      / ___/_________ _/ /___ _   / ____/__  ____  / /____  _____
[info]      \__ \/ ___/ __ `/ / __ `/  / /   / _ \/ __ \/ __/ _ \/ ___/
[info]     ___/ / /__/ /_/ / / /_/ /  / /___/ /__/ / / / /_/ /__/ /
[info]    /____/\___/\__,_/_/\__,_/   \____/\___/_/ /_/\__/\___/_/
[info]
[info]    ***********************************************************
[info]    ***       Welcome to the build of `loooooooooop`        ***
[info]    ***        An effort funded by the Scala Center         ***
[info]    ***********************************************************
[info]
[info] Generating bloop configuration files for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6

C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6>set SCRIPT_DIR=C:\opt\ue\cygbin\

C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6>c:\opt\ue\sbt\bin\sbt.bat bloopInstall
The system cannot find the path specified.
[error] Failed to generate bloop config for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

I'm puzzled by the setting of SCRIPT_DIR (to a value unrelated to my workspace/bloop directory. The directory c:\opt\ue\cygbin\ does exist on my system, and it's referenced by environment variables PATH and OSBIN, but it belongs to a different sbt project.

philwalk commented 5 years ago

The only references I can find to SCRIPT_DIR are in the kafka project here:

~/.sbt/1.0/staging/blah-blah-blah/kafka/release.py
~/.sbt/1.0/staging/blah-blah-blah/kafka/tests/docker/run_tests.sh
~/.sbt/boot/update.log

Here are the relevant references (java.library.path value in update.log is truncated after the relevant portion):

$ find ~/.sbt/ -type f | xargs egrep '\b(cygbin|SCRIPT_DIR)\b'
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/release.py:SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/release.py:REPO_HOME = os.environ.get("%s_HOME" % CAPITALIZED_PROJECT_NAME, SCRIPT_DIR)
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/release.py:PREFS_FILE = os.path.join(SCRIPT_DIR, '.release-settings.json')
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/tests/docker/run_tests.sh:SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/tests/docker/run_tests.sh:if ${SCRIPT_DIR}/ducker-ak ssh | grep -q '(none)'; then
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/tests/docker/run_tests.sh:    ${SCRIPT_DIR}/ducker-ak up -n "${KAFKA_NUM_CONTAINERS}" || die "ducker-ak up failed"
~/.sbt/1.0/staging/7828e8b47406c9c9cc41/kafka/tests/docker/run_tests.sh:${SCRIPT_DIR}/ducker-ak test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
~/.sbt/boot/update.log:setting 'java.library.path' to 'C:\opt\jdk\bin;c:\WINDOWS\Sun\Java\bin;c:\WINDOWS\system32;c:\WINDOWS;C:\cygwin64\usr\local\bin;C:\cygwin64\bin;C:\bin;C:\opt\ue\bin;C:\opt\ue\jsrc;C:\opt\ue\cygbin;...

FWIW, when I did the initial 'git clone' for this project, it failed when attempting to download the kafka project and I had to manually grab kafka before it would continue.

I'm going to go back and re-read the developer docs, I may have missed something ...

philwalk commented 5 years ago

I made some progress when I noticed the following line in my sbt log output:

C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\cross-test-build-0.6>c:\opt\ue\sbt\bin\sbt.bat bloopInstall

The problem is that it's looking for sbt.bat in the wrong place. Here are the relevant environment settings:

$ echo $SBT_HOME
/opt/sbt
$ echo `cygpath -m $SBT_HOME`
C:/opt/sbt
$ which sbt
/opt/sbt/bin/sbt
$ cygpath -m `which sbt`
C:/opt/sbt/bin/sbt
$ echo "$PATH" | tr ':' '\n'
/usr/local/bin
/usr/bin
/opt/ue/cygbin
/opt/jdk/bin
/opt/scala/bin
/opt/sbt/bin
[...]

As an experiment, I moved "$SBT_HOME/bin" to the head of my PATH, and then issued this command:

$ sbt ";install;frontend/version"

That got me past the initial problem, although it fails trying to run gradle. Here's the log:

Output (click arrow to expand)

```
[info] Loading settings for project benchmark-bridge from build.sbt ...
[info] Resolving key references (21727 settings) ...
[info]       _____            __         ______           __
[info]      / ___/_________ _/ /___ _   / ____/__  ____  / /____  _____
[info]      \__ \/ ___/ __ `/ / __ `/  / /   / _ \/ __ \/ __/ _ \/ ___/
[info]     ___/ / /__/ /_/ / / /_/ /  / /___/ /__/ / / / /_/ /__/ /
[info]    /____/\___/\__,_/_/\__,_/   \____/\___/_/ /_/\__/\___/_/
[info]
[info]    ***********************************************************
[info]    ***       Welcome to the build of `loooooooooop`        ***
[info]    ***        An effort funded by the Scala Center         ***
[info]    ***********************************************************
[info]
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info] Packaging C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info]  published bloop-config_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.10/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.10/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\resolution-cache\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.10;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:21 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.10 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.10.pom
[info]  published bloop-config_2.10 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.10.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[success] Total time: 3 s, completed Nov 26, 2018 10:20:21 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.pom
[info] Packaging C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\resolution-cache\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.11;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:22 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.11.pom
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.11.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[success] Total time: 1 s, completed Nov 26, 2018 10:20:22 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.pom
[info] Packaging C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info]  published bloop-config_2.12 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.12/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.12 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.12/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\resolution-cache\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.12;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:23 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.12 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.12.pom
[info]  published bloop-config_2.12 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.12.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[success] Total time: 1 s, completed Nov 26, 2018 10:20:23 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.10/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.10/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.10-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\resolution-cache\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.10;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:23 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.10\scala-2.10\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.10 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.10.pom
[info]  published bloop-config_2.10 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.10.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.10\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\0.13.17\scala-2.10\sbt-0.13\resolution-cache\ch.epfl.scala\sbt-bloop\scala_2.10\sbt_0.13\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] Packaging C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\0.13.17\scala-2.10\sbt-0.13\sbt-bloop-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info] :: delivering :: ch.epfl.scala#sbt-bloop;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:25 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\0.13.17\scala-2.10\sbt-0.13\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published sbt-bloop to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\sbt-bloop\scala_2.10\sbt_0.13\1.0.0+396-bd38f7cb+20181126-1020\jars\sbt-bloop.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\sbt-bloop\scala_2.10\sbt_0.13\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[success] Total time: 2 s, completed Nov 26, 2018 10:20:25 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.12 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.12/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.12 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.12/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.12-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\resolution-cache\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.12;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:25 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.12\scala-2.12\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.12 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.12.pom
[info]  published bloop-config_2.12 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.12.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.12\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\1.1.4\scala-2.12\sbt-1.0\resolution-cache\ch.epfl.scala\sbt-bloop\scala_2.12\sbt_1.0\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] Packaging C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\1.1.4\scala-2.12\sbt-1.0\sbt-bloop-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info] :: delivering :: ch.epfl.scala#sbt-bloop;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:26 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\integrations\sbt-bloop\target\1.1.4\scala-2.12\sbt-1.0\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published sbt-bloop to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\sbt-bloop\scala_2.12\sbt_1.0\1.0.0+396-bd38f7cb+20181126-1020\jars\sbt-bloop.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\sbt-bloop\scala_2.12\sbt_1.0\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[success] Total time: 2 s, completed Nov 26, 2018 10:20:26 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\integrations\maven-bloop\target\scala-2.10\maven-bloop_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info] Packaging C:\Users\philwalk\workspace\bloop\integrations\maven-bloop\target\scala-2.10\maven-bloop_2.10-1.0.0+396-bd38f7cb+20181126-1020.jar ...
[info] Done packaging.
[info]  published maven-bloop_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/maven-bloop_2.10/1.0.0+396-bd38f7cb+20181126-1020/maven-bloop_2.10-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published maven-bloop_2.10 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/maven-bloop_2.10/1.0.0+396-bd38f7cb+20181126-1020/maven-bloop_2.10-1.0.0+396-bd38f7cb+20181126-1020.jar
[success] Total time: 6 s, completed Nov 26, 2018 10:20:32 AM
[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.pom
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1020/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1020.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\resolution-cache\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.11;1.0.0+396-bd38f7cb+20181126-1020 :: 1.0.0+396-bd38f7cb+20181126-1020 :: integration :: Mon Nov 26 10:20:33 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\ivy-1.0.0+396-bd38f7cb+20181126-1020.xml
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\poms\bloop-config_2.11.pom
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\jars\bloop-config_2.11.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1020\ivys\ivy.xml
[info] Fetching Gradle API version 3.0 from https://services.gradle.org/distributions/gradle-3.0-bin.zip (may take a while...)
[info] Wrote C:\Users\philwalk\workspace\bloop\integrations\gradle-bloop\target\gradle-bloop-2.11\scala-2.11\gradle-bloop_2.11-1.0.0+396-bd38f7cb+20181126-1020.pom
[info] Extracting the api path from gradle...
[error] java.io.IOException: Cannot run program "C:\Users\philwalk\AppData\Local\Temp\sbt_54a2fe0d\gradle-3.0\bin\gradle" (in directory "C:\Users\philwalk\AppData\Local\Temp\sbt_1a4713a"): CreateProcess error=193, %1 is not a valid Win32 application
[error]         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
[error]         at scala.sys.process.ProcessBuilderImpl$Simple.run(ProcessBuilderImpl.scala:71)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang(ProcessBuilderImpl.scala:115)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.slurp(ProcessBuilderImpl.scala:131)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang$bang(ProcessBuilderImpl.scala:104)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$3(GradleIntegration.scala:31)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$3$adapted(GradleIntegration.scala:21)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:376)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:383)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$2(GradleIntegration.scala:21)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$2$adapted(GradleIntegration.scala:20)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:376)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:383)
[error]         at build.GradleIntegration$.fetchGradleApi(GradleIntegration.scala:20)
[error]         at build.BuildImplementation$BuildDefaults$.$anonfun$gradlePluginBuildSettings$5(BuildPlugin.scala:475)
[error]         at build.BuildImplementation$BuildDefaults$.$anonfun$gradlePluginBuildSettings$5$adapted(BuildPlugin.scala:471)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:67)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:278)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
[error]         at java.lang.ProcessImpl.create(Native Method)
[error]         at java.lang.ProcessImpl.(ProcessImpl.java:386)
[error]         at java.lang.ProcessImpl.start(ProcessImpl.java:137)
[error]         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
[error]         at scala.sys.process.ProcessBuilderImpl$Simple.run(ProcessBuilderImpl.scala:71)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang(ProcessBuilderImpl.scala:115)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.slurp(ProcessBuilderImpl.scala:131)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang$bang(ProcessBuilderImpl.scala:104)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$3(GradleIntegration.scala:31)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$3$adapted(GradleIntegration.scala:21)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:376)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:383)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$2(GradleIntegration.scala:21)
[error]         at build.GradleIntegration$.$anonfun$fetchGradleApi$2$adapted(GradleIntegration.scala:20)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:376)
[error]         at sbt.io.IO$.withTemporaryDirectory(IO.scala:383)
[error]         at build.GradleIntegration$.fetchGradleApi(GradleIntegration.scala:20)
[error]         at build.BuildImplementation$BuildDefaults$.$anonfun$gradlePluginBuildSettings$5(BuildPlugin.scala:475)
[error]         at build.BuildImplementation$BuildDefaults$.$anonfun$gradlePluginBuildSettings$5$adapted(BuildPlugin.scala:471)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:67)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:278)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] (gradleBloop211 / fetchGradleApi) java.io.IOException: Cannot run program "C:\Users\philwalk\AppData\Local\Temp\sbt_54a2fe0d\gradle-3.0\bin\gradle" (in directory "C:\Users\philwalk\AppData\Local\Temp\sbt_1a4713a"): CreateProcess error=193, %1 is not a valid Win32 application
[error] Total time: 13 s, completed Nov 26, 2018 10:20:46 AM
```

My next hunch is that I might be able to get around this by installing gradle, setting GRADLE_HOME, and adding $GRADLE_HOME/bin to my PATH. I'll report back if it makes any difference.

philwalk commented 5 years ago

I can now run sbt without problems, and perhaps I'm now running into the known issue you alluded to. I notice thatGradleIntegration.scaladoesn't check for Windows build environment.

I added some code to call gradle.bat instead of gradle, plus a bit of extra logging, and here's what I see, FWIW:

[info] Wrote C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1150.pom
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1150/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1150.pom
[info]  published bloop-config_2.11 to file:/C:/Users/philwalk/.m2/repository/ch/epfl/scala/bloop-config_2.11/1.0.0+396-bd38f7cb+20181126-1150/bloop-config_2.11-1.0.0+396-bd38f7cb+20181126-1150.jar
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\resolution-cache\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1150\resolved.xml.xml
[info] :: delivering :: ch.epfl.scala#bloop-config_2.11;1.0.0+396-bd38f7cb+20181126-1150 :: 1.0.0+396-bd38f7cb+20181126-1150 :: integration :: Mon Nov 26 11:51:08 MST 2018
[info]  delivering ivy file to C:\Users\philwalk\workspace\bloop\config\target\json-config-2.11\scala-2.11\ivy-1.0.0+396-bd38f7cb+20181126-1150.xml
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1150\poms\bloop-config_2.11.pom
[info]  published bloop-config_2.11 to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1150\jars\bloop-config_2.11.jar
[info]  published ivy to C:\Users\philwalk\.ivy2\local\ch.epfl.scala\bloop-config_2.11\1.0.0+396-bd38f7cb+20181126-1150\ivys\ivy.xml
[info] Fetching Gradle API version 3.0 from https://services.gradle.org/distributions/gradle-3.0-bin.zip (may take a while...)
[info] Wrote C:\Users\philwalk\workspace\bloop\integrations\gradle-bloop\target\gradle-bloop-2.11\scala-2.11\gradle-bloop_2.11-1.0.0+396-bd38f7cb+20181126-1150.pom
[info] gradleDir:         C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb
[info] dummyProjectDir:   C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd
[info] gradle version:    3.0
[info] Extracting the api path from gradle...
[info] gradleCmd: List(C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb\gradle-3.0\bin\gradle.bat, --stacktrace, --no-daemon, printClassPath)
[error] Fatal: could not find gradle-api artifact in the generated class path :printClassPath
[error] C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\classes\test;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\resources\test;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\classes\main;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\resources\main;C:\Users\philwalk\.gradle\caches\3.0\generated-gradle-jars\gradle-test-kit-3.0.jar;C:\Users\philwalk\.gradle\caches\3.0\generated-gradle-jars\gradle-api-3.0.jar;C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb\gradle-3.0\lib\groovy-all-2.4.7.jar;C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb\gradle-3.0\lib\gradle-installation-beacon-3.0.jar
[error]
[error] BUILD SUCCESSFUL
[error]
[error] Total time: 4.459 secs
[error] (gradleBloop211 / fetchGradleApi) Fatal: could not find gradle-api artifact in the generated class path :printClassPath
[error] C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\classes\test;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\resources\test;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\classes\main;C:\Users\philwalk\AppData\Local\Temp\sbt_8117e2fd\build\resources\main;C:\Users\philwalk\.gradle\caches\3.0\generated-gradle-jars\gradle-test-kit-3.0.jar;C:\Users\philwalk\.gradle\caches\3.0\generated-gradle-jars\gradle-api-3.0.jar;C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb\gradle-3.0\lib\groovy-all-2.4.7.jar;C:\Users\philwalk\AppData\Local\Temp\sbt_2e7706cb\gradle-3.0\lib\gradle-installation-beacon-3.0.jar
[error]
[error] BUILD SUCCESSFUL
[error]
[error] Total time: 4.459 secs
[error] Total time: 18 s, completed Nov 26, 2018 11:51:26 AM

Although it complains that it cannot find the gradle-api artifact, the log output shows the files below. This might be another example of a trailing carriage-return problem, since the file seems to be there, but I noticed that it gets logged with a trailing ^M (not shown here):

C:/Users/philwalk/AppData/Local/Temp/sbt_8117e2fd/build/classes/test C:/Users/philwalk/AppData/Local/Temp/sbt_8117e2fd/build/resources/test C:/Users/philwalk/AppData/Local/Temp/sbt_8117e2fd/build/classes/main C:/Users/philwalk/AppData/Local/Temp/sbt_8117e2fd/build/resources/main C:/Users/philwalk/.gradle/caches/3.0/generated-gradle-jars/gradle-test-kit-3.0.jar C:/Users/philwalk/.gradle/caches/3.0/generated-gradle-jars/gradle-api-3.0.jar C:/Users/philwalk/AppData/Local/Temp/sbt_2e7706cb/gradle-3.0/lib/groovy-all-2.4.7.jar C:/Users/philwalk/AppData/Local/Temp/sbt_2e7706cb/gradle-3.0/lib/gradle-installation-beacon-3.0.jar

jvican commented 5 years ago

Thank you for your in-depth analysis @philwalk . I'm sorry for the delay, I could not get have a look at this issue before the 1.1.1 release which I've been preparing for the past weeks.

I can confirm the latest issue is legit and I have fixed it and tested. I will merge it in master soon.

philwalk commented 5 years ago

Which release is this fix scheduled for? The problem (^M appended to autocompletion strings) still exists in version 1.2.5, although I'm wondering if it might be related to some aspect of my environment (cygwin, specifically).

jvican commented 5 years ago

D'uh, I've fixed here the latest issue you reported with gradle but not the main issue with ^M. What is the diff you're using to make 1.2.5 work? I don't have the cycles to look into a solution but I'm gonna be more active next days so I can help you out if you need guidance/advice to find a fix.

philwalk commented 5 years ago

I won't be able to spend time on this for a few weeks, but it's not a critical issue for me.

jvican commented 5 years ago

No worries @philwalk I appreciate the time you put into getting set up and trying to investigate what's going on. Thanks. Whenever you or someone affected by this can work on it, I'll be happy to help.

jvican commented 5 years ago

Any chance you could look at this soon @philwalk ? To recap, the issue here is caused by logger.info which uses System.lineSeparator to print a message to the client streams. The Windows line separator is \r\n. My intuition is that the Bash autocompletion implementation in Cygwin expects \n instead of \r\n so it shows ^M in the terminal.

The fix here should be to replace logger.info by a print that only uses \n if the client is a Cygwin client (which we can now based on the client environment variables, I imagine).

You should have no problem setting the repository up now. I recommend deleting the previous repository and cloning again.

philwalk commented 5 years ago

I'm looking at it now, hopefully I can get back up to speed without too much delay ...

jvican commented 5 years ago

Thanks a lot @philwalk, please let me know if you have questions or you run into any problem. I'll be available in our Gitter channel https://gitter.im/scalacenter/bloop

philwalk commented 5 years ago

I started out with a fresh clone, and when I start an sbt session I get this:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: ch.epfl.scala#sbt-bloop-build-shaded;1.0.0-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
jvican commented 5 years ago

OK, that's really weird. Can you rm -rf project/target project/project/target project/project/project/target and then run sbt again? You shouldn't get that at all with a fresh clone!

jvican commented 5 years ago

This is the workflow you should use to test your changes:

  1. Kill the bloop server running if there's one running
  2. sbt frontend/runMain bloop.Server to start your modified version of the server
  3. use the bloop CLI currently installed in your machine to trigger completions, your server's implementation of autocompletions will be triggered
philwalk commented 5 years ago
philwalk:~/workspace/bloop
$ rm -rf project/target project/project/target project/project/project/target
philwalk:~/workspace/bloop
$ sbt
[info] Loading settings for project global-plugins from dirtymoney.sbt,idea.sbt,plugins.sbt ...
[info] Loading global plugins from C:\Users\philwalk\.sbt\1.0\plugins
[info] Loading settings for project bloop-build-build-build-build from plugins.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\project\project\project\project
[info] Loading settings for project bloop-build-build-build from build.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\project\project\project
[info] Compiling 3 Scala sources and 2 Java sources to C:\Users\philwalk\workspace\bloop\project\project\project\target\scala-2.12\sbt-1.0\classes ...
[info] Done compiling.
[info] Loading settings for project root from build.sbt ...
[info] Loading project definition from C:\Users\philwalk\workspace\bloop\project\project
[info] Writing Ivy file C:\Users\philwalk\workspace\bloop\project\project\target\sbt-bloop-build-shaded\target\scala-2.12\sbt-1.0\resolution-cache\ch.epfl.scala\sbt-bloop-build-shaded\scala_2.12\sbt_1.0\1.0.0-SNAPSHOT\resolved.xml.xml
[info] Wrote C:\Users\philwalk\workspace\bloop\project\project\target\sbt-bloop-build-shaded\target\scala-2.12\sbt-1.0\sbt-bloop-build-shaded-1.0.0-SNAPSHOT.pom
[info] Compiling 9 Scala sources to C:\Users\philwalk\workspace\bloop\project\project\target\sbt-bloop-build-shaded\target\scala-2.12\sbt-1.0\classes ...
[warn] there were three feature warnings; re-run with -feature for details
[warn] one warning found
[info] Done compiling.
[info] Packaging C:\Users\philwalk\workspace\bloop\project\project\target\sbt-bloop-build-shaded\target\scala-2.12\sbt-1.0\sbt-bloop-build-shaded-1.0.0-SNAPSHOT.jar ...
[info] Done packaging.
[error] coursier.error.ResolutionError$CantDownloadModule: Error downloading com.dwijnand:sbt-compat;sbtVersion=1.0;scalaVersion=2.12:1.2.6
[error]   Not found
[error]   not found: c:\Users\philwalk\.ivy2\local\com.dwijnand\sbt-compat\scala_2.12\sbt_1.0\1.2.6\ivys\ivy.xml
[error]   not found: https://repo1.maven.org/maven2/com/dwijnand/sbt-compat_2.12_1.0/1.2.6/sbt-compat-1.2.6.pom
[error]         at coursier.Resolve$.$anonfun$validate$1(Resolve.scala:275)
[error]         at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:937)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error]         at scala.collection.TraversableLike.map(TraversableLike.scala:233)
[error]         at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
[error]         at scala.collection.AbstractTraversable.map(Traversable.scala:104)
[error]         at coursier.Resolve$.validate(Resolve.scala:273)
[error]         at coursier.Resolve.validate0$1(Resolve.scala:82)
[error]         at coursier.Resolve.$anonfun$ioWithConflicts$4(Resolve.scala:126)
[error]         at coursier.util.Task$.$anonfun$flatMap$2(Task.scala:11)
[error]         at scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:303)
[error]         at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:37)
[error]         at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] (sbtBloopBuildShadedDeps / coursierResolutions) coursier.error.ResolutionError$CantDownloadModule: Error downloading com.dwijnand:sbt-compat;sbtVersion=1.0;scalaVersion=2.12:1.2.6
[error]   Not found
[error]   not found: c:\Users\philwalk\.ivy2\local\com.dwijnand\sbt-compat\scala_2.12\sbt_1.0\1.2.6\ivys\ivy.xml
[error]   not found: https://repo1.maven.org/maven2/com/dwijnand/sbt-compat_2.12_1.0/1.2.6/sbt-compat-1.2.6.pom
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?
jvican commented 5 years ago

Do you have global plugins installed that could be causing that resolution error? If there are, try removing them, rm -rfing again and running sbt. You should not be seeing this resolution error (our build works in our Windows Jenkins instance without problems).

philwalk commented 5 years ago

After disabling all global plugins, I got past the above problem, and now I'm getting a problem we ran into last Spring where it incorrectly sets SCRIPT_PATH and then produces a bad path to the sbt.bat file. Here's the error message. I'll spend some more time on it this afternoon.

[info] Generating bloop configuration files for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\compiler-plugin-whitelist

C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\compiler-plugin-whitelist>set SCRIPT_DIR=C:\opt\ue\cygbin\

C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\compiler-plugin-whitelist>c:\opt\ue\sbt\bin\sbt.bat bloopInstall

I think I know how to get around this, so I should be able to make some progress now.

jvican commented 5 years ago

Go to project/BuildPlugin.scala and disable the exporting of those projects in a method called bloopOnLoad by just plainly returning state, something like this:

    val bloopOnLoad: Def.Initialize[State => State] = Def.setting {
      Keys.onLoad.value.andThen { state => state }
    }

That should be it. Fixing this issue with scriptpath should not block you anymore. There will be some tests unrelated to autocompletion that will fail but you can just ignore them, focus on the autocompletion test suite instead.

philwalk commented 5 years ago

Here's an error message that it printed, although it doesn't seem to have caused any problems. I've seen this before, it's caused by script code that tries to parse a java version string but doesn't first strip out the carriage return.

[success] Generated bloop configuration files for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\scala-seed-project
[info] Generating bloop configuration files for C:\Users\philwalk\workspace\bloop\frontend\src\test\resources\simple-build

The Java Development Kit (JDK) installation you have is not up to date.
sbt requires at least version 6+, you have
version 0

Please go to http://www.oracle.com/technetwork/java/javase/downloads/ and download
a valid JDK and install before running sbt.

It seems to have completed the build now.

I'm running java version 1.8.0_211 and scala 2.12.10

philwalk commented 5 years ago

I'm I have Intellij working, but here's what I'm getting when I run the frontend tests. Many of the errors seem to result because nailgun can't find the built classes:

java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$

The file exists:

$ find . -type f -name TestUtil\$.class
./.bloop/frontend/scala-2.12/bloop-internal-classes/test-classes-2eve39oETYSuNCKXsH83WA==/bloop/util/TestUtil$.class
./.bloop/frontend/scala-2.12/test-classes/bloop/util/TestUtil$.class

Here's the full test output:

$ bloop test frontend

Output (click arrow to expand)

```
Compiling sockets (8 Java sources)
Compiling jsonConfig212 (4 Scala sources)
Compiled sockets (1703ms)
Compiled jsonConfig212 (12031ms)
Compiling frontend (101 Scala sources)
Compiled frontend (31185ms)
Compiling frontend-test (56 Scala sources)
Compiled frontend-test (11313ms)
Test run started
Test bloop.AutoCompleteSpec.testAutoCompletionForProjects started
Test run finished: 1 failed, 0 ignored, 1 total, 0.666s
Execution took 0.65s
1 tests, 1 failed

Test run started
Test bloop.BloopLoggerSpec.ultipleLoggerSameNamesDifferentOutputs started
Test bloop.BloopLoggerSpec.isVerbose started
Test bloop.BloopLoggerSpec.errorMessagesGoToErr started
Test bloop.BloopLoggerSpec.debugAndTraceMessagesAreIgnoredByDefault started
Test bloop.BloopLoggerSpec.isVerboseForConcreteContexts started
Test bloop.BloopLoggerSpec.ultipleLoggersDontStepOnEachOtherToes started
Test bloop.BloopLoggerSpec.infoAndWarnMessagesGoToOut started
Test bloop.BloopLoggerSpec.debugAndTraceMessagesGoToErrInVerboseMode started
Test run finished: 0 failed, 0 ignored, 8 total, 0.68s
Execution took 0.67s
8 tests, 8 passed
All tests in bloop.BloopLoggerSpec passed

Test run started
Test bloop.DagSpec.TestDagReduction started
Test bloop.DagSpec.SimpleRecursiveDAG started
Test bloop.DagSpec.TestUniqueDagFromMap started
Test bloop.DagSpec.LongerRecursiveDAG started
Test bloop.DagSpec.TestMinimalInverseDependencies started
Test bloop.DagSpec.SimpleDAG started
Test bloop.DagSpec.SimpleDfs started
Test bloop.DagSpec.DottifyGraph started
Test bloop.DagSpec.CompleteRecursiveDAG started
Test bloop.DagSpec.CompleteDAGWithMissingDependencies started
Test bloop.DagSpec.EmptyDAG started
Test bloop.DagSpec.EmptyDfs started
Test bloop.DagSpec.CompleteDAG started
Test bloop.DagSpec.CompleteDfs started
Test run finished: 14 failed, 0 ignored, 14 total, 0.014s
Execution took 3ms
14 tests, 14 failed

Test run started
Test bloop.DebugFilterSpec.checkSubsumption started
Test bloop.DebugFilterSpec.parseDebugFilterAll started
Test bloop.DebugFilterSpec.parseAllDebugFilters started
Test bloop.DebugFilterSpec.failWhenParsingOnlyDebugHeader started
Test bloop.DebugFilterSpec.parseDebugAndSimplifyToAll started
Test bloop.DebugFilterSpec.parseDebugFilters started
Test run finished: 0 failed, 0 ignored, 6 total, 0.641s
Execution took 0.64s
6 tests, 6 passed
All tests in bloop.DebugFilterSpec passed

Test run started
Test bloop.ForkerSpec.detectNewLines started
Test bloop.ForkerSpec.runHasCorrectWorkingDirectory started
Test bloop.ForkerSpec.canRun started
Test bloop.ForkerSpec.runReportsMissingCWD started
Test bloop.ForkerSpec.reportsExceptions started
Test run finished: 4 failed, 0 ignored, 5 total, 0.02s
Execution took 14ms
5 tests, 1 passed, 4 failed

Test run started
Test bloop.GenericTestSpec.canTestWithCascading started
Test run finished: 1 failed, 0 ignored, 1 total, 0.008s
Execution took 6ms
1 tests, 1 failed

Test run started
Test bloop.LoadProjectSpec.LoadJavaProject started
Test run finished: 1 failed, 0 ignored, 1 total, 0.022s
Execution took 21ms
1 tests, 1 failed

Test run started
Test bloop.ProcessLoggerSpec.loggerToOutputStream started
Test bloop.ProcessLoggerSpec.loggerToPrintStream started
Test run finished: 0 failed, 0 ignored, 2 total, 0.007s
Execution took 5ms
2 tests, 2 passed
All tests in bloop.ProcessLoggerSpec passed

Test run started
Test bloop.RunSpec.canRunInheritedMain started
Test bloop.RunSpec.canCancelNeverEndingApplication started
Test bloop.RunSpec.canRunApplicationThatRequiresInput started
Test bloop.RunSpec.canRunDefaultMainClass started
Test bloop.RunSpec.canRunSpecifiedMainSingleChoice started
Test bloop.RunSpec.runApplicationAfterIncrementalChanges started
Test bloop.RunSpec.canRunSpecifiedMainMultipleChoices started
Test bloop.RunSpec.canRunMainFromBinaryDependency started
Test bloop.RunSpec.canRunMainFromSourceDependency started
Test bloop.RunSpec.doesntDetectNonRunnableClasses started
Test bloop.RunSpec.canDetectOneMainClass started
Test bloop.RunSpec.canDetectMultipleMainClasses started
Test bloop.RunSpec.runCanSeeCompileResources started
Test bloop.RunSpec.setCorrectCwd started
Test bloop.RunSpec.runIncludesTransitiveResourcesInAggregatedProjects started
Test run finished: 15 failed, 0 ignored, 15 total, 0.019s
Execution took 8ms
15 tests, 15 failed

Test run started
Test bloop.TestFilterSpec.testFilterDoesntMatchDifferentStrings started
Test bloop.TestFilterSpec.testFilterSupportsWildcardInExclusionFilter started
Test bloop.TestFilterSpec.testFilterAcceptsSeveralPatterns started
Test bloop.TestFilterSpec.testFilterSupportsInclusionAndExclusionFilters started
Test bloop.TestFilterSpec.testFilterSupportsWildcard started
Test bloop.TestFilterSpec.testFilterMatchesExactMatch started
Test bloop.TestFilterSpec.testFilterSupportsExclusionFilter started
Test bloop.TestFilterSpec.wildcardRejectsUnrelatedInput started
Test run finished: 0 failed, 0 ignored, 8 total, 0.018s
Execution took 15ms
8 tests, 8 passed
All tests in bloop.TestFilterSpec passed

Test run started
Test bloop.bsp.ProjectUrisSpec.ParseUriWindows started
Test run finished: 0 failed, 0 ignored, 1 total, 0.004s
Execution took 2ms
1 tests, 1 passed
All tests in bloop.bsp.ProjectUrisSpec passed

-------------------------------- Running Tests --------------------------------
X bloop.BuildLoaderSpec.don't reload if nothing changes 12ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload if settings are added 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.do not reload if same settings are added 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload if new settings are added 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload if two file contents changed in build with previous 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload if two file contents changed with same settings 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload if new settings are added and two file contents changed 2ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.do not reload if no settings are passed to build configured with previous settings 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.do not reload on empty settings 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.don't reload when configuration files are touched 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload when new configuration file is added to the build 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload when existing configuration files change 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.BuildLoaderSpec.reload when new configuration file is deleted 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.BuildLoaderSpec$.loadBuildState(BuildLoaderSpec.scala:246)
  bloop.BuildLoaderSpec$.$anonfun$testLoad$1(BuildLoaderSpec.scala:238)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 14ms
-------------------------------- Running Tests --------------------------------
13 tests, 13 failed

X bloop.BuildPipeliningSpec 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
    bloop.testing.BaseSuite.testOnlyOnJava8(BaseSuite.scala:558)
    bloop.BuildPipeliningSpec$.(BuildPipeliningSpec.scala:63)
    bloop.BuildPipeliningSpec$.(BuildPipeliningSpec.scala:-1)
    sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:-2)
    sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    java.lang.reflect.Field.get(Field.java:393)
    org.portablescala.reflect.LoadableModuleClass.loadModule(LoadableModuleClass.scala:17)
    utest.PlatformShims$.loadModule(PlatformShims.scala:19)
    utest.runner.BaseRunner.$anonfun$runSuite$4(BaseRunner.scala:108)
Execution took 0ms
-------------------------------- Running Tests --------------------------------
1 tests, 1 failed

+ bloop.CliSpec.fail at wrong end of pipe name 2ms  
+ bloop.CliSpec.fail at wrong middle part of pipe name 0ms  
+ bloop.CliSpec.fail at wrong start of pipe name 0ms  
+ bloop.CliSpec.fail at common wrong pipe name 0ms  
+ bloop.CliSpec.fail at existing socket 2ms  
+ bloop.CliSpec.succeed at non-existing relative file for socket  5ms  
+ bloop.CliSpec.fail at non-existing socket folder 0ms  
+ bloop.CliSpec.fail at socket lengthy name 1ms  
+ bloop.CliSpec.fail at missing socket 0ms  
+ bloop.CliSpec.fail at missing pipe name 0ms  
+ bloop.CliSpec.succeed at correct pipe name 2ms  
+ bloop.CliSpec.succeed at non-existing socket file 1ms  
+ bloop.CliSpec.succeed at default tcp options 20ms  
+ bloop.CliSpec.succeed at custom tcp options 6ms  
+ bloop.CliSpec.fail at non-sensical host address 2256ms  
+ bloop.CliSpec.fail at invalid ipv4 host addresses 0ms  
+ bloop.CliSpec.fail at invalid ipv6 host address 0ms  
+ bloop.CliSpec.success at valid ipv4 addresses 0ms  
+ bloop.CliSpec.succeed at valid ipv6 addresses 0ms  
+ bloop.CliSpec.success at valid port number 0ms  
+ bloop.CliSpec.fail at out of range port number 0ms  
+ bloop.CliSpec.fail at reserved port numbers 0ms  
Execution took 2.29s
-------------------------------- Running Tests --------------------------------
22 tests, 22 passed
All tests in bloop.CliSpec passed

X bloop.CompileSpec.compile a project twice with no input changes produces a no-op 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$1(CompileSpec.scala:29)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile build incrementally sourcing from an analysis file 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$7(CompileSpec.scala:57)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile project / clean / compile it again 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$11(CompileSpec.scala:95)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.simulate an incremental compiler session 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$15(CompileSpec.scala:133)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile a build with diamond shape and check basic compilation invariants 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$25(CompileSpec.scala:279)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile java code depending on scala code 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$28(CompileSpec.scala:360)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile after moving a class across project + invalidating symbol in a dependent project 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$31(CompileSpec.scala:399)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.don't compile after renaming a Scala class and not its references in the same project 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$36(CompileSpec.scala:488)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.detect binary changes in Java within the same project 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.compileTestWithOrder$1(CompileSpec.scala:607)
  bloop.CompileSpec$.$anonfun$new$40(CompileSpec.scala:690)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.invalidate Scala class files in javac forked and local compilation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$44(CompileSpec.scala:695)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.don't compile after renaming a class and not its references in a dependent project 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$46(CompileSpec.scala:780)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.report java errors when `JavaThenScala` is enabled 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$50(CompileSpec.scala:864)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.support -Xfatal-warnings internal implementation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$53(CompileSpec.scala:928)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.detect Scala syntactic errors 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$56(CompileSpec.scala:975)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.detect invalid Scala compiler flags 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$59(CompileSpec.scala:1012)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.cascade compilation compiles only a strict subset of targets 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$62(CompileSpec.scala:1043)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.cancel slow compilation 2ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.util.BuildUtil$.testSlowBuild(BuildUtil.scala:16)
  bloop.CompileSpec$.$anonfun$new$65(CompileSpec.scala:1103)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compiler plugins are cached automatically 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$69(CompileSpec.scala:1145)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.check that we report rich diagnostics in the CLI when -Yrangepos 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$85(CompileSpec.scala:1219)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.check positions reporting in adjacent diagnostics 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$88(CompileSpec.scala:1262)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.don't compile build in two concurrent CLI clients 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$92(CompileSpec.scala:1302)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile a project that redundantly lists an exact file as well as parent directory 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$97(CompileSpec.scala:1332)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.CompileSpec.compile Scala class after renaming a static member in a Java class 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.CompileSpec$.$anonfun$new$100(CompileSpec.scala:1359)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 2ms
-------------------------------- Running Tests --------------------------------
23 tests, 23 failed

X bloop.ConsoleSpec.default ammonite console works in multi-build project 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.ConsoleSpec$.$anonfun$new$1(ConsoleSpec.scala:15)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
-------------------------------- Running Tests --------------------------------
Execution took 0ms
1 tests, 1 failed

X bloop.DeduplicationSpec.three concurrent clients deduplicate compilation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.util.BuildUtil$.testSlowBuild(BuildUtil.scala:16)
  bloop.DeduplicationSpec$.$anonfun$new$1(DeduplicationSpec.scala:47)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.DeduplicationSpec.deduplication removes invalidated class files from all external classes dirs 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.util.BuildUtil$.testSlowBuild(BuildUtil.scala:16)
  bloop.DeduplicationSpec$.$anonfun$new$11(DeduplicationSpec.scala:181)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.DeduplicationSpec.deduplication doesn't work if project definition changes 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.util.BuildUtil$.testSlowBuild(BuildUtil.scala:16)
  bloop.DeduplicationSpec$.$anonfun$new$19(DeduplicationSpec.scala:346)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.DeduplicationSpec.three concurrent clients receive error diagnostics appropriately 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.DeduplicationSpec$.$anonfun$new$27(DeduplicationSpec.scala:451)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.DeduplicationSpec.cancel deduplicated compilation finishes all clients 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.DeduplicationSpec$.$anonfun$new$34(DeduplicationSpec.scala:770)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.DeduplicationSpec.cancel deduplication on blocked compilation 3ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.DeduplicationSpec$.$anonfun$new$41(DeduplicationSpec.scala:918)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 3ms
-------------------------------- Running Tests --------------------------------
6 tests, 6 failed

X bloop.FileWatchingSpec.simulate an incremental compiler session with file watching enabled 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.FileWatchingSpec$.$anonfun$new$1(FileWatchingSpec.scala:24)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.FileWatchingSpec.don't act on MODIFY events with size == 0 right away 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.FileWatchingSpec$.$anonfun$new$35(FileWatchingSpec.scala:189)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.FileWatchingSpec.cancel file watcher 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.FileWatchingSpec$.$anonfun$new$54(FileWatchingSpec.scala:307)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
+ bloop.FileWatchingSpec.IGNORED - playground for monix primitives 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
4 tests, 1 passed, 3 failed

X bloop.JsTestSpec 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
    bloop.testing.BloopHelpers.loadBuildFromResources(BloopHelpers.scala:68)
    bloop.testing.BloopHelpers.loadBuildFromResources$(BloopHelpers.scala:63)
    bloop.testing.BaseSuite.loadBuildFromResources(BaseSuite.scala:34)
    bloop.testing.ProjectBaseSuite.(ProjectBaseSuite.scala:11)
    bloop.BaseTestSpec.(TestSpec.scala:23)
    bloop.JsTestSpec$.(TestSpec.scala:59)
    bloop.JsTestSpec$.(TestSpec.scala:-1)
    sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:-2)
    sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    java.lang.reflect.Field.get(Field.java:393)
    org.portablescala.reflect.LoadableModuleClass.loadModule(LoadableModuleClass.scala:17)
    utest.PlatformShims$.loadModule(PlatformShims.scala:19)
    utest.runner.BaseRunner.$anonfun$runSuite$4(BaseRunner.scala:108)
Execution took 0ms
1 tests, 1 failed
-------------------------------- Running Tests --------------------------------

X bloop.JvmTestSpec 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
    bloop.testing.BloopHelpers.loadBuildFromResources(BloopHelpers.scala:68)
    bloop.testing.BloopHelpers.loadBuildFromResources$(BloopHelpers.scala:63)
    bloop.testing.BaseSuite.loadBuildFromResources(BaseSuite.scala:34)
    bloop.testing.ProjectBaseSuite.(ProjectBaseSuite.scala:11)
    bloop.BaseTestSpec.(TestSpec.scala:23)
    bloop.JvmTestSpec$.(TestSpec.scala:107)
    bloop.JvmTestSpec$.(TestSpec.scala:-1)
    sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:-2)
    sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    java.lang.reflect.Field.get(Field.java:393)
    org.portablescala.reflect.LoadableModuleClass.loadModule(LoadableModuleClass.scala:17)
    utest.PlatformShims$.loadModule(PlatformShims.scala:19)
    utest.runner.BaseRunner.$anonfun$runSuite$4(BaseRunner.scala:108)
-------------------------------- Running Tests --------------------------------
Execution took 0ms
1 tests, 1 failed

X bloop.ScalaVersionsSpec.cross-compile build to latest Scala versions 50ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.ScalaVersionsSpec$.$anonfun$new$1(ScalaVersionsSpec.scala:65)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 50ms
-------------------------------- Running Tests --------------------------------
1 tests, 1 failed

X bloop.SeedTestSpec 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
    bloop.testing.BloopHelpers.loadBuildFromResources(BloopHelpers.scala:68)
    bloop.testing.BloopHelpers.loadBuildFromResources$(BloopHelpers.scala:63)
    bloop.testing.BaseSuite.loadBuildFromResources(BaseSuite.scala:34)
    bloop.testing.ProjectBaseSuite.(ProjectBaseSuite.scala:11)
    bloop.BaseTestSpec.(TestSpec.scala:23)
    bloop.SeedTestSpec$.(TestSpec.scala:43)
    bloop.SeedTestSpec$.(TestSpec.scala:-1)
    sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:-2)
    sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    java.lang.reflect.Field.get(Field.java:393)
    org.portablescala.reflect.LoadableModuleClass.loadModule(LoadableModuleClass.scala:17)
    utest.PlatformShims$.loadModule(PlatformShims.scala:19)
    utest.runner.BaseRunner.$anonfun$runSuite$4(BaseRunner.scala:108)
Execution took 0ms
1 tests, 1 failed
-------------------------------- Running Tests --------------------------------

X bloop.TracerSpec.forty clients can send zipkin traces concurrently 18ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.TracerSpec$.$anonfun$new$1(TracerSpec.scala:101)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 18ms
-------------------------------- Running Tests --------------------------------
1 tests, 1 failed

+ bloop.bsp.LocalBspCompileSpec.DISABLED - initialize and exit a build via BSP 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - no-op compile simple build 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - compile simple build with client origin id 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - create orphan client classes directory and make sure loading a BSP session cleans it up 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - compile incrementally a build 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - successful and failed compiles always populate external classes directories 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - compile incrementally and clear previous errors 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - no-op compile and publish diagnostics from a previous CLI compilation 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - compile incrementally and publish warnings from a previous CLI compilation 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - compile incrementally and clear old errors fixed in previous CLI compilations 0ms  
+ bloop.bsp.LocalBspCompileSpec.DISABLED - support -Xfatal-warnings internal implementation 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
11 tests, 11 passed
All tests in bloop.bsp.LocalBspCompileSpec passed

+ bloop.bsp.LocalBspConnectionSpec.DISABLED - initialize several clients concurrently and simulate a hard disconnection 0ms  
+ bloop.bsp.LocalBspConnectionSpec.DISABLED - trigger slow compilation and simulate hard BSP client disconnection 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
2 tests, 2 passed
All tests in bloop.bsp.LocalBspConnectionSpec passed

+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - initialize metals client and save settings 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - do not initialize metals client and save settings with unsupported scala version 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - initialize metals client in workspace with already enabled semanticdb 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - initialize metals client in workspace with already enabled semanticdb and -Yrangepos 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - should save workspace settings with cached build 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - initialize multiple metals clients and save settings 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - compile with semanticDB 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - compile with semanticDB using cached plugin 0ms  
+ bloop.bsp.LocalBspMetalsClientSpec.DISABLED - save settings and compile with semanticDB 0ms  
-------------------------------- Running Tests --------------------------------
Execution took 0ms
9 tests, 9 passed
All tests in bloop.bsp.LocalBspMetalsClientSpec passed

+ bloop.bsp.LocalBspProtocolSpec.DISABLED - check the correct contents of scalac options 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - use client root classes directory and make sure project directories are stable 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - find main classes 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - find test classes 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - build targets request works on complicated build 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - build targets should be empty in build with recursive dependencies 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - sources request works 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - resources request works 0ms  
+ bloop.bsp.LocalBspProtocolSpec.DISABLED - dependency sources request works 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
9 tests, 9 passed
All tests in bloop.bsp.LocalBspProtocolSpec passed

X bloop.bsp.TcpBspCompileSpec.initialize and exit a build via BSP 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$1(BspCompileSpec.scala:26)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.no-op compile simple build 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$7(BspCompileSpec.scala:104)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.compile simple build with client origin id 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$12(BspCompileSpec.scala:148)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.create orphan client classes directory and make sure loading a BSP session cleans it up 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$16(BspCompileSpec.scala:185)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.compile incrementally a build 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$22(BspCompileSpec.scala:234)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.successful and failed compiles always populate external classes directories 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$29(BspCompileSpec.scala:364)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.compile incrementally and clear previous errors 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$39(BspCompileSpec.scala:448)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.no-op compile and publish diagnostics from a previous CLI compilation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$49(BspCompileSpec.scala:685)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.compile incrementally and publish warnings from a previous CLI compilation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$55(BspCompileSpec.scala:743)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.compile incrementally and clear old errors fixed in previous CLI compilations 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$61(BspCompileSpec.scala:827)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspCompileSpec.support -Xfatal-warnings internal implementation 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspCompileSpec.$anonfun$new$70(BspCompileSpec.scala:970)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
-------------------------------- Running Tests --------------------------------
Execution took 0ms
11 tests, 11 failed

X bloop.bsp.TcpBspConnectionSpec.initialize several clients concurrently and simulate a hard disconnection 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspConnectionSpec.$anonfun$new$1(BspConnectionSpec.scala:26)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspConnectionSpec.trigger slow compilation and simulate hard BSP client disconnection 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspConnectionSpec.$anonfun$new$7(BspConnectionSpec.scala:142)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
-------------------------------- Running Tests --------------------------------
Execution took 0ms
2 tests, 2 failed

X bloop.bsp.TcpBspMetalsClientSpec.initialize metals client and save settings 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$1(BspMetalsClientSpec.scala:36)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.do not initialize metals client and save settings with unsupported scala version 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$4(BspMetalsClientSpec.scala:76)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.initialize metals client in workspace with already enabled semanticdb 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$7(BspMetalsClientSpec.scala:107)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.initialize metals client in workspace with already enabled semanticdb and -Yrangepos 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$11(BspMetalsClientSpec.scala:153)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.should save workspace settings with cached build 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$15(BspMetalsClientSpec.scala:198)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.initialize multiple metals clients and save settings 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$22(BspMetalsClientSpec.scala:230)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.compile with semanticDB 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$29(BspMetalsClientSpec.scala:292)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.compile with semanticDB using cached plugin 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$33(BspMetalsClientSpec.scala:311)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspMetalsClientSpec.save settings and compile with semanticDB 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspMetalsClientSpec.$anonfun$new$37(BspMetalsClientSpec.scala:330)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 0ms
-------------------------------- Running Tests --------------------------------
9 tests, 9 failed

X bloop.bsp.TcpBspProtocolSpec.check the correct contents of scalac options 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$1(BspProtocolSpec.scala:28)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.use client root classes directory and make sure project directories are stable 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$14(BspProtocolSpec.scala:98)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.find main classes 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$22(BspProtocolSpec.scala:142)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.find test classes 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$29(BspProtocolSpec.scala:188)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.build targets request works on complicated build 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$34(BspProtocolSpec.scala:214)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.build targets should be empty in build with recursive dependencies 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$43(BspProtocolSpec.scala:261)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.sources request works 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$46(BspProtocolSpec.scala:271)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.resources request works 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$54(BspProtocolSpec.scala:303)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
X bloop.bsp.TcpBspProtocolSpec.dependency sources request works 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.bsp.BspProtocolSpec.$anonfun$new$62(BspProtocolSpec.scala:340)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 0ms
-------------------------------- Running Tests --------------------------------
9 tests, 9 failed

+ bloop.dap.DebugProtocolSpec.DISABLED - starts a debug session 0ms  
+ bloop.dap.DebugProtocolSpec.DISABLED - restarted session does not contain JDI output 0ms  
+ bloop.dap.DebugProtocolSpec.DISABLED - picks up source changes across sessions 0ms  
+ bloop.dap.DebugProtocolSpec.DISABLED - starts test suites 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
4 tests, 4 passed
All tests in bloop.dap.DebugProtocolSpec passed

+ bloop.dap.DebugServerSpec.DISABLED - cancelling closes server connection 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - cancelling closes client connection 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - sends exit and terminated events when cancelled 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - closes the client when debuggee finished and terminal events are sent 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - sends exit and terminated events when cannot run debuggee 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - does not accept a connection unless the previous session requests a restart 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - responds to launch when jvm could not be started 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - restarting closes current client and debuggee 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - disconnecting closes server, client and debuggee 0ms  
+ bloop.dap.DebugServerSpec.DISABLED - closes the client even though the debuggee cannot close 0ms  
Execution took 0ms
-------------------------------- Running Tests --------------------------------
10 tests, 10 passed
All tests in bloop.dap.DebugServerSpec passed

Execution took 0.65s
2 tests, 1 passed, 1 failed

X bloop.io.ClasspathHasherSpec.cancellation works OK 650ms 
  java.lang.NullPointerException
  io.github.soc.directories.ProjectDirectories.fromPath(ProjectDirectories.java:221)
  io.github.soc.directories.ProjectDirectories.from(ProjectDirectories.java:272)
  coursier.paths.CoursierPaths.init(CoursierPaths.java:61)
  coursier.paths.CoursierPaths.cacheDirectory(CoursierPaths.java:68)
  coursier.paths.CachePath.defaultCacheDirectory(CachePath.java:88)
  coursier.cache.CacheDefaults$.location$lzycompute(CacheDefaults.scala:16)
  coursier.cache.CacheDefaults$.location(CacheDefaults.scala:16)
  coursier.cache.FileCache$.apply(FileCache.scala:964)
  coursier.cache.PlatformCacheCompanion.default$lzycompute(PlatformCacheCompanion.scala:7)
  coursier.cache.PlatformCacheCompanion.default(PlatformCacheCompanion.scala:7)
  coursier.Fetch$.apply$default$1(Fetch.scala:244)
  bloop.DependencyResolution$.resolveDependenciesWithErrors(DependencyResolution.scala:85)
  bloop.DependencyResolution$.resolveWithErrors(DependencyResolution.scala:66)
  bloop.DependencyResolution$.resolve(DependencyResolution.scala:34)
  bloop.io.ClasspathHasherSpec$.$anonfun$new$1(ClasspathHasherSpec.scala:25)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
Execution took 3ms
+ bloop.io.ClasspathHasherSpec.IGNORED - detect macros in classpath 0ms  
1 tests, 1 failed
-------------------------------- Running Tests --------------------------------

X bloop.io.SourceHasherSpec.cancellation works 3ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
  bloop.io.SourceHasherSpec$.$anonfun$new$1(SourceHasherSpec.scala:22)
  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  bloop.testing.BaseSuite.$anonfun$test$1(BaseSuite.scala:563)
  bloop.testing.BaseSuite.$anonfun$tests$4(BaseSuite.scala:596)
-------------------------------- Running Tests --------------------------------
X bloop.nailgun.NailgunSpec 0ms 
  java.lang.NoClassDefFoundError: Could not initialize class bloop.util.TestUtil$
    bloop.testing.BloopHelpers.loadBuildFromResources(BloopHelpers.scala:68)
    bloop.testing.BloopHelpers.loadBuildFromResources$(BloopHelpers.scala:63)
    bloop.testing.BaseSuite.loadBuildFromResources(BaseSuite.scala:34)
    bloop.nailgun.NailgunSpec$.(NailgunSpec.scala:16)
    bloop.nailgun.NailgunSpec$.(NailgunSpec.scala:-1)
    sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:-2)
    sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    java.lang.reflect.Field.get(Field.java:393)
    org.portablescala.reflect.LoadableModuleClass.loadModule(LoadableModuleClass.scala:17)
    utest.PlatformShims$.loadModule(PlatformShims.scala:19)
    utest.runner.BaseRunner.$anonfun$runSuite$4(BaseRunner.scala:108)
Execution took 0ms
-------------------------------- Running Tests --------------------------------
1 tests, 1 failed

+ bloop.testing.LoggingEventHandlerSpec.logs and displays short summary of successful run 85ms  
+ bloop.testing.LoggingEventHandlerSpec.logs and displays short summary of run with failed test 11ms  
Execution took 96ms
-------------------------------- Running Tests --------------------------------
2 tests, 2 passed
All tests in bloop.testing.LoggingEventHandlerSpec passed

+ bloop.testing.TestPrinterSpec.stripping parts of message created by test framework 0ms  
Execution took 0ms
1 tests, 1 passed
All tests in bloop.testing.TestPrinterSpec passed

===============================================
Total duration: 5.16s
14 passed, 24 failed

Failed:
- bloop.AutoCompleteSpec
- bloop.DagSpec
- bloop.ForkerSpec
- bloop.GenericTestSpec
- bloop.LoadProjectSpec
- bloop.RunSpec
- bloop.BuildLoaderSpec
- bloop.BuildPipeliningSpec
- bloop.CompileSpec
- bloop.ConsoleSpec
- bloop.DeduplicationSpec
- bloop.FileWatchingSpec
- bloop.JsTestSpec
- bloop.JvmTestSpec
- bloop.ScalaVersionsSpec
- bloop.SeedTestSpec
- bloop.TracerSpec
- bloop.bsp.TcpBspCompileSpec
- bloop.bsp.TcpBspConnectionSpec
- bloop.bsp.TcpBspMetalsClientSpec
- bloop.bsp.TcpBspProtocolSpec
- bloop.io.ClasspathHasherSpec
- bloop.io.SourceHasherSpec
- bloop.nailgun.NailgunSpec
===============================================

```
philwalk commented 5 years ago

I just noticed your note about how to launch the server, ignore the previous and I'll launch it correctly this time :)

jvican commented 5 years ago

Those errors you're getting are weird :thinking: Your machine seems to be pushing our build pretty hard 😛

Let me know if launching the server like that helps. You might consider cleaning everything with clean to see if the tests run again just fine.

philwalk commented 5 years ago

ok, I'll give it a try

philwalk commented 5 years ago

I have a fix for the specific ^M problem in the autocompletion context, although it's difficult to know if it breaks anything because tests are failing. I figured out one of the causes, which might explain many or most of the test failures. It's also related to a non-portable use of the System.lineSeparator variable in bloop.util.TestUtil.scala, at line 540:

case class ParsedFile(relativePath: RelativePath, contents: String)
  def parseFile(contents0: String): ParsedFile = {
    val contents = contents0.trim
    contents.split(System.lineSeparator()) match {

This code explicitly assumes that source files have OS-dependent line endings. Here's a portable alternative:

case class ParsedFile(relativePath: RelativePath, contents: String)
  def parseFile(contents0: String): ParsedFile = {
    val contents = contents0.trim
    contents.split("\\r?\\n") match {

My hunch is that some of the other references in the code to System.lineSeparator are hiding similar potential issues.

I'll see if I can get some or all of the tests to pass.

philwalk commented 5 years ago

The change I listed above fixed all but two of the tests in bloop.CompileSpec

I'm still working on this part time. Here's my first attempt at adding a new test5 to AutoCompleteSpec.scala.

      // Simulate 'bloop compile A <autocomplete>', happens when we want to add multiple projects
      val test5 = Commands.Autocomplete(
        cliOptions,
        completion.Mode.Projects,
        completion.ZshFormat,
        Some("abou"),
        None
      )

      val action = Run(test1, Run(test2, Run(test3, Run(test4, Run(test5)))))

I clearly don't understand the semantics, my intent was to verify that if the client types "abou" it will autocomplete "about" without a CR. No such luck, suggestions are welcome.

I'll keep looking at it ...

jvican commented 5 years ago

@philwalk You should replace the mode from Mode.Projects to Mode.Commands given that you want an autocompletion query for a command. In fact I've just tried it out and I think I've reproduced the same behaviour you were experiencing.

We share expectations on what that test should have done. However, it turns out this is not the way autocompletions work. Instead, the autocompletions engine expects to receive all commands from the server and then post-processes them based on the input of the user. Therefore, doing an autocomplete for an empty input or a partially complete input such as abou produces always the same response from the server: a list of all commands available.

philwalk commented 5 years ago

@jvican just to make sure I understand what you're saying, here's what I experience on both windows and linux.

When I type in "bloop abou" and then hit the TAB key, it completes the spelling of the command (it completes the word "about", in this example, rather than a list of commands).

The fix I'm testing merely removes the ^M from the word "about". I know there are also other test cases, although I don't know if any of the other use cases involved an appended^M, I'll play with it.

philwalk commented 3 years ago

I have a fix for this bug, but I'm only able to verify the fix manually via the bloop command line (no automated tests).

This bug seems to possibly be bleeding over into vscode-metals, so I'm eager to fix it. Essentially, the fix consists of two parts:

  1. change string.split(File.lineSeparator) to string.split("\\r?\\n") everywhere it occurs
  2. modify BloopLogger#printInfo to output a posix newline if CYGWIN or . It compiles and installs on my Ubuntu workstation, but not on Windows, so I need to install it from the Linux build to the Windows system for verification.

If someone knows how I can write automated tests for the command-completion, I'm happy to do so.

I'll post an update here after I've had a chance to re-verify the changes (they worked last October).

tgodzik commented 3 years ago

This should not influence vscode-metals, but kind of problems are you having?

I think the command completions do not have any tests really and checking it manually is the only way to do it now. Thanks for taking a look at it!

philwalk commented 3 years ago

FYI: Coursier sees that my underlying system is Windows, so it installs only a Windows batch file (bloop.bat). It should also copy the linux script as well, in order to support MinGW/Cygwin/Git bash.

I was able to copy the bloop client from a linux install to my system, and it works as expected in the cygwin environment. (except for the Carriage Returns appended to autocompletions, the bug I'm fixing).

Also, there's a problem with terminal ANSI codes (I'm seeing debris at the beginning of lines), but that's low priority for me at the moment. Let me know if you're aware of a fix.

I'm running the server from sbt, but seeing a couple of issues. Here's my server screen:

[info] Resolving key references (35243 settings) ...
[info]       _____            __         ______           __
[info]      / ___/_________ _/ /___ _   / ____/__  ____  / /____  _____
[info]      \__ \/ ___/ __ `/ / __ `/  / /   / _ \/ __ \/ __/ _ \/ ___/
[info]     ___/ / /__/ /_/ / / /_/ /  / /___/ /__/ / / / /_/ /__/ /
[info]    /____/\___/\__,_/_/\__,_/   \____/\___/_/ /_/\__/\___/_/
[info]
[info]    ***********************************************************
[info]    ***       Welcome to the build of `loooooooooop`        ***
[info]    ***        An effort funded by the Scala Center         ***
[info]    ***********************************************************
[info]
[info] sbt server started at local:sbt-server-e600222969bfdc306caa
sbt:bloop> frontend/runMain bloop.Server
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Compiling 1 Scala source to C:\Users\philwalk\workspace\bloop-newline\frontend\target\scala-2.12\classes ...
[info] Done compiling.
[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list
[info] running (fork) bloop.Server
[info] NGServer [UNKNOWN] started on address localhost/127.0.0.1 port 8212.
[error] Unable to load nailgun-version.properties.
[info] [W] Internal error in session
[error] java.io.EOFException
[error]         at java.base/java.io.DataInputStream.readInt(DataInputStream.java:397)
[error]         at com.martiansoftware.nailgun.NGCommunicator.readCommandContext(NGCommunicator.java:140)
[error]         at com.martiansoftware.nailgun.NGSession.run(NGSession.java:197)

The last 5 lines didn't appear until later (maybe when I attempted autocompletion). I'll let you know what I find out tomorrow.

tgodzik commented 3 years ago
[info] [W] Internal error in session
[error] java.io.EOFException
[error]         at java.base/java.io.DataInputStream.readInt(DataInputStream.java:397)
[error]         at com.martiansoftware.nailgun.NGCommunicator.readCommandContext(NGCommunicator.java:140)
[error]         at com.martiansoftware.nailgun.NGSession.run(NGSession.java:197)

is nothing to worry about, that exception is sometimes logged, not sure for the reason, but it also happens on linux.

philwalk commented 3 years ago

The current location of developer docs appears to be here: https://scalacenter.github.io/bloop/docs/contributing-guide No luck yet getting intellij to work, but am hopeful.

philwalk commented 3 years ago

I have a fix for the autocompletion error, which is almost ready to commit. I can also fix some other possible bugs, if there is an appetite. Here's what the issue is:

Some remaining code uses an idiom that is problematic. Here are some examples from frontend code:

frontend/src/test/scala/bloop/BaseCompileSpec.scala:        .split(System.lineSeparator())
frontend/src/test/scala/bloop/bsp/BspMetalsClientSpec.scala:      .split(System.lineSeparator)
frontend/src/test/scala/bloop/DeduplicationSpec.scala:            .split(System.lineSeparator)
frontend/src/test/scala/bloop/util/TestUtil.scala:    contents.split(System.lineSeparator()) match {

It seems to me that splitting a String to lines should never depend on the OS default line endings. Doing so sometimes works, but needlessly fails if the string has line endings that differ from the OS default. Reading a file, for example, shouldn't depend on which editor it was generated with.

The autocompletion bug is one example, a result of the fact that all bash environments on Windows generate posix line endings (no carriage return) that differ from the JVM System.lineSeparator.

Here are two more examples of this anti-pattern:

buildpress/src/main/scala/buildpress/Buildpress.scala:    val parseResults = contents.split(System.lineSeparator).zipWithIndex.flatMap {
launcher/src/test/scala/bloop/launcher/LauncherBaseSuite.scala:      logs.flatMap(_.split(System.lineSeparator()).toList)

I recommend that we also upgrade these line splitters as well, if there's no objection.

A lesser issue is that the System lineSeparator should probably not be used on output either in many cases, although the resulting problems are often cosmetic (^M may appear in captured output, when viewed in an editor). However, I don't recommend we change any of these unless identified as causing a problem, since the logic is less certain that it wouldn't introduce problems.

philwalk commented 3 years ago

The associated pull request is here:

https://github.com/scalacenter/bloop/pull/1443

tgodzik commented 3 years ago

Some remaining code uses an idiom that is problematic. Here are some examples from frontend code:

Line endings is something that just keeps giving us problems :sweat_smile: We should probably fix that too. Especially if we can easily make it work without Sytem.lineSeparator

philwalk commented 3 years ago

I still have a couple of changes to push, although I'm investigating some things I don't understand yet.

There are some failed tests, but in at least some cases, I suspect it's because I haven't installed all requirements on my system.

Here's the summary for a run of sbt test:


[error] Failed tests:
[error] Failed: Total 15, Failed 5, Errors 0, Passed 10
[error]         bloop.scalanative.ScalaNativeToolchainSpec
[info]
[error] Failed tests:
[error]         bloop.scalanative.ScalaNativeToolchainSpec
[error]         bloop.launcher.LatestMasterLauncherSpec
[error]         bloop.launcher.GlobalSettingsSpec
[error] Failed: Total 323, Failed 6, Errors 0, Passed 317
[error] Failed tests:
[error]         bloop.TracerSpec
[error]         bloop.CompileSpec
[error]         bloop.FileWatchingSpec
[error]         bloop.DeduplicationSpec
``

To manually test the fix in a shell environment on a Windows system, I verified the following in the bloop client:

1. if SHELL is defined as one of the shells in the valid list (e.g., /bin/bash), autocomplete works correctly (no ^M line endings)
2. undef SHELL causes ^M to appear on line endings
philwalk commented 3 years ago

PR #1443