Skip to content

Commit 009532a

Browse files
authored
Upgrade Elixir versions (#1252)
* Upgrade Ubuntu runner version * Update README * Update PostgreSQL install instructions * Upgrade PostgreSQL version in CI * Reformat codebase post Elixir version upgrade * Upgrade Elixir, Erlang versions in CI * Upgrade credo version to fix failing check * Fix exit status causing failing check * Fix changeset tests * Fix log tests * Fix dialyzer issues * Fix dependencies * Update CD workflow * Revert S3 dependency change * Fix more dialyzer issues * Revert "Fix more dialyzer issues" This reverts commit 374c3ad. * Fix dialyzer warning properly
1 parent 4fb1f4a commit 009532a

File tree

15 files changed

+56
-34
lines changed

15 files changed

+56
-34
lines changed

.credo.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
{Credo.Check.Readability.ModuleNames},
8484
{Credo.Check.Readability.ParenthesesOnZeroArityDefs},
8585
{Credo.Check.Readability.ParenthesesInCondition},
86-
{Credo.Check.Readability.PredicateFunctionNames},
86+
{Credo.Check.Readability.PredicateFunctionNames, exit_status: 0},
8787
{Credo.Check.Readability.PreferImplicitTry},
8888
{Credo.Check.Readability.RedundantBlankLines},
8989
{Credo.Check.Readability.StringSigils},

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ jobs:
2323
env:
2424
MIX_ENV: test
2525
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26-
ELIXIR_VERSION: 1.13.4
27-
OTP_VERSION: 25.3.2
26+
ELIXIR_VERSION: 1.18.3
27+
OTP_VERSION: 27.3.3
2828
services:
2929
postgres:
30-
image: postgres:14.2
30+
image: postgres:17.4
3131
env:
3232
POSTGRES_USER: postgres
3333
POSTGRES_PASSWORD: postgres

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ Cadet is the web application powering Source Academy.
1414

1515
### System requirements
1616

17-
1. Elixir 1.13.3+ (current version: 1.13.4)
18-
2. Erlang/OTP 23.2.1+ (current version: 25.3.2)
19-
3. PostgreSQL 12+ (tested to be working up to 14.5)
17+
1. Elixir 1.18+ (current version: 1.18.3)
18+
2. Erlang/OTP 27+ (current version: 27.3.3)
19+
3. PostgreSQL 12+ (tested to be working up to 17)
2020

2121
It is probably okay to use a different version of PostgreSQL or Erlang/OTP, but using a different version of Elixir may result in differences in e.g. `mix format`.
2222

lib/cadet/assessments/assessments.ex

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ defmodule Cadet.Assessments do
941941
raw_answer,
942942
force_submit
943943
) do
944-
with {:ok, team} <- find_team(question.assessment.id, cr_id),
944+
with {:ok, _team} <- find_team(question.assessment.id, cr_id),
945945
{:ok, submission} <- find_or_create_submission(cr, question.assessment),
946946
{:status, true} <- {:status, force_submit or submission.status != :submitted},
947947
{:ok, _answer} <- insert_or_update_answer(submission, question, raw_answer, cr_id) do
@@ -2689,7 +2689,7 @@ defmodule Cadet.Assessments do
26892689

26902690
def has_last_modified_answer?(
26912691
question = %Question{},
2692-
cr = %CourseRegistration{id: cr_id},
2692+
cr = %CourseRegistration{id: _cr_id},
26932693
last_modified_at,
26942694
force_submit
26952695
) do
@@ -2700,15 +2700,6 @@ defmodule Cadet.Assessments do
27002700
else
27012701
{:status, _} ->
27022702
{:error, {:forbidden, "Assessment submission already finalised"}}
2703-
2704-
{:error, :race_condition} ->
2705-
{:error, {:internal_server_error, "Please try again later."}}
2706-
2707-
{:error, :invalid_vote} ->
2708-
{:error, {:bad_request, "Invalid vote! Vote is not saved."}}
2709-
2710-
_ ->
2711-
{:error, {:bad_request, "Missing or invalid parameter(s)"}}
27122703
end
27132704
end
27142705

