Skip to content

Commit 3b78a39

Browse files
committed
port indent tests to run completely in vim
1 parent 39cfaec commit 3b78a39

File tree

231 files changed

+1870
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

231 files changed

+1870
-0
lines changed

test.vim

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
" TODO: @jbodah 2024-09-17: setup path to lookup local git plugin
2+
3+
let s:results = []
4+
5+
func s:assert_equal(testcase, expected, actual)
6+
if (a:actual == a:expected) == 1
7+
" let s:results = s:results + [printf("PASS %s", a:testcase['name'])]
8+
else
9+
let s:results = s:results + [printf("FAIL %s\nwant\n%s\ngot\n\%s\n", a:testcase['name'], a:expected, a:actual)]
10+
end
11+
endfunction
12+
13+
func s:paste(text)
14+
let @p = a:text
15+
normal V"pP
16+
call setreg("p", [])
17+
endfunction
18+
19+
func s:copy_buffer()
20+
normal ggVG"yy
21+
let l:copied = @y
22+
call setreg("y", [])
23+
return l:copied
24+
endfunction
25+
26+
func s:clear_buffer()
27+
normal ggVGD
28+
endfunction
29+
30+
func s:indent_buffer()
31+
normal ggVG=
32+
endfunction
33+
34+
func s:load_file(name)
35+
return join(readfile(a:name), "\n")
36+
endfunction
37+
38+
let s:testcases = map(readdir("vimtest/indent"), {_, val -> {'name': "vimtest/indent/" . val, 'expected': s:load_file("vimtest/indent/" . val)}})
39+
" let s:testcases = [
40+
" \ {'name': "vimtest/indent/indent110.ex", 'expected': s:load_file("vimtest/indent/indent110.ex")}
41+
" \ ]
42+
43+
function s:test_indent(testcase)
44+
set ft=elixir
45+
call s:paste(a:testcase['expected'])
46+
let s:expected = s:copy_buffer()
47+
48+
call s:indent_buffer()
49+
let s:actual = s:copy_buffer()
50+
51+
call s:assert_equal(a:testcase, s:expected, s:actual)
52+
endfunction
53+
54+
function s:paste_results()
55+
set ft=none
56+
call s:paste(join(s:results, ""))
57+
endfunction
58+
59+
for tc in s:testcases
60+
call s:test_indent(tc)
61+
call s:clear_buffer()
62+
endfor
63+
call s:paste_results()

vimtest/indent/indent0.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def do
2+
some_func = fn x -> x end
3+
end

vimtest/indent/indent1.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def do
2+
some_func = function do x -> x end
3+
end

vimtest/indent/indent10.ex

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
defmodule Hello do

vimtest/indent/indent100.ex

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
defmodule Test do
2+
def lol do
3+
IO.inspect :end
4+
end
5+
end

vimtest/indent/indent101.ex

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule Hello do
2+
def name, do: IO.puts "bobmarley"
3+
# expect next line starting here
4+
5+
def name(param) do
6+
param
7+
end
8+
end

vimtest/indent/indent102.ex

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule Hello do
2+
def name, do: IO.puts "bobmarley"
3+
4+
def name(param) do
5+
param
6+
end
7+
end

vimtest/indent/indent103.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def f do
2+
if true, do: 42
3+
end

vimtest/indent/indent104.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def f do
2+
x = :do
3+
end

vimtest/indent/indent105.ex

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
defmodule Test do
2+
def test do
3+
one =
4+
user
5+
|> build_assoc(:videos)
6+
|> Video.changeset()
7+
8+
other =
9+
user2
10+
|> build_assoc(:videos)
11+
|> Video.changeset()
12+
end
13+
end

vimtest/indent/indent106.ex

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defmodule MyMod do
2+
def how_are_you do
3+
IO.puts "I'm filling bad :("
4+
IO.puts "really bad"
5+
end
6+
end

vimtest/indent/indent107.ex

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
defmodule MyMod do
2+
def how_are_you do
3+
"function return"
4+
end
5+
end

vimtest/indent/indent108.ex

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
scope "/", API do
2+
pipe_through :api # Use the default browser stack
3+
4+
get "/url", Controller, :index
5+
post "/url", Controller, :create
6+
end

vimtest/indent/indent109.ex

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
def hello do
2+
{:ok, _} = TaskRunner.TaskStore.start_link(name: @task_store)
3+
{:ok, _} = Workspace.start_link
4+
{:ok, pending_task_sup} = TaskRunner.PendingTaskSupervisor.start_link
5+
end

vimtest/indent/indent11.ex

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
defmodule Hello do
2+
def some_func do

vimtest/indent/indent110.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
def handle_info(:tick, state = %{policy_iteration: []}) do
2+
state = put_in(state[:policy_iteration], state.policy)
3+
{:noreply, state}
4+
end

vimtest/indent/indent111.ex

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
case some_function do
2+
:ok ->
3+
:ok
4+
{ :error, :message } ->
5+
{ :error, :message }
6+
end

vimtest/indent/indent112.ex

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
case Connection.open(rabbitmq) do
2+
{:ok, conn} ->
3+
Woody.info "CONNECTION_SUCCESSFUL"
4+
{:ok, chan} = Channel.open(conn)
5+
{:error, error} ->
6+
Woody.info "CONNECTION_FAILED"
7+
:timer.sleep(10000)
8+
end

