Skip to content

Commit 55deb64

Browse files
chore: align ci with local dev (#374)
1 parent dfd40e7 commit 55deb64

File tree

10 files changed

+91
-57
lines changed

10 files changed

+91
-57
lines changed

.github/workflows/pull_request.yml

+30-15
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ jobs:
3333
steps:
3434
- name: Checkout PR branch
3535
uses: actions/checkout@v4
36+
3637
- name: Free Disk Space
3738
uses: ./.github/actions/free-disk-space
39+
3840
- name: Install toolchain
3941
uses: moonrepo/setup-rust@v1
4042
with:
@@ -43,15 +45,23 @@ jobs:
4345
cache-base: main
4446
env:
4547
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46-
- name: Setup Biome
47-
uses: biomejs/setup-biome@v2
48-
with:
49-
version: latest
48+
49+
- name: Setup Bun
50+
uses: oven-sh/setup-bun@v2
51+
52+
- name: Install JS dependencies
53+
run: bun install
54+
55+
- name: Setup Just
56+
uses: extractions/setup-just@v3
57+
58+
- name: Echo Tool Versions
59+
run: |
60+
just format-ci-versions
61+
5062
- name: Run format
5163
run: |
52-
cargo fmt --all --check
53-
taplo format --check
54-
biome format
64+
just format-ci
5565
5666
actionlint:
5767
name: Lint GitHub Actions
@@ -96,17 +106,22 @@ jobs:
96106
- name: Setup sqlx-cli
97107
run: cargo install sqlx-cli
98108

99-
- name: Setup Biome
100-
uses: biomejs/setup-biome@v2
101-
with:
102-
version: latest
109+
- name: Setup Bun
110+
uses: oven-sh/setup-bun@v2
111+
112+
- name: Install JS dependencies
113+
run: bun install
114+
115+
- name: Setup Just
116+
uses: extractions/setup-just@v3
117+
118+
- name: Echo Tool Versions
119+
run: |
120+
just lint-ci-versions
103121
104122
- name: Run Lints
105123
run: |
106-
cargo sqlx prepare --check --workspace
107-
cargo clippy --fix
108-
cargo run -p rules_check
109-
biome lint --write
124+
just lint-ci
110125
111126
- name: Check for changes
112127
run: |

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ homepage = "https://supabase.com/"
1010
keywords = ["linter", "typechecker", "postgres", "language-server"]
1111
license = "MIT"
1212
repository = "https://github.com/supabase-community/postgres-language-server"
13-
rust-version = "1.85.0"
13+
rust-version = "1.86.0"
1414

1515
[workspace.dependencies]
1616
# supporting crates unrelated to postgres

crates/pgt_completions/src/providers/helper.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ pub(crate) fn get_completion_text_with_schema(
77
item_name: &str,
88
item_schema_name: &str,
99
) -> Option<CompletionText> {
10-
if item_schema_name == "public" {
11-
None
12-
} else if ctx.schema_name.is_some() {
10+
if item_schema_name == "public" || ctx.schema_name.is_some() {
1311
None
1412
} else {
1513
let node = ctx.node_under_cursor.unwrap();

crates/pgt_completions/src/sanitization.rs

+18-18
Original file line numberDiff line numberDiff line change
@@ -219,19 +219,19 @@ mod tests {
219219
.set_language(tree_sitter_sql::language())
220220
.expect("Error loading sql language");
221221

222-
let mut tree = parser.parse(input, None).unwrap();
222+
let tree = parser.parse(input, None).unwrap();
223223

224224
// select | from users; <-- just right, one space after select token, one space before from
225-
assert!(cursor_inbetween_nodes(&mut tree, TextSize::new(7)));
225+
assert!(cursor_inbetween_nodes(&tree, TextSize::new(7)));
226226

227227
// select| from users; <-- still on select token
228-
assert!(!cursor_inbetween_nodes(&mut tree, TextSize::new(6)));
228+
assert!(!cursor_inbetween_nodes(&tree, TextSize::new(6)));
229229

230230
// select |from users; <-- already on from token
231-
assert!(!cursor_inbetween_nodes(&mut tree, TextSize::new(8)));
231+
assert!(!cursor_inbetween_nodes(&tree, TextSize::new(8)));
232232

233233
// select from users;|
234-
assert!(!cursor_inbetween_nodes(&mut tree, TextSize::new(19)));
234+
assert!(!cursor_inbetween_nodes(&tree, TextSize::new(19)));
235235
}
236236

237237
#[test]
@@ -243,29 +243,29 @@ mod tests {
243243
.set_language(tree_sitter_sql::language())
244244
.expect("Error loading sql language");
245245

246-
let mut tree = parser.parse(input, None).unwrap();
246+
let tree = parser.parse(input, None).unwrap();
247247

248248
// select * from| <-- still on previous token
249249
assert!(!cursor_prepared_to_write_token_after_last_node(
250-
&mut tree,
250+
&tree,
251251
TextSize::new(13)
252252
));
253253

254254
// select * from | <-- too far off, two spaces afterward
255255
assert!(!cursor_prepared_to_write_token_after_last_node(
256-
&mut tree,
256+
&tree,
257257
TextSize::new(15)
258258
));
259259

260260
// select * |from <-- it's within
261261
assert!(!cursor_prepared_to_write_token_after_last_node(
262-
&mut tree,
262+
&tree,
263263
TextSize::new(9)
264264
));
265265

266266
// select * from | <-- just right
267267
assert!(cursor_prepared_to_write_token_after_last_node(
268-
&mut tree,
268+
&tree,
269269
TextSize::new(14)
270270
));
271271
}
@@ -295,26 +295,26 @@ mod tests {
295295
.set_language(tree_sitter_sql::language())
296296
.expect("Error loading sql language");
297297

298-
let mut tree = parser.parse(input, None).unwrap();
298+
let tree = parser.parse(input, None).unwrap();
299299

300300
// select * from ;| <-- it's after the statement
301-
assert!(!cursor_before_semicolon(&mut tree, TextSize::new(19)));
301+
assert!(!cursor_before_semicolon(&tree, TextSize::new(19)));
302302

303303
// select * from| ; <-- still touches the from
304-
assert!(!cursor_before_semicolon(&mut tree, TextSize::new(13)));
304+
assert!(!cursor_before_semicolon(&tree, TextSize::new(13)));
305305

306306
// not okay to be ON the semi.
307307
// select * from |;
308-
assert!(!cursor_before_semicolon(&mut tree, TextSize::new(18)));
308+
assert!(!cursor_before_semicolon(&tree, TextSize::new(18)));
309309

310310
// anything is fine here
311311
// select * from | ;
312312
// select * from | ;
313313
// select * from | ;
314314
// select * from |;
315-
assert!(cursor_before_semicolon(&mut tree, TextSize::new(14)));
316-
assert!(cursor_before_semicolon(&mut tree, TextSize::new(15)));
317-
assert!(cursor_before_semicolon(&mut tree, TextSize::new(16)));
318-
assert!(cursor_before_semicolon(&mut tree, TextSize::new(17)));
315+
assert!(cursor_before_semicolon(&tree, TextSize::new(14)));
316+
assert!(cursor_before_semicolon(&tree, TextSize::new(15)));
317+
assert!(cursor_before_semicolon(&tree, TextSize::new(16)));
318+
assert!(cursor_before_semicolon(&tree, TextSize::new(17)));
319319
}
320320
}

crates/pgt_completions/src/test_helper.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::fmt::Display;
2+
13
use pgt_schema_cache::SchemaCache;
24
use pgt_test_utils::test_database::get_new_test_db;
35
use sqlx::Executor;
@@ -25,9 +27,9 @@ impl From<&str> for InputQuery {
2527
}
2628
}
2729

28-
impl ToString for InputQuery {
29-
fn to_string(&self) -> String {
30-
self.sql.clone()
30+
impl Display for InputQuery {
31+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32+
write!(f, "{}", self.sql)
3133
}
3234
}
3335

crates/pgt_workspace/src/workspace/server/change.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1470,7 +1470,7 @@ mod tests {
14701470
assert_eq!(old_stmt_text, "select * from");
14711471
}
14721472

1473-
_ => assert!(false, "Did not yield a modified statement."),
1473+
_ => unreachable!("Did not yield a modified statement."),
14741474
}
14751475

14761476
assert_document_integrity(&doc);
@@ -1516,7 +1516,7 @@ mod tests {
15161516
assert_eq!(old_stmt_text, "select * from");
15171517
}
15181518

1519-
_ => assert!(false, "Did not yield a modified statement."),
1519+
_ => unreachable!("Did not yield a modified statement."),
15201520
}
15211521

15221522
assert_document_integrity(&doc);
@@ -1559,7 +1559,7 @@ mod tests {
15591559
assert_eq!(new_stmt_text, "select * from users");
15601560
}
15611561

1562-
_ => assert!(false, "Did not yield a modified statement."),
1562+
_ => unreachable!("Did not yield a modified statement."),
15631563
}
15641564