lib/cadet/devices/devices.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ defmodule Cadet.Devices do
7272
with {:ok, device} <- maybe_insert_device(type, secret),
7373
{:ok, registration} <-
7474
%DeviceRegistration{}
75-
|> DeviceRegistration.changeset(%{user_id: user_id, device_id: device.id, title: title})
75+
|> DeviceRegistration.changeset(%{
76+
user_id: user_id,
77+
device_id: device.id,
78+
title: title
79+
})
7680
|> Repo.insert() do
7781
{:ok, registration |> Repo.preload(:device)}
7882
end

lib/cadet_web/admin_controllers/admin_assets_controller.ex

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,15 @@ defmodule CadetWeb.AdminAssetsController do
2222

2323
case Assets.delete_object(Courses.assets_prefix(course_reg.course), foldername, filename) do
2424
{:error, {status, message}} -> conn |> put_status(status) |> text(message)
25-
_ -> conn |> put_status(204) |> text('')
25+
_ -> conn |> put_status(204) |> text("")
2626
end
2727
end
2828

29+
# Ignore the dialyzer warning, just ctrl click the
30+
# `Assets.upload_to_s3` function to see the type,
31+
# it clearly returns a string URL
32+
@dialyzer {:no_match, upload: 2}
33+
2934
def upload(conn, %{
3035
"upload" => upload_params,
3136
"filename" => filename,
@@ -96,7 +101,9 @@ defmodule CadetWeb.AdminAssetsController do
96101
parameters do
97102
folderName(:path, :string, "Folder name", required: true)
98103

99-
fileName(:path, :string, "File path in folder, which may contain subfolders", required: true)
104+
fileName(:path, :string, "File path in folder, which may contain subfolders",
105+
required: true
106+
)
100107
end
101108

102109
security([%{JWT: []}])
@@ -115,7 +122,9 @@ defmodule CadetWeb.AdminAssetsController do
115122
parameters do
116123
folderName(:path, :string, "Folder name", required: true)
117124

118-
fileName(:path, :string, "File path in folder, which may contain subfolders", required: true)
125+
fileName(:path, :string, "File path in folder, which may contain subfolders",
126+
required: true
127+
)
119128
end
120129

121130
security([%{JWT: []}])

lib/cadet_web/admin_controllers/admin_courses_controller.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,11 @@ defmodule CadetWeb.AdminCoursesController do
143143
title("AdminSublanguage")
144144

145145
properties do
146-
chapter(:integer, "Chapter number from 1 to 4", required: true, minimum: 1, maximum: 4)
146+
chapter(:integer, "Chapter number from 1 to 4",
147+
required: true,
148+
minimum: 1,
149+
maximum: 4
150+
)
147151

148152
variant(Schema.ref(:SourceVariant), "Variant name", required: true)
149153
end

lib/cadet_web/admin_controllers/admin_grading_controller.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,9 @@ defmodule CadetWeb.AdminGradingController do
378378
required: true
379379
)
380380

381-
student(Schema.ref(:StudentInfo), "Student who created the submission", required: true)
381+
student(Schema.ref(:StudentInfo), "Student who created the submission",
382+
required: true
383+
)
382384

383385
unsubmittedBy(Schema.ref(:GraderInfo))
384386
unsubmittedAt(:string, "Last unsubmitted at", format: "date-time", required: false)

lib/cadet_web/admin_views/admin_assessments_view.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ defmodule CadetWeb.AdminAssessmentsView do
6464
end
6565

6666
def render("leaderboard.json", %{leaderboard: leaderboard}) do
67-
render_many(leaderboard, CadetWeb.AdminAssessmentsView, "contestEntry.json", as: :contestEntry)
67+
render_many(leaderboard, CadetWeb.AdminAssessmentsView, "contestEntry.json",
68+
as: :contestEntry
69+
)
6870
end
6971

7072
def render("contestEntry.json", %{contestEntry: contestEntry}) do

lib/cadet_web/views/assessments_view.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ defmodule CadetWeb.AssessmentsView do
6868
end
6969

7070
def render("leaderboard.json", %{leaderboard: leaderboard}) do
71-
render_many(leaderboard, CadetWeb.AdminAssessmentsView, "contestEntry.json", as: :contestEntry)
71+
render_many(leaderboard, CadetWeb.AdminAssessmentsView, "contestEntry.json",
72+
as: :contestEntry
73+
)
7274
end
7375

7476
def render("contestEntry.json", %{contestEntry: contestEntry}) do

0 commit comments

Comments
 (0)