vimtest/indent/indent113.ex

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
defmodule M do
2+
defp _fetch(result, key, deep_key) do
3+
case _fetch(result, key) do
4+
{:ok, val} ->
5+
case _fetch(val, deep_key) do
6+
:error -> {:error, :deep}
7+
res -> res
8+
end
9+
10+
:error -> {:error, :shallow}
11+
end
12+
end

vimtest/indent/indent114.ex

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
case Connection.open(rabbitmq) do
2+
{:ok, conn} ->
3+
Woody.info "CONNECTION_SUCCESSFUL"
4+
{:ok, chan} = Channel.open(conn)
5+
{:error, error} ->
6+
Woody.info "CONNECTION_FAILED"
7+
:timer.sleep(10000)
8+
end

vimtest/indent/indent115.ex

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
decoded_msg = case JSON.decode(msg) do
2+
{:error, _} ->
3+
a = "a"
4+
b = "dasdas"
5+
">#{a}<>#{b}<"
6+
{:ok, decoded} -> decoded
7+
end

vimtest/indent/indent116.ex

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
case Repo.insert(changeset) do
2+
{:ok, user} ->
3+
conn
4+
|> put_flash(:info, "%{user.name} created!")
5+
|> redirect(to: user_path(conn, :index))
6+
{:error, changeset} ->
7+
render(conn, "new.html", changeset: changeset)
8+
end

vimtest/indent/indent117.ex

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
case st do
2+
sym ->
3+
code = if true do
4+
:ok
5+
else
6+
:error
7+
end
8+
Logger.info(code)
9+
st
10+
end

vimtest/indent/indent118.ex

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
case world do
2+
"apple" ->
3+
IO.puts "its an apple"
4+
5+
IO.puts "no really, its an apple"
6+
"orange" ->
7+
IO.puts "its not an apple"
8+
IO.puts "believe it or not"
9+
end

vimtest/indent/indent119.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
case o do
2+
a ->
3+
e(fn -> f end)
4+
end

vimtest/indent/indent12.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
defmodule Hello do
2+
def some_func do
3+
end

vimtest/indent/indent120.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
case pattern do
2+
:* -> :ok
3+
_ -> :error
4+
end

vimtest/indent/indent121.ex

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# do
2+
IO.puts :test

vimtest/indent/indent122.ex

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule Foo do
2+
def run do
3+
list =
4+
File.read!("/path/to/file")
5+
|> String.split()
6+
# now start a new line
7+
# used to start here
8+
# but now starts here
9+
end
10+
end

vimtest/indent/indent123.ex

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule Foo do
2+
def run(task) when task in [:t1, :t2] do
3+
end
4+
5+
# now starts a new line
6+
# use to start here
7+
# but now starts here
8+
end

vimtest/indent/indent124.ex

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
receive do
2+
{{:lock_ready, ^key}, ^pid} ->
3+
after
4+
# NOTE: @jbodah 2017-03-28: we should do some math to adjust the timeout
5+
timeout ->
6+
{:error, :timed_out_waiting_for_lock}
7+
end

vimtest/indent/indent125.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cond do
2+
foo -> 1
3+
bar -> 2
4+
end

vimtest/indent/indent126.ex

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def handle_call({:release_lock, key}, _from, state) do
2+
case get_lock(state, key) do
3+
nil ->
4+
{:reply, {:error, :already_unlocked}, state}
5+
6+
_ ->
7+
new_state = delete_lock(state, key)
8+
{:reply, :ok, new_state}
9+
end
10+
end
11+
12+
def

vimtest/indent/indent127.ex

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
defmodule Hello do
2+
def hello do
3+
end
4+
5+
6+
7+
8+
9+
10+
11+
12+
13+
14+
15+
16+
17+
18+
19+
20+
21+
22+
23+
24+
25+
26+
27+
28+
29+
30+
31+
32+
33+
34+
35+
36+
37+
38+
39+
40+
41+
42+
43+
44+
45+
def world do
46+
end
47+
end

vimtest/indent/indent128.ex

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
defmodule Test do
2+
@doc """
3+
end
4+
"""
5+
end

vimtest/indent/indent129.ex

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defmodule Test do
2+
@doc """
3+
it should
4+
have reasonable
5+
default start indent when typed
6+
"""

vimtest/indent/indent13.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
defmodule Hello do
2+
def some_func do
3+
end
4+
end

vimtest/indent/indent130.ex

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule New do
2+
def do_query do
3+
from user in Users,
4+
select: user.name,
5+
join: signup in Signups, where: user.id == signup.user_id
6+
end
7+
end

vimtest/indent/indent131.ex

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
def smth do
2+
from = 1
3+
to = 7
4+
end

vimtest/indent/indent132.ex

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fromin,

vimtest/indent/indent133.ex

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
query = from u in query, select: u.city

vimtest/indent/indent134.ex

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
def do_query do
2+
where = [category: "fresh and new"]
3+
order_by = [desc: :published_at]
4+
select = [:id, :title, :body]
5+
from Post, where: ^where, order_by: ^order_by, select: ^select
6+
end

vimtest/indent/indent135.ex

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def alphabetical(query) do
2+
from c in query, order_by: c.name
3+
end

0 commit comments

Comments
 (0)