elixir_sense icon indicating copy to clipboard operation
elixir_sense copied to clipboard

Warn if OTP compiled without doc chunks

Open ajayvigneshk opened this issue 3 years ago • 4 comments

I currently use a Mac M1 machine with

erlang: 24.2 elixir: 1.13.3-otp-24

When I run mix test I get failures on sections(mostly) like

if ExUnitConfig.erlang_eep48_supported() do
  # Some doc assertion here
end
Full failure log
==> jason
Compiling 10 files (.ex)
Generated jason app
==> excoveralls
Compiling 28 files (.ex)
Generated excoveralls app
==> elixir_sense
Compiling 82 files (.ex)
Generated elixir_sense app
Excluding tags: [requires_source: true, edoc_fallback: true]

........................................................................

  1) test erlang module (ElixirSense.Core.Normalized.CodeTest)
     test/elixir_sense/core/normalized/code_test.exs:93
     Expected truthy, got false
     code: assert is_list(Code.get_docs(:lists, :docs))
     arguments:

         # 1
         nil

     stacktrace:
       test/elixir_sense/core/normalized/code_test.exs:95: (test)

....................

  2) test get_callbacks_with_docs for erlang behaviours (ElixirSense.Core.IntrospectionTest)
     test/elixir_sense/core/introspection_test.exs:70
     match (=) failed
     code:  assert "- CallbackMode = " <> _ = summary
     left:  "- CallbackMode = " <> _
     right: nil
     stacktrace:
       test/elixir_sense/core/introspection_test.exs:84: (test)

...........................................................................................................................................................................................................................................

  3) test docs retrieve erlang type documentation (ElixirSense.DocsTest)
     test/elixir_sense/docs_test.exs:805
     Assertion with =~ failed
     code:  assert docs =~ "Supported time unit representations:\n"
     left:  "> :erlang.time_unit()\n\n### Specs\n\n```\n@type time_unit() ::\n  pos_integer()\n  | :second\n  | :millisecond\n  | :microsecond\n  | :nanosecond\n  | :native\n  | :perf_counter\n  | deprecated_time_unit()\n```\n\n\n"
     right: "Supported time unit representations:\n"
     stacktrace:
       test/elixir_sense/docs_test.exs:842: (test)

........................................

  4) test docs retrieve documentation from erlang modules (ElixirSense.DocsTest)
     test/elixir_sense/docs_test.exs:468
     Assertion with =~ failed
     code:  assert docs =~ "By convention,"
     left:  "> :erlang\n\nNo documentation available\n"
     right: "By convention,"
     stacktrace:
       test/elixir_sense/docs_test.exs:489: (test)

..................................../Users/ajayvigneshk/.asdf/installs/erlang/24.2/lib/stdlib-3.17/src/gen_statem.erl: at line 22: can't find include file "logger.hrl"
docsh error: error
[{edoc,'-check_forms/3-fun-0-',3,[{file,"edoc.erl"},{line,771}]},
 {lists,foreach,2,[{file,"lists.erl"},{line,1342}]},
 {edoc,read_source,2,[{file,"edoc.erl"},{line,640}]},
 {edoc_extract,source,3,[{file,"edoc_extract.erl"},{line,60}]},
 {docsh_edoc,to_internal,2,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_edoc.erl"},
      {line,43}]},
 {docsh_lib,convert_one,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,42}]},
 {lists,flatmap,2,[{file,"lists.erl"},{line,1254}]},
 {docsh_lib,convert,3,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,37}]},
 {docsh_lib,make_docs,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,273}]},
 {docsh_lib,dispatch_docs_extraction_,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,253}]},
 {'Elixir.ElixirSense.Core.EdocReader',lookup,2,
     [{file,"lib/elixir_sense/core/edoc_reader.ex"},{line,39}]},
 {'Elixir.ElixirSense.Core.Introspection',get_docs_md,1,
     [{file,"lib/elixir_sense/core/introspection.ex"},{line,364}]},
 {'Elixir.ElixirSense.Core.Introspection',get_all_docs,2,
     [{file,"lib/elixir_sense/core/introspection.ex"},{line,119}]},
 {'Elixir.ElixirSense.Providers.Docs',all,4,
     [{file,"lib/elixir_sense/providers/docs.ex"},{line,37}]},
 {'Elixir.ElixirSense',docs,3,[{file,"lib/elixir_sense.ex"},{line,63}]},
 {'Elixir.ElixirSense.DocsTest',
     'test docs retrieve fallback callback information from erlang modules',1,
     [{file,"test/elixir_sense/docs_test.exs"},{line,626}]},
 {'Elixir.ExUnit.Runner',exec_test,1,
     [{file,"lib/ex_unit/runner.ex"},{line,500}]},
 {timer,tc,1,[{file,"timer.erl"},{line,166}]},
 {'Elixir.ExUnit.Runner','-spawn_test_monitor/4-fun-1-',4,
     [{file,"lib/ex_unit/runner.ex"},{line,451}]}]

