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

Commit be28130

Browse files
authored
Merge pull request #1190 from Xanewok/test-overhaul
Overhaul fixture handling in tests
2 parents 6844569 + 9fa58ee commit be28130

File tree

165 files changed

+370
-212
lines changed

Some content is hidden

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

165 files changed

+370
-212
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ rustc-workspace-hack = "1.0.0"
5151

5252
[dev-dependencies]
5353
difference = "2"
54+
tempfile = "3"
5455

5556
[build-dependencies]
5657
rustc_tools_util = { git = "https://github.com/rust-lang/rust-clippy", rev = "a3c77f6ad1c1c185e561e9cd7fdec7db569169d1" }

src/actions/diagnostics.rs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,16 @@ impl IsWithin for Range {
344344

345345
/// Tests for formatted messages from the compilers json output
346346
/// run cargo with `--message-format=json` to generate the json for new tests and add .json
347-
/// message files to '../../test_data/compiler_message/'
347+
/// message files to '$(crate::test::FIXTURES_DIR)/compiler_message/'
348348
#[cfg(test)]
349349
mod diagnostic_message_test {
350350
use super::*;
351351
use languageserver_types::Position;
352+
pub(super) use crate::test::FIXTURES_DIR;
353+
354+
pub(super) fn read_fixture(path: impl AsRef<Path>) -> String {
355+
std::fs::read_to_string(FIXTURES_DIR.join(path.as_ref())).unwrap()
356+
}
352357

353358
pub(super) fn parse_compiler_message(
354359
compiler_message: &str,
@@ -413,7 +418,7 @@ mod diagnostic_message_test {
413418
#[test]
414419
fn message_use_after_move() {
415420
let diag = parse_compiler_message(
416-
include_str!("../../test_data/compiler_message/use-after-move.json"),
421+
&read_fixture("compiler_message/use-after-move.json"),
417422
true,
418423
);
419424

@@ -443,7 +448,7 @@ mod diagnostic_message_test {
443448
#[test]
444449
fn message_type_annotations_needed() {
445450
let messages = parse_compiler_message(
446-
include_str!("../../test_data/compiler_message/type-annotations-needed.json"),
451+
&read_fixture("compiler_message/type-annotations-needed.json"),
447452
true,
448453
).to_messages();
449454
assert_eq!(
@@ -460,7 +465,7 @@ mod diagnostic_message_test {
460465
// Check if we don't emit related information if it's not supported and
461466
// if secondary spans are emitted as separate diagnostics
462467
let messages = parse_compiler_message(
463-
include_str!("../../test_data/compiler_message/type-annotations-needed.json"),
468+
&read_fixture("compiler_message/type-annotations-needed.json"),
464469
false,
465470
);
466471

@@ -486,7 +491,7 @@ mod diagnostic_message_test {
486491
#[test]
487492
fn message_mismatched_types() {
488493
let messages = parse_compiler_message(
489-
include_str!("../../test_data/compiler_message/mismatched-types.json"),
494+
&read_fixture("compiler_message/mismatched-types.json"),
490495
true,
491496
).to_messages();
492497
assert_eq!(
@@ -513,7 +518,7 @@ mod diagnostic_message_test {
513518
#[test]
514519
fn message_not_mutable() {
515520
let messages = parse_compiler_message(
516-
include_str!("../../test_data/compiler_message/not-mut.json"),
521+
&read_fixture("compiler_message/not-mut.json"),
517522
true,
518523
).to_messages();
519524
assert_eq!(
@@ -542,7 +547,7 @@ mod diagnostic_message_test {
542547
#[test]
543548
fn message_consider_borrowing() {
544549
let messages = parse_compiler_message(
545-
include_str!("../../test_data/compiler_message/consider-borrowing.json"),
550+
&read_fixture("compiler_message/consider-borrowing.json"),
546551
true,
547552
).to_messages();
548553
assert_eq!(
@@ -573,7 +578,7 @@ help: consider borrowing here: `&string`"#,
573578
#[test]
574579
fn message_move_out_of_borrow() {
575580
let messages = parse_compiler_message(
576-
include_str!("../../test_data/compiler_message/move-out-of-borrow.json"),
581+
&read_fixture("compiler_message/move-out-of-borrow.json"),
577582
true,
578583
).to_messages();
579584
assert_eq!(
@@ -596,7 +601,7 @@ help: consider borrowing here: `&string`"#,
596601
#[test]
597602
fn message_unused_use() {
598603
let messages = parse_compiler_message(
599-
include_str!("../../test_data/compiler_message/unused-use.json"),
604+
&read_fixture("compiler_message/unused-use.json"),
600605
true,
601606
).to_messages();
602607

@@ -616,7 +621,7 @@ help: consider borrowing here: `&string`"#,
616621
#[test]
617622
fn message_cannot_find_type() {
618623
let messages = parse_compiler_message(
619-
include_str!("../../test_data/compiler_message/cannot-find-type.json"),
624+
&read_fixture("compiler_message/cannot-find-type.json"),
620625
true,
621626
).to_messages();
622627
assert_eq!(
@@ -634,7 +639,7 @@ help: consider borrowing here: `&string`"#,
634639
#[test]
635640
fn message_clippy_identity_op() {
636641
let diag = parse_compiler_message(
637-
include_str!("../../test_data/compiler_message/clippy-identity-op.json"),
642+
&read_fixture("compiler_message/clippy-identity-op.json"),
638643
true,
639644
);
640645

@@ -674,7 +679,7 @@ help: consider borrowing here: `&string`"#,
674679
#[test]
675680
fn macro_error_no_trait() {
676681
let diag = parse_compiler_message(
677-
include_str!("../../test_data/compiler_message/macro-error-no-trait.json"),
682+
&read_fixture("compiler_message/macro-error-no-trait.json"),
678683
true,
679684
);
680685
assert_eq!(diag.diagnostics.len(), 1, "{:#?}", diag.diagnostics);
@@ -717,7 +722,7 @@ help: consider borrowing here: `&string`"#,
717722
#[test]
718723
fn macro_expected_token_nested_expansion() {
719724
let diag = parse_compiler_message(
720-
include_str!("../../test_data/compiler_message/macro-expected-token.json"),
725+
&read_fixture("compiler_message/macro-expected-token.json"),
721726
true,
722727
);
723728
assert_eq!(diag.diagnostics.len(), 1, "{:#?}", diag.diagnostics);
@@ -756,7 +761,7 @@ mod diagnostic_suggestion_test {
756761
#[test]
757762
fn suggest_use_when_cannot_find_type() {
758763
let diag = parse_compiler_message(
759-
include_str!("../../test_data/compiler_message/cannot-find-type.json"),
764+
&read_fixture("compiler_message/cannot-find-type.json"),
760765
true,
761766
);
762767

@@ -787,7 +792,7 @@ mod diagnostic_suggestion_test {
787792
#[test]
788793
fn suggest_mut_when_not_mut() {
789794
let diag = parse_compiler_message(
790-
include_str!("../../test_data/compiler_message/not-mut.json"),
795+
&read_fixture("compiler_message/not-mut.json"),
791796
true,
792797
);
793798

@@ -818,7 +823,7 @@ mod diagnostic_suggestion_test {
818823
#[test]
819824
fn suggest_clippy_const_static() {
820825
let diag = parse_compiler_message(
821-
include_str!("../../test_data/compiler_message/clippy-const-static-lifetime.json"),
826+
&read_fixture("compiler_message/clippy-const-static-lifetime.json"),
822827
true,
823828
);
824829

@@ -846,7 +851,7 @@ mod diagnostic_suggestion_test {
846851
#[test]
847852
fn suggest_macro_error_no_trait() {
848853
let diag = parse_compiler_message(
849-
include_str!("../../test_data/compiler_message/macro-error-no-trait.json"),
854+
&read_fixture("compiler_message/macro-error-no-trait.json"),
850855
true,
851856
);
852857
let diagnostics = diag.diagnostics.values().nth(0).unwrap();

src/actions/hover.rs

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -977,6 +977,7 @@ pub mod test {
977977
use crate::lsp_data::{ClientCapabilities, InitializationOptions};
978978
use crate::lsp_data::{Position, TextDocumentIdentifier, TextDocumentPositionParams};
979979
use crate::server::{Output, RequestId};
980+
use crate::test::FIXTURES_DIR;
980981
use rls_analysis as analysis;
981982
use serde_derive::{Deserialize, Serialize};
982983
use serde_json as json;
@@ -991,7 +992,7 @@ pub mod test {
991992

992993
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
993994
pub struct Test {
994-
/// Relative to the project _source_ dir (e.g. relative to test_data/hover/src)
995+
/// Relative to the project _source_ dir (e.g. relative to FIXTURES_DIR/hover/src)
995996
pub file: String,
996997
/// One-based line number
997998
pub line: u64,
@@ -1672,67 +1673,67 @@ pub mod test {
16721673
#[test]
16731674
fn test_extract_decl() {
16741675
let vfs = Vfs::new();
1675-
let file = Path::new("test_data/hover/src/test_extract_decl.rs");
1676+
let file = FIXTURES_DIR.join("hover/src/test_extract_decl.rs");
16761677

16771678
let expected = "pub fn foo() -> Foo<u32>";
16781679
let row_start = Row::new_zero_indexed(10);
1679-
let actual = extract_decl(&vfs, file, row_start)
1680+
let actual = extract_decl(&vfs, &file, row_start)
16801681
.expect("function declaration")
16811682
.join("\n");
16821683
assert_eq!(expected, actual);
16831684

16841685
let expected = "pub struct Foo<T>";
16851686
let row_start = Row::new_zero_indexed(15);
1686-
let actual = extract_decl(&vfs, file, row_start)
1687+
let actual = extract_decl(&vfs, &file, row_start)
16871688
.expect("struct declaration")
16881689
.join("\n");
16891690
assert_eq!(expected, actual);
16901691

16911692
let expected = "pub enum Bar";
16921693
let row_start = Row::new_zero_indexed(20);
1693-
let actual = extract_decl(&vfs, file, row_start)
1694+
let actual = extract_decl(&vfs, &file, row_start)
16941695
.expect("enum declaration")
16951696
.join("\n");
16961697
assert_eq!(expected, actual);
16971698

16981699
let expected = "pub struct NewType(pub u32, f32)";
16991700
let row_start = Row::new_zero_indexed(25);
1700-
let actual = extract_decl(&vfs, file, row_start)
1701+
let actual = extract_decl(&vfs, &file, row_start)
17011702
.expect("tuple declaration")
17021703
.join("\n");
17031704
assert_eq!(expected, actual);
17041705

17051706
let expected = "pub fn new() -> NewType";
17061707
let row_start = Row::new_zero_indexed(28);
1707-
let actual = extract_decl(&vfs, file, row_start)
1708+
let actual = extract_decl(&vfs, &file, row_start)
17081709
.expect("struct function declaration")
17091710
.join("\n");
17101711
assert_eq!(expected, actual);
17111712

17121713
let expected = "pub fn bar<T: Copy + Add>(&self, the_really_long_name_string: String, the_really_long_name_foo: Foo<T>) -> Vec<(String, Foo<T>)>";
17131714
let row_start = Row::new_zero_indexed(32);
1714-
let actual = extract_decl(&vfs, file, row_start)
1715+
let actual = extract_decl(&vfs, &file, row_start)
17151716
.expect("long struct method declaration with generics")
17161717
.join("\n");
17171718
assert_eq!(expected, actual);
17181719

17191720
let expected = "pub trait Baz<T> where T: Copy";
17201721
let row_start = Row::new_zero_indexed(37);
1721-
let actual = extract_decl(&vfs, file, row_start)
1722+
let actual = extract_decl(&vfs, &file, row_start)
17221723
.expect("enum declaration")
17231724
.join("\n");
17241725
assert_eq!(expected, actual);
17251726

17261727
let expected = "fn make_copy(&self) -> Self";
17271728
let row_start = Row::new_zero_indexed(38);
1728-
let actual = extract_decl(&vfs, file, row_start)
1729+
let actual = extract_decl(&vfs, &file, row_start)
17291730
.expect("trait method declaration")
17301731
.join("\n");
17311732
assert_eq!(expected, actual);
17321733

17331734
let expected = "fn make_copy(&self) -> Self";
17341735
let row_start = Row::new_zero_indexed(42);
1735-
let actual = extract_decl(&vfs, file, row_start)
1736+
let actual = extract_decl(&vfs, &file, row_start)
17361737
.expect("trait method implementation")
17371738
.join("\n");
17381739
assert_eq!(expected, actual);
@@ -1745,7 +1746,7 @@ pub mod test {
17451746
",
17461747
);
17471748
let row_start = Row::new_zero_indexed(47);
1748-
let actual = extract_decl(&vfs, file, row_start)
1749+
let actual = extract_decl(&vfs, &file, row_start)
17491750
.expect("trait declaration multiline")
17501751
.join("\n");
17511752
assert_eq!(expected, actual);
@@ -1759,7 +1760,7 @@ pub mod test {
17591760
",
17601761
);
17611762
let row_start = Row::new_zero_indexed(53);
1762-
let actual = extract_decl(&vfs, file, row_start)
1763+
let actual = extract_decl(&vfs, &file, row_start)
17631764
.expect("function declaration multiline")
17641765
.join("\n");
17651766
assert_eq!(expected, actual);
@@ -1837,7 +1838,7 @@ pub mod test {
18371838
#[test]
18381839
fn test_extract_decl_multiline_empty_function() {
18391840
let vfs = Vfs::new();
1840-
let file = Path::new("test_data/hover/src/test_extract_decl_multiline_empty_function.rs");
1841+
let file = FIXTURES_DIR.join("hover/src/test_extract_decl_multiline_empty_function.rs");
18411842

18421843
let expected = noindent(
18431844
"
@@ -1850,7 +1851,7 @@ pub mod test {
18501851
",
18511852
);
18521853
let row_start = Row::new_zero_indexed(21);
1853-
let actual = extract_decl(&vfs, file, row_start)
1854+
let actual = extract_decl(&vfs, &file, row_start)
18541855
.expect("the empty body should not be extracted")
18551856
.join("\n");
18561857
assert_eq!(expected, actual);
@@ -1859,7 +1860,7 @@ pub mod test {
18591860
#[test]
18601861
fn test_extract_docs_module_docs_with_attribute() {
18611862
let vfs = Vfs::new();
1862-
let file = Path::new("test_data/hover/src/test_extract_docs_module_docs_with_attribute.rs");
1863+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_module_docs_with_attribute.rs");
18631864
let row_start = Row::new_zero_indexed(0);
18641865
let actual = extract_docs(&vfs, &file, row_start)
18651866
.expect(&format!("failed to extract docs: {:?}", file))
@@ -1883,7 +1884,7 @@ pub mod test {
18831884
#[test]
18841885
fn test_extract_docs_module_docs_no_copyright() {
18851886
let vfs = Vfs::new();
1886-
let file = Path::new("test_data/hover/src/test_extract_docs_module_docs_no_copyright.rs");
1887+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_module_docs_no_copyright.rs");
18871888
let row_start = Row::new_zero_indexed(0);
18881889
let actual = extract_docs(&vfs, &file, row_start)
18891890
.expect(&format!("failed to extract docs: {:?}", file))
@@ -1907,7 +1908,7 @@ pub mod test {
19071908
#[test]
19081909
fn test_extract_docs_comment_block() {
19091910
let vfs = Vfs::new();
1910-
let file = Path::new("test_data/hover/src/test_extract_docs_comment_block.rs");
1911+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_comment_block.rs");
19111912
let row_start = Row::new_zero_indexed(21);
19121913
let actual = extract_docs(&vfs, &file, row_start)
19131914
.expect(&format!("failed to extract docs: {:?}", file))
@@ -1931,7 +1932,7 @@ pub mod test {
19311932
#[test]
19321933
fn test_extract_docs_empty_line_before_decl() {
19331934
let vfs = Vfs::new();
1934-
let file = Path::new("test_data/hover/src/test_extract_docs_empty_line_before_decl.rs");
1935+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_empty_line_before_decl.rs");
19351936
let row_start = Row::new_zero_indexed(18);
19361937
let actual = extract_docs(&vfs, &file, row_start)
19371938
.expect(&format!("failed to extract docs: {:?}", file))
@@ -1955,7 +1956,7 @@ pub mod test {
19551956
#[test]
19561957
fn test_extract_docs_module_docs() {
19571958
let vfs = Vfs::new();
1958-
let file = Path::new("test_data/hover/src/test_extract_docs_module_docs.rs");
1959+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_module_docs.rs");
19591960

19601961
let row_start = Row::new_zero_indexed(0);
19611962
let actual = extract_docs(&vfs, &file, row_start)
@@ -1995,7 +1996,7 @@ pub mod test {
19951996
#[test]
19961997
fn test_extract_docs_attributes() {
19971998
let vfs = Vfs::new();
1998-
let file = Path::new("test_data/hover/src/test_extract_docs_attributes.rs");
1999+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_attributes.rs");
19992000

20002001
let row_start = Row::new_zero_indexed(21);
20012002
let actual = extract_docs(&vfs, &file, row_start)
@@ -2039,7 +2040,7 @@ pub mod test {
20392040
#[test]
20402041
fn test_extract_docs_comment_first_line() {
20412042
let vfs = Vfs::new();
2042-
let file = Path::new("test_data/hover/src/test_extract_docs_comment_first_line.rs");
2043+
let file = FIXTURES_DIR.join("hover/src/test_extract_docs_comment_first_line.rs");
20432044

20442045
let row_start = Row::new_zero_indexed(1);
20452046
let actual = extract_docs(&vfs, &file, row_start)
@@ -2113,7 +2114,7 @@ pub mod test {
21132114

21142115
let cwd = env::current_dir()?;
21152116
let out = LineOutput::default();
2116-
let proj_dir = cwd.join("test_data").join("hover");
2117+
let proj_dir = FIXTURES_DIR.join("hover");
21172118
let save_dir = cwd
21182119
.join("target")
21192120
.join("tests")
@@ -2168,7 +2169,7 @@ pub mod test {
21682169

21692170
let cwd = env::current_dir()?;
21702171
let out = LineOutput::default();
2171-
let proj_dir = cwd.join("test_data").join("hover");
2172+
let proj_dir = FIXTURES_DIR.join("hover");
21722173
let save_dir = cwd
21732174
.join("target")
21742175
.join("tests")

0 commit comments

Comments
 (0)