1.1 KiB · text 5af55d9
defmodule GitGud.LanguagesTest do
use ExUnit.Case, async: true
alias GitGud.Languages
test "detects by extension, case-insensitive" do
assert Languages.detect("foo.ex") == "Elixir"
assert Languages.detect("Foo.EX") == "Elixir"
assert Languages.detect("a/b/c.rs") == "Rust"
end
test "detects by well-known basename" do
assert Languages.detect("Dockerfile") == "Dockerfile"
assert Languages.detect("makefile") == "Makefile"
assert Languages.detect("mix.exs") == "Elixir"
end
test "nil for unknown filenames + nil input" do
assert Languages.detect("LICENSE") == nil
assert Languages.detect("README") == nil
assert Languages.detect("img.png") == nil
assert Languages.detect(nil) == nil
end
test "basename match wins over extension lookup" do
# mix.exs would also match the .exs extension, but the basename rule
# is consulted first — both happen to be "Elixir" here, which is
# the right answer either way. The point is the lookup terminates
# on basename without re-checking ext.
assert Languages.detect("path/to/mix.exs") == "Elixir"
end
end