.........................../Users/ajayvigneshk/.asdf/installs/erlang/24.2/lib/stdlib-3.17/src/gen_statem.erl: at line 22: can't find include file "logger.hrl"
docsh error: error
[{edoc,'-check_forms/3-fun-0-',3,[{file,"edoc.erl"},{line,771}]},
 {lists,foreach,2,[{file,"lists.erl"},{line,1342}]},
 {edoc,read_source,2,[{file,"edoc.erl"},{line,640}]},
 {edoc_extract,source,3,[{file,"edoc_extract.erl"},{line,60}]},
 {docsh_edoc,to_internal,2,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_edoc.erl"},
      {line,43}]},
 {docsh_lib,convert_one,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,42}]},
 {lists,flatmap,2,[{file,"lists.erl"},{line,1254}]},
 {docsh_lib,convert,3,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,37}]},
 {docsh_lib,make_docs,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,273}]},
 {docsh_lib,dispatch_docs_extraction_,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,253}]},
 {'Elixir.ElixirSense.Core.EdocReader',lookup,2,
     [{file,"lib/elixir_sense/core/edoc_reader.ex"},{line,39}]},
 {'Elixir.ElixirSense.Core.Introspection',get_types_with_docs,1,
     [{file,"lib/elixir_sense/core/introspection.ex"},{line,603}]},
 {'Elixir.ElixirSense.Core.Introspection',get_types_md,1,
     [{file,"lib/elixir_sense/core/introspection.ex"},{line,518}]},
 {'Elixir.ElixirSense.Core.Introspection',get_all_docs,2,
     [{file,"lib/elixir_sense/core/introspection.ex"},{line,119}]},
 {'Elixir.ElixirSense.Providers.Docs',all,4,
     [{file,"lib/elixir_sense/providers/docs.ex"},{line,37}]},
 {'Elixir.ElixirSense',docs,3,[{file,"lib/elixir_sense.ex"},{line,63}]},
 {'Elixir.ElixirSense.DocsTest',
     'test docs retrieve fallback callback information from erlang modules',1,
     [{file,"test/elixir_sense/docs_test.exs"},{line,626}]},
 {'Elixir.ExUnit.Runner',exec_test,1,
     [{file,"lib/ex_unit/runner.ex"},{line,500}]},
 {timer,tc,1,[{file,"timer.erl"},{line,166}]},
 {'Elixir.ExUnit.Runner','-spawn_test_monitor/4-fun-1-',4,
     [{file,"lib/ex_unit/runner.ex"},{line,451}]}]

...............

  5) test function signature find :erlang module functions with different forms of typespecs (ElixirSense.SignatureTest)
     test/elixir_sense/signature_test.exs:1009
     match (=) failed
     code:  assert "Returns the current date as" <> _ = summary
     left:  "Returns the current date as" <> _
     right: ""
     stacktrace:
       test/elixir_sense/signature_test.exs:1033: (test)

..................................

  6) test function signature find signatures from erlang module (ElixirSense.SignatureTest)
     test/elixir_sense/signature_test.exs:287
     match (=) failed
     code:  assert "Returns a flattened version of `DeepList`\\." <> _ = summary1
     left:  "Returns a flattened version of `DeepList`\\" <> _
     right: ""
     stacktrace:
       test/elixir_sense/signature_test.exs:316: (test)

