Skip to content

Commit 196228b

Browse files
authored
Format code and ensure formatting in CI (#234)
* Format code and ensure formatting in CI closes #233 * Format tests too * Only lint on latest version
1 parent 7adb191 commit 196228b

Some content is hidden

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

54 files changed

+725
-485
lines changed

.formatter.exs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[
2+
inputs: [
3+
"mix.exs",
4+
".formatter.exs",
5+
"config/*.exs",
6+
"lib/**/*.ex",
7+
"test/**/*_test.exs"
8+
],
9+
line_length: 120
10+
]

.github/workflows/tests.yml

+17-9
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ jobs:
1111
fail-fast: true
1212
matrix:
1313
include:
14-
- otp: '25'
15-
elixir: '1.14'
14+
- otp: "25"
15+
elixir: "1.14"
1616
global-mock: true
1717
experimental: false
18-
- otp: '25'
19-
elixir: '1.14'
18+
- otp: "25"
19+
elixir: "1.14"
2020
global-mock: false
2121
experimental: false
2222
- otp: "27"
@@ -35,6 +35,7 @@ jobs:
3535
elixir: "1.18.0"
3636
global-mock: false
3737
experimental: true
38+
lint: true
3839
env:
3940
MIX_ENV: test
4041
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -43,8 +44,8 @@ jobs:
4344
- uses: actions/checkout@v4
4445
- uses: erlef/setup-beam@v1
4546
with:
46-
otp-version: ${{ matrix.otp }}
47-
elixir-version: ${{ matrix.elixir }}
47+
otp-version: ${{ matrix.otp }}
48+
elixir-version: ${{ matrix.elixir }}
4849
- uses: actions/cache@v4
4950
with:
5051
path: |
@@ -53,12 +54,19 @@ jobs:
5354
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-${{ hashFiles('**/mix.lock') }}
5455
restore-keys: |
5556
${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-
56-
- run: mix deps.get
57-
- run: mix test
57+
- name: Install dependencies
58+
run: mix deps.get
59+
- name: Compile project
60+
run: mix compile
61+
- name: Check formatting
62+
run: mix format --check-formatted
63+
if: ${{ matrix.lint }}
64+
- name: Run tests
65+
run: mix test
5866
- uses: nick-invision/retry@v3
5967
with:
6068
timeout_minutes: 3
6169
max_attempts: 3
6270
shell: bash
6371
command: mix coveralls.github
64-
continue-on-error: true
72+
continue-on-error: true

config/config.exs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Config
22

3-
config :exvcr, [
3+
config :exvcr,
44
global_mock: false,
55
vcr_cassette_library_dir: "fixture/vcr_cassettes",
66
custom_cassette_library_dir: "fixture/custom_cassettes",
@@ -13,6 +13,5 @@ config :exvcr, [
1313
ignore_localhost: false,
1414
enable_global_settings: false,
1515
strict_mode: false
16-
]
1716

18-
if Mix.env() == :test, do: import_config "test.exs"
17+
if Mix.env() == :test, do: import_config("test.exs")

config/test.exs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Config
22

3-
config :exvcr, [
3+
config :exvcr,
44
global_mock: System.get_env("GLOBAL_MOCK") == "true"
5-
]

lib/exvcr.ex

-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,3 @@ defmodule ExVCR do
44
It's inspired by Ruby's VCR, and trying to provide similar functionalities.
55
"""
66
end
7-

lib/exvcr/actor.ex

+10-8
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ defmodule ExVCR.Actor do
4343

4444
@impl true
4545
def handle_cast({:append, x}, state) do
46-
{:noreply, [x|state]}
46+
{:noreply, [x | state]}
4747
end
4848

4949
@impl true
@@ -58,13 +58,15 @@ defmodule ExVCR.Actor do
5858

5959
@impl true
6060
def handle_call({:update, finder, updater}, _from, state) do
61-
new_state = Enum.map(state, fn(record) ->
62-
if finder.(record) do
63-
updater.(record)
64-
else
65-
record
66-
end
67-
end)
61+
new_state =
62+
Enum.map(state, fn record ->
63+
if finder.(record) do
64+
updater.(record)
65+
else
66+
record
67+
end
68+
end)
69+
6870
{:reply, new_state, new_state}
6971
end
7072

lib/exvcr/adapter.ex

+12-11
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,40 @@ defmodule ExVCR.Adapter do
88
@doc """
99
Returns the name of the mock target module.
1010
"""
11-
def module_name, do: raise ExVCR.ImplementationMissingError
12-
defoverridable [module_name: 0]
11+
def module_name, do: raise(ExVCR.ImplementationMissingError)
12+
defoverridable module_name: 0
1313

1414
@doc """
1515
Returns list of the mock target methods with function name and callback.
1616
Implementation for global mock.
1717
"""
18-
def target_methods(), do: raise ExVCR.ImplementationMissingError
19-
defoverridable [target_methods: 0]
18+
def target_methods(), do: raise(ExVCR.ImplementationMissingError)
19+
defoverridable target_methods: 0
2020

2121
@doc """
2222
Returns list of the mock target methods with function name and callback.
2323
"""
24-
def target_methods(recorder), do: raise ExVCR.ImplementationMissingError
25-
defoverridable [target_methods: 1]
24+
def target_methods(recorder), do: raise(ExVCR.ImplementationMissingError)
25+
defoverridable target_methods: 1
2626

2727
@doc """
2828
Generate key for searching response.
2929
[url: url, method: method] needs to be returned.
3030
"""
31-
def generate_keys_for_request(request), do: raise ExVCR.ImplementationMissingError
32-
defoverridable [generate_keys_for_request: 1]
31+
def generate_keys_for_request(request), do: raise(ExVCR.ImplementationMissingError)
32+
defoverridable generate_keys_for_request: 1
3333

3434
@doc """
3535
Callback from ExVCR.Handler when response is retrieved from the HTTP server.
3636
"""
3737
def hook_response_from_server(response), do: response
38-
defoverridable [hook_response_from_server: 1]
38+
defoverridable hook_response_from_server: 1
3939

4040
@doc """
4141
Callback from ExVCR.Handler when response is retrieved from the json file cache.
4242
"""
4343
def hook_response_from_cache(_request, response), do: response
44-
defoverridable [hook_response_from_cache: 2]
44+
defoverridable hook_response_from_cache: 2
4545

4646
@doc """
4747
Callback from ExVCR.Handler to get the response content tuple from the ExVCR.Response record.
@@ -53,7 +53,8 @@ defmodule ExVCR.Adapter do
5353
{:ok, response.status_code, response.headers, response.body}
5454
end
5555
end
56-
defoverridable [get_response_value_from_cache: 1]
56+
57+
defoverridable get_response_value_from_cache: 1
5758
end
5859
end
5960
end

lib/exvcr/adapter/finch.ex

+13-13
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ if Code.ensure_loaded?(Finch) do
2929
"""
3030
def target_methods() do
3131
[
32-
{:request, &ExVCR.Recorder.request([&1,&2])},
33-
{:request, &ExVCR.Recorder.request([&1,&2,&3])},
34-
{:request!, &(ExVCR.Recorder.request([&1,&2]) |> handle_response_for_request!())},
35-
{:request!, &(ExVCR.Recorder.request([&1,&2,&3]) |> handle_response_for_request!())}
32+
{:request, &ExVCR.Recorder.request([&1, &2])},
33+
{:request, &ExVCR.Recorder.request([&1, &2, &3])},
34+
{:request!, &(ExVCR.Recorder.request([&1, &2]) |> handle_response_for_request!())},
35+
{:request!, &(ExVCR.Recorder.request([&1, &2, &3]) |> handle_response_for_request!())}
3636
]
3737
end
3838

@@ -41,10 +41,10 @@ if Code.ensure_loaded?(Finch) do
4141
"""
4242
def target_methods(recorder) do
4343
[
44-
{:request, &ExVCR.Recorder.request(recorder, [&1,&2])},
45-
{:request, &ExVCR.Recorder.request(recorder, [&1,&2,&3])},
46-
{:request!, &(ExVCR.Recorder.request(recorder, [&1,&2]) |> handle_response_for_request!())},
47-
{:request!, &(ExVCR.Recorder.request(recorder, [&1,&2,&3]) |> handle_response_for_request!())}
44+
{:request, &ExVCR.Recorder.request(recorder, [&1, &2])},
45+
{:request, &ExVCR.Recorder.request(recorder, [&1, &2, &3])},
46+
{:request!, &(ExVCR.Recorder.request(recorder, [&1, &2]) |> handle_response_for_request!())},
47+
{:request!, &(ExVCR.Recorder.request(recorder, [&1, &2, &3]) |> handle_response_for_request!())}
4848
]
4949
end
5050

@@ -88,8 +88,9 @@ if Code.ensure_loaded?(Finch) do
8888
end
8989

9090
defp apply_filters(%Finch.Response{} = response) do
91-
replaced_body = to_string(response.body) |> ExVCR.Filter.filter_sensitive_data
91+
replaced_body = to_string(response.body) |> ExVCR.Filter.filter_sensitive_data()
9292
filtered_headers = ExVCR.Filter.remove_blacklisted_headers(response.headers)
93+
9394
response
9495
|> Map.put(:body, replaced_body)
9596
|> Map.put(:headers, filtered_headers)
@@ -98,7 +99,7 @@ if Code.ensure_loaded?(Finch) do
9899
defp apply_filters({:error, reason}), do: {:error, reason}
99100

100101
defp handle_response_for_request!({:ok, resp}), do: resp
101-
defp handle_response_for_request!({:error, error}), do: raise error
102+
defp handle_response_for_request!({:error, error}), do: raise(error)
102103
defp handle_response_for_request!(resp), do: resp
103104

104105
@doc """
@@ -107,10 +108,9 @@ if Code.ensure_loaded?(Finch) do
107108
def default_stub_params(:headers), do: %{"content-type" => "text/html"}
108109
def default_stub_params(:status_code), do: 200
109110
end
110-
111111
else
112112
defmodule ExVCR.Adapter.Finch do
113-
def module_name, do: raise "Missing dependency: Finch"
114-
def target_methods, do: raise "Missing dependency: Finch"
113+
def module_name, do: raise("Missing dependency: Finch")
114+
def target_methods, do: raise("Missing dependency: Finch")
115115
end
116116
end

lib/exvcr/adapter/hackney.ex

+17-11
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ defmodule ExVCR.Adapter.Hackney do
5959
Generate key for searching response.
6060
"""
6161
def generate_keys_for_request(request) do
62-
url = Enum.fetch!(request, 1)
63-
method = Enum.fetch!(request, 0)
64-
request_body = Enum.fetch(request, 3) |> parse_request_body
65-
headers = Enum.at(request, 2, []) |> Util.stringify_keys()
62+
url = Enum.fetch!(request, 1)
63+
method = Enum.fetch!(request, 0)
64+
request_body = Enum.fetch(request, 3) |> parse_request_body()
65+
headers = Enum.at(request, 2, []) |> Util.stringify_keys()
6666

6767
[url: url, method: method, request_body: request_body, headers: headers]
6868
end
@@ -94,12 +94,13 @@ defmodule ExVCR.Adapter.Hackney do
9494
def hook_response_from_cache(_request, nil), do: nil
9595
def hook_response_from_cache(_request, %ExVCR.Response{type: "error"} = response), do: response
9696
def hook_response_from_cache(_request, %ExVCR.Response{body: nil} = response), do: response
97+
9798
def hook_response_from_cache([_, _, _, _, opts], %ExVCR.Response{body: body} = response) do
9899
if :with_body in opts || {:with_body, true} in opts do
99100
response
100101
else
101-
client = make_ref()
102-
client_key_atom = client |> inspect |> String.to_atom
102+
client = make_ref()
103+
client_key_atom = client |> inspect() |> String.to_atom()
103104
Store.set(client_key_atom, body)
104105
%{response | body: client}
105106
end
@@ -119,7 +120,8 @@ defmodule ExVCR.Adapter.Hackney do
119120
end
120121

121122
defp handle_body_request(recorder, [client, max_length]) do
122-
client_key_atom = client |> inspect |> String.to_atom
123+
client_key_atom = client |> inspect() |> String.to_atom()
124+
123125
if body = Store.get(client_key_atom) do
124126
Store.delete(client_key_atom)
125127
{:ok, body}
@@ -129,15 +131,19 @@ defmodule ExVCR.Adapter.Hackney do
129131
body = ExVCR.Filter.filter_sensitive_data(body)
130132

131133
client_key_string = inspect(client)
132-
ExVCR.Recorder.update(recorder,
133-
fn(%{request: _request, response: response}) ->
134+
135+
ExVCR.Recorder.update(
136+
recorder,
137+
fn %{request: _request, response: response} ->
134138
response.body == client_key_string
135139
end,
136-
fn(%{request: request, response: response}) ->
140+
fn %{request: request, response: response} ->
137141
%{request: request, response: %{response | body: body}}
138142
end
139143
)
144+
140145
{:ok, body}
146+
141147
{ret, body} ->
142148
{ret, body}
143149
end
@@ -153,7 +159,7 @@ defmodule ExVCR.Adapter.Hackney do
153159
else
154160
case response.body do
155161
nil -> {:ok, response.status_code, response.headers}
156-
_ -> {:ok, response.status_code, response.headers, response.body}
162+
_ -> {:ok, response.status_code, response.headers, response.body}
157163
end
158164
end
159165
end

lib/exvcr/adapter/hackney/converter.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ defmodule ExVCR.Adapter.Hackney.Converter do
103103
def parse_request_body({:form, body}) do
104104
hackney_request_module().encode_form(body)
105105
|> elem(2)
106-
|> to_string
106+
|> to_string()
107107
|> ExVCR.Filter.filter_sensitive_data()
108108
end
109109

lib/exvcr/adapter/hackney/store.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ defmodule ExVCR.Adapter.Hackney.Store do
1010
if :ets.info(table()) == :undefined do
1111
:ets.new(table(), [:set, :public, :named_table])
1212
end
13+
1314
:ok
1415
end
1516

@@ -39,6 +40,6 @@ defmodule ExVCR.Adapter.Hackney.Store do
3940
end
4041

4142
defp table do
42-
"exvcr_hackney#{inspect self()}" |> String.to_atom
43+
"exvcr_hackney#{inspect(self())}" |> String.to_atom()
4344
end
4445
end

lib/exvcr/adapter/httpc.ex

+8-6
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ defmodule ExVCR.Adapter.Httpc do
2929
{:request, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4,&5])}
3030
"""
3131
def target_methods() do
32-
[ {:request, &ExVCR.Recorder.request([&1])},
33-
{:request, &ExVCR.Recorder.request([&1,&2,&3,&4])} ]
32+
[{:request, &ExVCR.Recorder.request([&1])}, {:request, &ExVCR.Recorder.request([&1, &2, &3, &4])}]
3433
end
3534

3635
@doc """
@@ -40,20 +39,23 @@ defmodule ExVCR.Adapter.Httpc do
4039
{:request, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4,&5])}
4140
"""
4241
def target_methods(recorder) do
43-
[ {:request, &ExVCR.Recorder.request(recorder, [&1])},
44-
{:request, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4])} ]
42+
[
43+
{:request, &ExVCR.Recorder.request(recorder, [&1])},
44+
{:request, &ExVCR.Recorder.request(recorder, [&1, &2, &3, &4])}
45+
]
4546
end
4647

47-
4848
@doc """
4949
Generate key for searching response.
5050
"""
5151
def generate_keys_for_request(request) do
5252
case request do
5353
[method, {url, headers} | _] ->
5454
[url: url, method: method, request_body: nil, headers: Util.stringify_keys(headers)]
55+
5556
[method, {url, headers, _, body} | _] ->
5657
[url: url, method: method, request_body: body, headers: Util.stringify_keys(headers)]
58+
5759
[url | _] ->
5860
[url: url, method: :get, request_body: nil, headers: []]
5961
end
@@ -67,7 +69,7 @@ defmodule ExVCR.Adapter.Httpc do
6769
end
6870

6971
defp apply_filters({:ok, {status_code, headers, body}}) do
70-
replaced_body = to_string(body) |> ExVCR.Filter.filter_sensitive_data
72+
replaced_body = to_string(body) |> ExVCR.Filter.filter_sensitive_data()
7173
filtered_headers = ExVCR.Filter.remove_blacklisted_headers(headers)
7274
{:ok, {status_code, filtered_headers, replaced_body}}
7375
end

0 commit comments

Comments
 (0)