15651565
assert_document_integrity(&doc);

crates/pgt_workspace/src/workspace/server/document.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ impl Document {
4343
.any(|d| d.severity() == Severity::Fatal)
4444
}
4545

46-
pub fn iter<'a>(&'a self) -> StatementIterator<'a> {
46+
pub fn iter(&self) -> StatementIterator<'_> {
4747
StatementIterator::new(self)
4848
}
4949
}

crates/pgt_workspace/src/workspace/server/parsed_document.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ impl<'a> StatementMapper<'a> for GetCompletionsMapper {
353353
pub struct GetCompletionsFilter {
354354
pub cursor_position: TextSize,
355355
}
356-
impl<'a> StatementFilter<'a> for GetCompletionsFilter {
356+
impl StatementFilter<'_> for GetCompletionsFilter {
357357
fn predicate(&self, _id: &StatementId, range: &TextRange, content: &str) -> bool {
358358
let is_terminated_by_semi = content.chars().last().is_some_and(|c| c == ';');
359359

@@ -367,7 +367,7 @@ impl<'a> StatementFilter<'a> for GetCompletionsFilter {
367367
}
368368

369369
pub struct NoFilter;
370-
impl<'a> StatementFilter<'a> for NoFilter {
370+
impl StatementFilter<'_> for NoFilter {
371371
fn predicate(&self, _id: &StatementId, _range: &TextRange, _content: &str) -> bool {
372372
true
373373
}
@@ -383,7 +383,7 @@ impl CursorPositionFilter {
383383
}
384384
}
385385

386-
impl<'a> StatementFilter<'a> for CursorPositionFilter {
386+
impl StatementFilter<'_> for CursorPositionFilter {
387387
fn predicate(&self, _id: &StatementId, range: &TextRange, _content: &str) -> bool {
388388
range.contains(self.pos)
389389
}
@@ -399,7 +399,7 @@ impl IdFilter {
399399
}
400400
}
401401

402-
impl<'a> StatementFilter<'a> for IdFilter {
402+
impl StatementFilter<'_> for IdFilter {
403403
fn predicate(&self, id: &StatementId, _range: &TextRange, _content: &str) -> bool {
404404
*id == self.id
405405
}

justfile

+27-4
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ alias rg := reset-git
1010
# Installs the tools needed to develop
1111
install-tools:
1212
cargo install cargo-binstall
13-
cargo binstall cargo-insta taplo-cli
13+
cargo binstall cargo-insta taplo-cli sqlx-cli
1414
cargo binstall --git "https://github.com/astral-sh/uv" uv
1515
bun install
1616

1717
# Upgrades the tools needed to develop
1818
upgrade-tools:
1919
cargo install cargo-binstall --force
20-
cargo binstall cargo-insta taplo-cli --force
20+
cargo binstall cargo-insta taplo-cli sqlx-cli --force
2121
cargo binstall --git "https://github.com/astral-sh/uv" uv --force
22-
bun install
2322

2423
# Generates code generated files for the linter
2524
gen-lint:
@@ -41,6 +40,16 @@ format:
4140
taplo format
4241
bun biome format --write
4342

43+
format-ci:
44+
cargo fmt --all --check
45+
taplo format --check
46+
bun biome format
47+
48+
format-ci-versions:
49+
cargo --version
50+
taplo --version
51+
echo "Biome $(bun biome --version)"
52+
4453
[unix]
4554
_touch file:
4655
touch {{file}}
@@ -72,6 +81,20 @@ lint-fix:
7281
cargo run -p rules_check
7382
bun biome lint --write
7483

84+
lint-ci-versions:
85+
rustc --version
86+
rustup --version
87+
cargo --version
88+
cargo sqlx --version
89+
cargo clippy --version
90+
echo "Biome $(bun biome --version)"
91+
92+
lint-ci:
93+
cargo sqlx prepare --check --workspace
94+
cargo clippy --fix
95+
cargo run -p rules_check
96+
bun biome lint --write
97+
7598
serve-docs:
7699
uv sync
77100
uv run mkdocs serve
@@ -113,4 +136,4 @@ merge-main:
113136
# We recommend to install `bunyan` (npm i -g bunyan) and pipe the output through there for color-coding:
114137
# just show-logs | bunyan
115138
show-logs:
116-
tail -f $(ls $PGT_LOG_PATH/server.log.* | sort -t- -k2,2 -k3,3 -k4,4 | tail -n 1)
139+
tail -f $(ls $PGT_LOG_PATH/server.log.* | sort -t- -k2,2 -k3,3 -k4,4 | tail -n 1)

rust-toolchain.toml

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
[toolchain]
2-
# The default profile includes rustc, rust-std, cargo, rust-docs, rustfmt and clippy.
3-
# https://rust-lang.github.io/rustup/concepts/profiles.html
42
profile = "default"
5-
# For some reason, rustfmt is not included in the default profile. Add it here.
6-
components = ["rustfmt"]
7-
channel = "nightly"
3+
channel = "1.86.0"

0 commit comments

Comments
 (0)