Skip to content

Commit d334c1d

Browse files
author
José Valim
committed
Add tests for LexicalTracker
1 parent d856e66 commit d334c1d

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

lib/elixir/lib/kernel/lexical_tracker.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# This is a module Elixir responsible for tracking
2+
# the usage of aliases, imports and requires in the Elixir scope.
3+
#
4+
# The implementation simply stores dispatch information in an
5+
# ETS table and then consults this table once compilation is done.
6+
#
7+
# Note that since this is required for bootstrap, we can't use
8+
# any of the `GenServer.Behaviour` conveniences.
19
defmodule Kernel.LexicalTracker do
210
@timeout 30_000
311
@behavior :gen_server
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
Code.require_file "../test_helper.exs", __DIR__
2+
3+
defmodule Kernel.LexicalTrackerTest do
4+
use ExUnit.Case, async: true
5+
6+
alias Kernel.LexicalTracker, as: D
7+
8+
setup do
9+
{ :ok, [pid: D.start_link] }
10+
end
11+
12+
teardown config do
13+
D.stop(config[:pid])
14+
:ok
15+
end
16+
17+
test "can add remote dispatches", config do
18+
D.remote_dispatch(config[:pid], String)
19+
assert D.remotes(config[:pid]) == [String]
20+
end
21+
22+
test "can add imports", config do
23+
D.add_import(config[:pid], String, 1, true)
24+
assert D.remotes(config[:pid]) == [String]
25+
end
26+
27+
test "can add aliases", config do
28+
D.add_alias(config[:pid], String, 1, true)
29+
assert D.remotes(config[:pid]) == [String]
30+
end
31+
32+
test "unused imports", config do
33+
D.add_import(config[:pid], String, 1, true)
34+
assert D.collect_unused_imports(config[:pid]) == [{String,1}]
35+
end
36+
37+
test "used imports are not unused", config do
38+
D.add_import(config[:pid], String, 1, true)
39+
D.import_dispatch(config[:pid], String)
40+
assert D.collect_unused_imports(config[:pid]) == []
41+
end
42+
43+
test "imports with no warn are not unused", config do
44+
D.add_import(config[:pid], String, 1, false)
45+
assert D.collect_unused_imports(config[:pid]) == []
46+
end
47+
48+
test "unused aliases", config do
49+
D.add_alias(config[:pid], String, 1, true)
50+
assert D.collect_unused_aliases(config[:pid]) == [{String,1}]
51+
end
52+
53+
test "used aliases are not unused", config do
54+
D.add_alias(config[:pid], String, 1, true)
55+
D.alias_dispatch(config[:pid], String)
56+
assert D.collect_unused_aliases(config[:pid]) == []
57+
end
58+
59+
test "aliases with no warn are not unused", config do
60+
D.add_alias(config[:pid], String, 1, false)
61+
assert D.collect_unused_aliases(config[:pid]) == []
62+
end
63+
end

lib/elixir/test/elixir/kernel/warning_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ defmodule Kernel.WarningTest do
144144
end
145145
"""
146146
end) =~ "unused import :lists"
147+
148+
assert capture_err(fn ->
149+
Code.compile_string """
150+
import :lists, only: [flatten: 1]
151+
"""
152+
end) =~ "unused import :lists"
147153
after
148154
purge [Sample]
149155
end

0 commit comments

Comments
 (0)