................................

  7) test function signature finds signatures from metadata erlang behaviour call (ElixirSense.SignatureTest)
     test/elixir_sense/signature_test.exs:788
     match (=) failed
     code:  assert "- Args = term\\(\\)\n- Result" <> _ = summary
     left:  "- Args = term\\(\\)\n- Res" <> _
     right: ""
     stacktrace:
       test/elixir_sense/signature_test.exs:819: (test)

....................................................

  8) test type signature find type signatures from erlang module (ElixirSense.SignatureTest)
     test/elixir_sense/signature_test.exs:170
     match (=) failed
     code:  assert "Supported time unit representations:" <> _ = summary
     left:  "Supported time unit representations:" <> _
     right: ""
     stacktrace:
       test/elixir_sense/signature_test.exs:191: (test)

...............................................

  9) test docs retrieve erlang function documentation (ElixirSense.DocsTest)
     test/elixir_sense/docs_test.exs:180
     Assertion with =~ failed
     code:  assert docs =~ "Returns a flattened version of `DeepList`\\.\n"
     left:  "> :lists.flatten(deepList)\n\n### Specs\n\n```\n@spec flatten(deepList) :: list when deepList: [term | deepList], list: [term]\n```\n\nNo documentation available\n\n\n---\n\n> :lists.flatten(deepList, tail)\n\n### Specs\n\n```\n@spec flatten(deepList, tail) :: list when deepList: [term | deepList], tail: [term], list: [term]\n```\n\nNo documentation available\n\n"
     right: "Returns a flattened version of `DeepList`\\.\n"
     stacktrace:
       test/elixir_sense/docs_test.exs:209: (test)



 10) test do not crash for erlang behaviour callbacks (ElixirSense.DocsTest)
     test/elixir_sense/docs_test.exs:1144
     Assertion with =~ failed
     code:  assert docs =~
              "> ElixirSenseExample.ExampleBehaviourWithDocCallbackErlang.init(term)\n\n**Since**\nOTP 19.0\n"
     left:  "> ElixirSenseExample.ExampleBehaviourWithDocCallbackErlang.init(_)\n\n\n"
     right: "> ElixirSenseExample.ExampleBehaviourWithDocCallbackErlang.init(term)\n\n**Since**\nOTP 19.0\n"
     stacktrace:
       test/elixir_sense/docs_test.exs:1162: (test)

.....................................................................................warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead
  nofile:1:6

warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead
  nofile:1:6

.warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead
  nofile:1:6

warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead
  nofile:1:6

.........................

 11) test lists erlang callbacks (ElixirSense.SuggestionsTest)
     test/elixir_sense/suggestions_test.exs:472
     match (=) failed
     code:  assert "- OldVsn = Vsn" <> _ = summary
     left:  "- OldVsn = Vsn" <> _
     right: ""
     stacktrace:
       test/elixir_sense/suggestions_test.exs:498: (test)

