diff --git a/Cargo.lock b/Cargo.lock index ee50d006c1..3a4929a0f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,21 +78,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" -[[package]] -name = "bit-set" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" - [[package]] name = "bitflags" version = "1.2.1" @@ -428,12 +413,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -791,15 +770,6 @@ dependencies = [ "winapi 0.3.8", ] -[[package]] -name = "num-traits" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -dependencies = [ - "autocfg 1.0.0", -] - [[package]] name = "num_cpus" version = "1.12.0" @@ -916,30 +886,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "proptest" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf6147d103a7c9d7598f4105cf049b15c99e2ecd93179bf024f0fd349be5ada4" -dependencies = [ - "bit-set", - "bitflags", - "byteorder", - "lazy_static", - "num-traits", - "quick-error", - "rand 0.6.5", - "rand_chacha 0.1.1", - "rand_xorshift", - "regex-syntax", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.2" @@ -1025,7 +971,7 @@ dependencies = [ "ra_ide", "ra_prof", "ra_syntax", - "rand 0.7.3", + "rand", ] [[package]] @@ -1137,7 +1083,6 @@ dependencies = [ "join_to_string", "log", "once_cell", - "proptest", "ra_assists", "ra_cfg", "ra_db", @@ -1147,7 +1092,7 @@ dependencies = [ "ra_prof", "ra_syntax", "ra_text_edit", - "rand 0.7.3", + "rand", "rayon", "rustc-hash", "superslice", @@ -1168,7 +1113,6 @@ dependencies = [ "join_to_string", "log", "once_cell", - "proptest", "ra_cfg", "ra_db", "ra_fmt", @@ -1281,7 +1225,6 @@ dependencies = [ name = "ra_text_edit" version = "0.1.0" dependencies = [ - "proptest", "test_utils", "text_unit", ] @@ -1317,25 +1260,6 @@ dependencies = [ "ra_vfs", ] -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.7", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg 0.1.2", - "rand_xorshift", - "winapi 0.3.8", -] - [[package]] name = "rand" version = "0.7.3" @@ -1344,20 +1268,10 @@ checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ "getrandom", "libc", - "rand_chacha 0.2.1", - "rand_core 0.5.1", - "rand_hc 0.2.0", - "rand_pcg 0.2.1", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.3.1", + "rand_chacha", + "rand_core", + "rand_hc", + "rand_pcg", ] [[package]] @@ -1367,24 +1281,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" dependencies = [ "c2-chacha", - "rand_core 0.5.1", + "rand_core", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -1394,66 +1293,13 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi 0.3.8", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi 0.3.8", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.4.2", + "rand_core", ] [[package]] @@ -1462,16 +1308,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", + "rand_core", ] [[package]] @@ -1498,15 +1335,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "redox_syscall" version = "0.1.56" @@ -1604,7 +1432,7 @@ dependencies = [ "indexmap", "log", "parking_lot", - "rand 0.7.3", + "rand", "rustc-hash", "salsa-macros", "smallvec", @@ -1753,7 +1581,7 @@ checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ "cfg-if", "libc", - "rand 0.7.3", + "rand", "redox_syscall", "remove_dir_all", "winapi 0.3.8", diff --git a/crates/ra_ide/Cargo.toml b/crates/ra_ide/Cargo.toml index 9ace35229d..d50cf1d20a 100644 --- a/crates/ra_ide/Cargo.toml +++ b/crates/ra_ide/Cargo.toml @@ -41,9 +41,3 @@ hir = { path = "../ra_hir", package = "ra_hir" } [dev-dependencies] insta = "0.13.0" - -[dev-dependencies.proptest] -version = "0.9.0" -# Disable `fork` feature to allow compiling on webassembly -default-features = false -features = ["std", "bit-set", "break-dead-code"] diff --git a/crates/ra_ide_db/Cargo.toml b/crates/ra_ide_db/Cargo.toml index 495fffb5af..ad3acce595 100644 --- a/crates/ra_ide_db/Cargo.toml +++ b/crates/ra_ide_db/Cargo.toml @@ -38,9 +38,3 @@ hir = { path = "../ra_hir", package = "ra_hir" } [dev-dependencies] insta = "0.13.0" - -[dev-dependencies.proptest] -version = "0.9.0" -# Disable `fork` feature to allow compiling on webassembly -default-features = false -features = ["std", "bit-set", "break-dead-code"] diff --git a/crates/ra_ide_db/src/line_index.rs b/crates/ra_ide_db/src/line_index.rs index 452c87ac51..af7b759e5c 100644 --- a/crates/ra_ide_db/src/line_index.rs +++ b/crates/ra_ide_db/src/line_index.rs @@ -124,31 +124,9 @@ impl LineIndex { } } -#[cfg(test)] -/// Simple reference implementation to use in proptests -pub fn to_line_col(text: &str, offset: TextUnit) -> LineCol { - let mut res = LineCol { line: 0, col_utf16: 0 }; - for (i, c) in text.char_indices() { - if i + c.len_utf8() > offset.to_usize() { - // if it's an invalid offset, inside a multibyte char - // return as if it was at the start of the char - break; - } - if c == '\n' { - res.line += 1; - res.col_utf16 = 0; - } else { - res.col_utf16 += 1; - } - } - res -} - #[cfg(test)] mod test_line_index { use super::*; - use proptest::{prelude::*, proptest}; - use ra_text_edit::test_utils::{arb_offset, arb_text}; #[test] fn test_line_index() { @@ -173,44 +151,6 @@ mod test_line_index { assert_eq!(index.line_col(7.into()), LineCol { line: 2, col_utf16: 0 }); } - fn arb_text_with_offset() -> BoxedStrategy<(TextUnit, String)> { - arb_text().prop_flat_map(|text| (arb_offset(&text), Just(text))).boxed() - } - - fn to_line_col(text: &str, offset: TextUnit) -> LineCol { - let mut res = LineCol { line: 0, col_utf16: 0 }; - for (i, c) in text.char_indices() { - if i + c.len_utf8() > offset.to_usize() { - // if it's an invalid offset, inside a multibyte char - // return as if it was at the start of the char - break; - } - if c == '\n' { - res.line += 1; - res.col_utf16 = 0; - } else { - res.col_utf16 += 1; - } - } - res - } - - proptest! { - #[test] - fn test_line_index_proptest((offset, text) in arb_text_with_offset()) { - let expected = to_line_col(&text, offset); - let line_index = LineIndex::new(&text); - let actual = line_index.line_col(offset); - - assert_eq!(actual, expected); - } - } -} - -#[cfg(test)] -mod test_utf8_utf16_conv { - use super::*; - #[test] fn test_char_len() { assert_eq!('メ'.len_utf8(), 3); diff --git a/crates/ra_ide_db/src/line_index_utils.rs b/crates/ra_ide_db/src/line_index_utils.rs index 435b065116..75a498151f 100644 --- a/crates/ra_ide_db/src/line_index_utils.rs +++ b/crates/ra_ide_db/src/line_index_utils.rs @@ -297,45 +297,3 @@ impl RunningLineCol { self.col_adjust += range.len() - TextUnit::from(1); } } - -#[cfg(test)] -mod test { - use proptest::{prelude::*, proptest}; - use ra_text_edit::test_utils::{arb_offset, arb_text_with_edit}; - use ra_text_edit::TextEdit; - - use crate::line_index; - - use super::*; - - #[derive(Debug)] - struct ArbTextWithEditAndOffset { - text: String, - edit: TextEdit, - edited_text: String, - offset: TextUnit, - } - - fn arb_text_with_edit_and_offset() -> BoxedStrategy { - arb_text_with_edit() - .prop_flat_map(|x| { - let edited_text = x.edit.apply(&x.text); - let arb_offset = arb_offset(&edited_text); - (Just(x), Just(edited_text), arb_offset).prop_map(|(x, edited_text, offset)| { - ArbTextWithEditAndOffset { text: x.text, edit: x.edit, edited_text, offset } - }) - }) - .boxed() - } - - proptest! { - #[test] - fn test_translate_offset_with_edit(x in arb_text_with_edit_and_offset()) { - let expected = line_index::to_line_col(&x.edited_text, x.offset); - let line_index = LineIndex::new(&x.text); - let actual = translate_offset_with_edit(&line_index, x.offset, &x.edit); - - assert_eq!(actual, expected); - } - } -} diff --git a/crates/ra_text_edit/Cargo.toml b/crates/ra_text_edit/Cargo.toml index 8573c521a2..4490ae43bc 100644 --- a/crates/ra_text_edit/Cargo.toml +++ b/crates/ra_text_edit/Cargo.toml @@ -11,11 +11,5 @@ doctest = false [dependencies] text_unit = "0.1.6" -[dependencies.proptest] -version = "0.9.0" -# Disable `fork` feature to allow compiling on webassembly -default-features = false -features = ["std", "bit-set", "break-dead-code"] - [dev-dependencies] test_utils = { path = "../test_utils" } diff --git a/crates/ra_text_edit/src/lib.rs b/crates/ra_text_edit/src/lib.rs index 37f23d0438..f6769e6a64 100644 --- a/crates/ra_text_edit/src/lib.rs +++ b/crates/ra_text_edit/src/lib.rs @@ -1,12 +1,11 @@ //! FIXME: write short doc here mod text_edit; -pub mod test_utils; - -pub use crate::text_edit::{TextEdit, TextEditBuilder}; use text_unit::{TextRange, TextUnit}; +pub use crate::text_edit::{TextEdit, TextEditBuilder}; + /// Must not overlap with other `AtomTextEdit`s #[derive(Debug, Clone)] pub struct AtomTextEdit { diff --git a/crates/ra_text_edit/src/test_utils.rs b/crates/ra_text_edit/src/test_utils.rs deleted file mode 100644 index d4c7840ffa..0000000000 --- a/crates/ra_text_edit/src/test_utils.rs +++ /dev/null @@ -1,83 +0,0 @@ -//! FIXME: write short doc here - -use crate::{AtomTextEdit, TextEdit}; -use proptest::prelude::*; -use text_unit::{TextRange, TextUnit}; - -pub fn arb_text() -> proptest::string::RegexGeneratorStrategy { - // generate multiple newlines - proptest::string::string_regex("(.*\n?)*").unwrap() -} - -fn text_offsets(text: &str) -> Vec { - text.char_indices().map(|(i, _)| TextUnit::from_usize(i)).collect() -} - -pub fn arb_offset(text: &str) -> BoxedStrategy { - let offsets = text_offsets(text); - // this is necessary to avoid "Uniform::new called with `low >= high`" panic - if offsets.is_empty() { - Just(TextUnit::from(0)).boxed() - } else { - prop::sample::select(offsets).boxed() - } -} - -pub fn arb_text_edit(text: &str) -> BoxedStrategy { - if text.is_empty() { - // only valid edits - return Just(vec![]) - .boxed() - .prop_union( - arb_text() - .prop_map(|text| vec![AtomTextEdit::insert(TextUnit::from(0), text)]) - .boxed(), - ) - .prop_map(TextEdit::from_atoms) - .boxed(); - } - - let offsets = text_offsets(text); - let max_cuts = 7.min(offsets.len()); - - proptest::sample::subsequence(offsets, 0..max_cuts) - .prop_flat_map(|cuts| { - let strategies: Vec<_> = cuts - .chunks(2) - .map(|chunk| match *chunk { - [from, to] => { - let range = TextRange::from_to(from, to); - Just(AtomTextEdit::delete(range)) - .boxed() - .prop_union( - arb_text() - .prop_map(move |text| AtomTextEdit::replace(range, text)) - .boxed(), - ) - .boxed() - } - [x] => arb_text().prop_map(move |text| AtomTextEdit::insert(x, text)).boxed(), - _ => unreachable!(), - }) - .collect(); - strategies - }) - .prop_map(TextEdit::from_atoms) - .boxed() -} - -#[derive(Debug, Clone)] -pub struct ArbTextWithEdit { - pub text: String, - pub edit: TextEdit, -} - -pub fn arb_text_with_edit() -> BoxedStrategy { - let text = arb_text(); - text.prop_flat_map(|s| { - let edit = arb_text_edit(&s); - (Just(s), edit) - }) - .prop_map(|(text, edit)| ArbTextWithEdit { text, edit }) - .boxed() -} diff --git a/xtask/tests/tidy-tests/docs.rs b/xtask/tests/tidy-tests/docs.rs index 6a69e7d6a0..7ae73b9344 100644 --- a/xtask/tests/tidy-tests/docs.rs +++ b/xtask/tests/tidy-tests/docs.rs @@ -1,5 +1,6 @@ use std::{collections::HashMap, fs, io::prelude::*, io::BufReader, path::Path}; +use anyhow::Context; use walkdir::{DirEntry, WalkDir}; use xtask::project_root; @@ -50,7 +51,10 @@ fn no_docs_comments() { } let mut reader = BufReader::new(fs::File::open(f.path()).unwrap()); let mut line = String::new(); - reader.read_line(&mut line).unwrap(); + reader + .read_line(&mut line) + .with_context(|| format!("Failed to read {}", f.path().display())) + .unwrap(); if line.starts_with("//!") { if line.contains("FIXME") {