mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Simplify tests
This commit is contained in:
parent
b18d2882f4
commit
ce898183b8
5 changed files with 36 additions and 53 deletions
|
@ -12,4 +12,4 @@ drop_bomb = "0.1.4"
|
||||||
parking_lot = "0.6.0"
|
parking_lot = "0.6.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
testutils = { path = "./tests/testutils" }
|
difference = "2.0.0"
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
extern crate libsyntax2;
|
|
||||||
extern crate testutils;
|
|
||||||
|
|
||||||
use std::fmt::Write;
|
|
||||||
|
|
||||||
use libsyntax2::{tokenize, Token};
|
|
||||||
use testutils::dir_tests;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn lexer_tests() {
|
|
||||||
dir_tests(&["lexer"], |text| {
|
|
||||||
let tokens = tokenize(text);
|
|
||||||
dump_tokens(&tokens, text)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fn dump_tokens(tokens: &[Token], text: &str) -> String {
|
|
||||||
let mut acc = String::new();
|
|
||||||
let mut offset = 0;
|
|
||||||
for token in tokens {
|
|
||||||
let len: u32 = token.len.into();
|
|
||||||
let len = len as usize;
|
|
||||||
let token_text = &text[offset..offset + len];
|
|
||||||
offset += len;
|
|
||||||
write!(acc, "{:?} {} {:?}\n", token.kind, token.len, token_text).unwrap()
|
|
||||||
}
|
|
||||||
acc
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
extern crate libsyntax2;
|
|
||||||
extern crate testutils;
|
|
||||||
|
|
||||||
use libsyntax2::parse;
|
|
||||||
use libsyntax2::utils::dump_tree;
|
|
||||||
use testutils::dir_tests;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn parser_tests() {
|
|
||||||
dir_tests(&["parser/inline", "parser/ok", "parser/err"], |text| {
|
|
||||||
let file = parse(text);
|
|
||||||
dump_tree(&file)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -1,12 +1,31 @@
|
||||||
|
extern crate libsyntax2;
|
||||||
extern crate difference;
|
extern crate difference;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
fs,
|
fs,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
|
fmt::Write,
|
||||||
};
|
};
|
||||||
|
|
||||||
use difference::Changeset;
|
use difference::Changeset;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn lexer_tests() {
|
||||||
|
dir_tests(&["lexer"], |text| {
|
||||||
|
let tokens = libsyntax2::tokenize(text);
|
||||||
|
dump_tokens(&tokens, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parser_tests() {
|
||||||
|
dir_tests(&["parser/inline", "parser/ok", "parser/err"], |text| {
|
||||||
|
let file = libsyntax2::parse(text);
|
||||||
|
libsyntax2::utils::dump_tree(&file)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Read file and normalize newlines.
|
/// Read file and normalize newlines.
|
||||||
///
|
///
|
||||||
/// `rustc` seems to always normalize `\r\n` newlines to `\n`:
|
/// `rustc` seems to always normalize `\r\n` newlines to `\n`:
|
||||||
|
@ -23,7 +42,7 @@ fn read_text(path: &Path) -> String {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn dir_tests<F>(paths: &[&str], f: F)
|
pub fn dir_tests<F>(paths: &[&str], f: F)
|
||||||
where
|
where
|
||||||
F: Fn(&str) -> String,
|
F: Fn(&str) -> String,
|
||||||
{
|
{
|
||||||
for path in collect_tests(paths) {
|
for path in collect_tests(paths) {
|
||||||
|
@ -107,5 +126,18 @@ fn project_dir() -> PathBuf {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_data_dir() -> PathBuf {
|
fn test_data_dir() -> PathBuf {
|
||||||
project_dir().join("tests/data")
|
project_dir().join("crates/libsyntax2/tests/data")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn dump_tokens(tokens: &[libsyntax2::Token], text: &str) -> String {
|
||||||
|
let mut acc = String::new();
|
||||||
|
let mut offset = 0;
|
||||||
|
for token in tokens {
|
||||||
|
let len: u32 = token.len.into();
|
||||||
|
let len = len as usize;
|
||||||
|
let token_text = &text[offset..offset + len];
|
||||||
|
offset += len;
|
||||||
|
write!(acc, "{:?} {} {:?}\n", token.kind, token.len, token_text).unwrap()
|
||||||
|
}
|
||||||
|
acc
|
||||||
}
|
}
|
|
@ -1,7 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "testutils"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
difference = "2.0.0"
|
|
Loading…
Reference in a new issue