Skip to content

Commit efa3679

Browse files
committed
fix: try to reproJ
1 parent e3f5760 commit efa3679

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

crates/pgt_lsp/tests/server.rs

+86
Original file line numberDiff line numberDiff line change
@@ -981,3 +981,89 @@ async fn test_issue_281() -> Result<()> {
981981

982982
Ok(())
983983
}
984+
985+
#[tokio::test]
986+
async fn test_issue_303() -> Result<()> {
987+
let factory = ServerFactory::default();
988+
let mut fs = MemoryFileSystem::default();
989+
let test_db = get_new_test_db().await;
990+
991+
let setup = r#"
992+
create table public.users (
993+
id serial primary key,
994+
name varchar(255) not null
995+
);
996+
"#;
997+
998+
test_db
999+
.execute(setup)
1000+
.await
1001+
.expect("Failed to setup test database");
1002+
1003+
let mut conf = PartialConfiguration::init();
1004+
conf.merge_with(PartialConfiguration {
1005+
db: Some(PartialDatabaseConfiguration {
1006+
database: Some(
1007+
test_db
1008+
.connect_options()
1009+
.get_database()
1010+
.unwrap()
1011+
.to_string(),
1012+
),
1013+
..Default::default()
1014+
}),
1015+
..Default::default()
1016+
});
1017+
fs.insert(
1018+
url!("postgrestools.jsonc").to_file_path().unwrap(),
1019+
serde_json::to_string_pretty(&conf).unwrap(),
1020+
);
1021+
1022+
let (service, client) = factory
1023+
.create_with_fs(None, DynRef::Owned(Box::new(fs)))
1024+
.into_inner();
1025+
1026+
let (stream, sink) = client.split();
1027+
let mut server = Server::new(service);
1028+
1029+
let (sender, _) = channel(CHANNEL_BUFFER_SIZE);
1030+
let reader = tokio::spawn(client_handler(stream, sink, sender));
1031+
1032+
server.initialize().await?;
1033+
server.initialized().await?;
1034+
1035+
server.load_configuration().await?;
1036+
1037+
server.open_document("").await?;
1038+
1039+
let chars = [
1040+
"C", "R", "E", "A", "T", "E", " ", "T", "A", "B", "L", "E", " ", "\"",
1041+
];
1042+
1043+
for (i, c) in chars.iter().enumerate() {
1044+
server
1045+
.change_document(
1046+
i as i32 + 4,
1047+
vec![TextDocumentContentChangeEvent {
1048+
range: Some(Range {
1049+
start: Position {
1050+
line: 0,
1051+
character: i as u32,
1052+
},
1053+
end: Position {
1054+
line: 0,
1055+
character: i as u32,
1056+
},
1057+
}),
1058+
range_length: Some(0),
1059+
text: c.to_string(),
1060+
}],
1061+
)
1062+
.await?;
1063+
}
1064+
1065+
server.shutdown().await?;
1066+
reader.abort();
1067+
1068+
Ok(())
1069+
}

0 commit comments

Comments
 (0)