.........../Users/ajayvigneshk/.asdf/installs/erlang/24.2/lib/stdlib-3.17/src/gen_server.erl: at line 121: can't find include file "logger.hrl"
docsh error: error
[{edoc,'-check_forms/3-fun-0-',3,[{file,"edoc.erl"},{line,771}]},
 {lists,foreach,2,[{file,"lists.erl"},{line,1342}]},
 {edoc,read_source,2,[{file,"edoc.erl"},{line,640}]},
 {edoc_extract,source,3,[{file,"edoc_extract.erl"},{line,60}]},
 {docsh_edoc,to_internal,2,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_edoc.erl"},
      {line,43}]},
 {docsh_lib,convert_one,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,42}]},
 {lists,flatmap,2,[{file,"lists.erl"},{line,1254}]},
 {docsh_lib,convert,3,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,37}]},
 {docsh_lib,make_docs,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,273}]},
 {docsh_lib,dispatch_docs_extraction_,1,
     [{file,
          "/Users/ajayvigneshk/personal/projects/elixir_sense/deps/docsh/src/docsh_lib.erl"},
      {line,253}]},
 {'Elixir.ElixirSense.Core.EdocReader',lookup,2,
     [{file,"lib/elixir_sense/core/edoc_reader.ex"},{line,39}]},
 {'Elixir.ElixirSense.Providers.Suggestion.Complete',get_edocs,1,
     [{file,"lib/elixir_sense/providers/suggestion/complete.ex"},{line,719}]},
 {'Elixir.ElixirSense.Providers.Suggestion.Complete',get_module_funs,2,
     [{file,"lib/elixir_sense/providers/suggestion/complete.ex"},{line,669}]},
 {'Elixir.ElixirSense.Providers.Suggestion.Complete',match_module_funs,5,
     [{file,"lib/elixir_sense/providers/suggestion/complete.ex"},{line,536}]},
 {'Elixir.ElixirSense.Providers.Suggestion.Complete',expand_require,4,
     [{file,"lib/elixir_sense/providers/suggestion/complete.ex"},{line,277}]},
 {'Elixir.ElixirSense.Providers.Suggestion.CompleteTest',
     'test complete build in behaviour functions',1,
     [{file,"test/elixir_sense/providers/suggestion/complete_test.exs"},
      {line,1347}]},
 {'Elixir.ExUnit.Runner',exec_test,1,
     [{file,"lib/ex_unit/runner.ex"},{line,500}]},
 {timer,tc,1,[{file,"timer.erl"},{line,166}]},
 {'Elixir.ExUnit.Runner','-spawn_test_monitor/4-fun-1-',4,
     [{file,"lib/ex_unit/runner.ex"},{line,451}]}]

..

 12) test erlang module completion (ElixirSense.Providers.Suggestion.CompleteTest)
     test/elixir_sense/providers/suggestion/complete_test.exs:31
     match (=) failed
     code:  assert "This module provides an API for the zlib library" <> _ = summary
     left:  "This module provides an API for the zlib library" <> _
     right: ""
     stacktrace:
       test/elixir_sense/providers/suggestion/complete_test.exs:43: (test)

.......

 13) test provide doc and specs for erlang functions (ElixirSense.Providers.Suggestion.CompleteTest)
     test/elixir_sense/providers/suggestion/complete_test.exs:1497
     match (=) failed
     code:  assert "Cancels a timer\\." <> _ = summary1
     left:  "Cancels a timer\\" <> _
     right: ""
     stacktrace:
       test/elixir_sense/providers/suggestion/complete_test.exs:1530: (test)

.......................

 14) test suggestions for typespecs erlang types (ElixirSense.SuggestionsTest)
     test/elixir_sense/suggestions_test.exs:3117
     match (=) failed
     code:  assert "Supported time unit representations:" <> _ = summary
     left:  "Supported time unit representations:" <> _
     right: ""
     stacktrace:
       test/elixir_sense/suggestions_test.exs:3136: (test)

................................

 15) test lists callbacks in function suggestion - erlang behaviour (ElixirSense.SuggestionsTest)
     test/elixir_sense/suggestions_test.exs:847
     match (=) failed
     code:  assert "- Args = term" <> _ = summary
     left:  "- Args = term" <> _
     right: ""
     stacktrace:
       test/elixir_sense/suggestions_test.exs:875: (test)

........................................

 16) test suggestion for param options remote erlang type with doc (ElixirSense.SuggestionsTest)
     test/elixir_sense/suggestions_test.exs:2812
     Assertion with =~ failed
     code:  assert suggestion.doc =~ "Supported time unit representations"
     left:  ""
     right: "Supported time unit representations"
     stacktrace:
       test/elixir_sense/suggestions_test.exs:2825: (test)

...................................................................................

Finished in 16.4 seconds (15.7s async, 0.7s sync)
28 doctests, 922 tests, 16 failures, 15 excluded

Randomized with seed 863139

Is there something I'm missing in setup / configuration? If this is expected is there a easy way to run tests locally?

ajayvigneshk avatar Apr 05 '22 02:04 ajayvigneshk