Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

Commit 07342b7

Browse files
committed
Auto merge of #1255 - Xanewok:you-only-complete-once-fool, r=Xanewok
tests: Only request Racer completion once Closes #1232. Will run this on Travis a couple of times to see if this doesn't backfire 💥
2 parents 6a14ed9 + bd0f2f6 commit 07342b7

File tree

1 file changed

+55
-75
lines changed

1 file changed

+55
-75
lines changed

tests/client.rs

+55-75
Original file line numberDiff line numberDiff line change
@@ -439,33 +439,25 @@ fn client_test_complete_self_crate_name() {
439439
let diag = rls.wait_for_diagnostics();
440440
assert!(diag.diagnostics[0].message.contains("expected identifier"));
441441

442-
// Sometimes RLS is not ready immediately for completion
443-
let mut detail = None;
444-
for id in 100..103 {
445-
let response = rls.request::<Completion>(id, CompletionParams {
446-
context: Some(CompletionContext {
447-
trigger_character: Some(":".to_string()),
448-
trigger_kind: CompletionTriggerKind::TriggerCharacter,
449-
}),
450-
position: Position::new(2, 32),
451-
text_document: TextDocumentIdentifier {
452-
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
453-
}
454-
});
442+
let response = rls.request::<Completion>(100, CompletionParams {
443+
context: Some(CompletionContext {
444+
trigger_character: Some(":".to_string()),
445+
trigger_kind: CompletionTriggerKind::TriggerCharacter,
446+
}),
447+
position: Position::new(2, 32),
448+
text_document: TextDocumentIdentifier {
449+
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
450+
}
451+
});
455452

456-
let items = match response {
457-
Some(CompletionResponse::Array(items)) => items,
458-
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
459-
_ => Vec::new(),
460-
};
453+
let items = match response {
454+
Some(CompletionResponse::Array(items)) => items,
455+
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
456+
_ => Vec::new(),
457+
};
461458

462-
if let Some(item) = items.get(0) {
463-
detail = item.detail.clone();
464-
break;
465-
}
466-
}
467-
// Make sure we get the completion at least once right
468-
assert_eq!(detail.as_ref().unwrap(), "pub fn function() -> usize");
459+
let item = items.into_iter().nth(0).expect("Racer autocompletion failed");
460+
assert_eq!(item.detail.unwrap(), "pub fn function() -> usize");
469461

470462
rls.shutdown();
471463
}
@@ -535,33 +527,27 @@ fn client_completion_suggests_arguments_in_statements() {
535527
let diag = rls.wait_for_diagnostics();
536528
assert!(diag.diagnostics[0].message.contains("expected one of"));
537529

538-
// Sometimes RLS is not ready immediately for completion
539-
let mut insert_text = None;
540-
for id in 100..103 {
541-
let response = rls.request::<Completion>(id, CompletionParams {
542-
context: Some(CompletionContext {
543-
trigger_character: Some("f".to_string()),
544-
trigger_kind: CompletionTriggerKind::TriggerCharacter,
545-
}),
546-
position: Position::new(3, 41),
547-
text_document: TextDocumentIdentifier {
548-
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
549-
}
550-
});
530+
let response = rls.request::<Completion>(100, CompletionParams {
531+
context: Some(CompletionContext {
532+
trigger_character: Some("f".to_string()),
533+
trigger_kind: CompletionTriggerKind::TriggerCharacter,
534+
}),
535+
position: Position::new(3, 41),
536+
text_document: TextDocumentIdentifier {
537+
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
538+
}
539+
});
551540

552-
let items = match response {
553-
Some(CompletionResponse::Array(items)) => items,
554-
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
555-
_ => Vec::new(),
556-
};
541+
let items = match response {
542+
Some(CompletionResponse::Array(items)) => items,
543+
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
544+
_ => Vec::new(),
545+
};
557546

558-
if let Some(item) = items.get(0) {
559-
insert_text = item.insert_text.clone();
560-
break;
561-
}
562-
}
563-
// Make sure we get the completion at least once right
564-
assert_eq!(insert_text.as_ref().unwrap(), "function()");
547+
let item = items.into_iter().nth(0).expect("Racer autocompletion failed");
548+
assert_eq!(item.insert_text.unwrap(), "function()");
549+
550+
rls.shutdown();
565551
}
566552

567553
#[test]
@@ -606,33 +592,27 @@ fn client_use_statement_completion_doesnt_suggest_arguments() {
606592
let diag = rls.wait_for_diagnostics();
607593
assert!(diag.diagnostics[0].message.contains("expected identifier"));
608594

609-
// Sometimes RLS is not ready immediately for completion
610-
let mut insert_text = None;
611-
for id in 100..103 {
612-
let response = rls.request::<Completion>(id, CompletionParams {
613-
context: Some(CompletionContext {
614-
trigger_character: Some(":".to_string()),
615-
trigger_kind: CompletionTriggerKind::TriggerCharacter,
616-
}),
617-
position: Position::new(2, 32),
618-
text_document: TextDocumentIdentifier {
619-
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
620-
}
621-
});
595+
let response = rls.request::<Completion>(100, CompletionParams {
596+
context: Some(CompletionContext {
597+
trigger_character: Some(":".to_string()),
598+
trigger_kind: CompletionTriggerKind::TriggerCharacter,
599+
}),
600+
position: Position::new(2, 32),
601+
text_document: TextDocumentIdentifier {
602+
uri: Url::from_file_path(p.root().join("library/tests/test.rs")).unwrap(),
603+
}
604+
});
622605

623-
let items = match response {
624-
Some(CompletionResponse::Array(items)) => items,
625-
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
626-
_ => Vec::new(),
627-
};
606+
let items = match response {
607+
Some(CompletionResponse::Array(items)) => items,
608+
Some(CompletionResponse::List(CompletionList { items, ..})) => items,
609+
_ => Vec::new(),
610+
};
628611

629-
if let Some(item) = items.get(0) {
630-
insert_text = item.insert_text.clone();
631-
break;
632-
}
633-
}
634-
// Make sure we get the completion at least once right
635-
assert_eq!(insert_text.as_ref().unwrap(), "function");
612+
let item = items.into_iter().nth(0).expect("Racer autocompletion failed");
613+
assert_eq!(item.insert_text.unwrap(), "function");
614+
615+
rls.shutdown();
636616
}
637617

638618
/// Test simulates typing in a dependency wrongly in a couple of ways before finally getting it

0 commit comments

Comments
 (0)