mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: enable rust_unit_test on windows (#1630)
This commit is contained in:
@ -966,7 +966,7 @@ packages:
|
|||||||
name: reorderables
|
name: reorderables
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
version: "0.5.1"
|
||||||
rich_clipboard:
|
rich_clipboard:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -77,7 +77,7 @@ dependencies:
|
|||||||
device_info_plus: ^3.2.1
|
device_info_plus: ^3.2.1
|
||||||
fluttertoast: ^8.0.9
|
fluttertoast: ^8.0.9
|
||||||
table_calendar: ^3.0.5
|
table_calendar: ^3.0.5
|
||||||
reorderables: ^0.5.0
|
reorderables: ^0.5.1
|
||||||
linked_scroll_controller: ^0.2.0
|
linked_scroll_controller: ^0.2.0
|
||||||
hotkey_manager: ^0.1.7
|
hotkey_manager: ^0.1.7
|
||||||
fixnum: ^1.0.1
|
fixnum: ^1.0.1
|
||||||
|
@ -22,7 +22,7 @@ pub fn gen(crate_name: &str) {
|
|||||||
|
|
||||||
let crate_path = std::fs::canonicalize(".").unwrap().as_path().display().to_string();
|
let crate_path = std::fs::canonicalize(".").unwrap().as_path().display().to_string();
|
||||||
let event_crates = parse_dart_event_files(vec![crate_path]);
|
let event_crates = parse_dart_event_files(vec![crate_path]);
|
||||||
let event_ast = event_crates.iter().map(parse_event_crate).flatten().collect::<Vec<_>>();
|
let event_ast = event_crates.iter().flat_map(parse_event_crate).collect::<Vec<_>>();
|
||||||
|
|
||||||
let event_render_ctx = ast_to_event_render_ctx(event_ast.as_ref());
|
let event_render_ctx = ast_to_event_render_ctx(event_ast.as_ref());
|
||||||
let mut render_result = DART_IMPORTED.to_owned();
|
let mut render_result = DART_IMPORTED.to_owned();
|
||||||
@ -109,14 +109,14 @@ pub fn parse_event_crate(event_crate: &DartEventCrate) -> Vec<EventASTContext> {
|
|||||||
event_crate
|
event_crate
|
||||||
.event_files
|
.event_files
|
||||||
.iter()
|
.iter()
|
||||||
.map(|event_file| {
|
.flat_map(|event_file| {
|
||||||
let file_path = path_string_with_component(&event_crate.crate_path, vec![event_file.as_str()]);
|
let file_path = path_string_with_component(&event_crate.crate_path, vec![event_file.as_str()]);
|
||||||
|
|
||||||
let file_content = read_file(file_path.as_ref()).unwrap();
|
let file_content = read_file(file_path.as_ref()).unwrap();
|
||||||
let ast = syn::parse_file(file_content.as_ref()).expect("Unable to parse file");
|
let ast = syn::parse_file(file_content.as_ref()).expect("Unable to parse file");
|
||||||
ast.items
|
ast.items
|
||||||
.iter()
|
.iter()
|
||||||
.map(|item| match item {
|
.flat_map(|item| match item {
|
||||||
Item::Enum(item_enum) => {
|
Item::Enum(item_enum) => {
|
||||||
let ast_result = ASTResult::new();
|
let ast_result = ASTResult::new();
|
||||||
let attrs = flowy_ast::enum_from_ast(
|
let attrs = flowy_ast::enum_from_ast(
|
||||||
@ -135,10 +135,8 @@ pub fn parse_event_crate(event_crate: &DartEventCrate) -> Vec<EventASTContext> {
|
|||||||
}
|
}
|
||||||
_ => vec![],
|
_ => vec![],
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect::<Vec<EventASTContext>>()
|
.collect::<Vec<EventASTContext>>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,9 +87,9 @@ fn generate_rust_protobuf_files(
|
|||||||
fn generate_dart_protobuf_files(
|
fn generate_dart_protobuf_files(
|
||||||
name: &str,
|
name: &str,
|
||||||
proto_file_output_path: &str,
|
proto_file_output_path: &str,
|
||||||
paths: &Vec<String>,
|
paths: &[String],
|
||||||
file_names: &Vec<String>,
|
file_names: &Vec<String>,
|
||||||
protoc_bin_path: &PathBuf,
|
protoc_bin_path: &Path,
|
||||||
) {
|
) {
|
||||||
if std::env::var("CARGO_MAKE_WORKING_DIRECTORY").is_err() {
|
if std::env::var("CARGO_MAKE_WORKING_DIRECTORY").is_err() {
|
||||||
log::warn!("CARGO_MAKE_WORKING_DIRECTORY was not set, skip generate dart pb");
|
log::warn!("CARGO_MAKE_WORKING_DIRECTORY was not set, skip generate dart pb");
|
||||||
|
@ -18,7 +18,7 @@ lib-dispatch = { path = "../lib-dispatch" }
|
|||||||
flowy-database = { path = "../flowy-database" }
|
flowy-database = { path = "../flowy-database" }
|
||||||
flowy-revision = { path = "../flowy-revision" }
|
flowy-revision = { path = "../flowy-revision" }
|
||||||
flowy-error = { path = "../flowy-error", features = ["collaboration", "ot", "http_server", "serde", "db"] }
|
flowy-error = { path = "../flowy-error", features = ["collaboration", "ot", "http_server", "serde", "db"] }
|
||||||
dart-notify = { path = "../dart-notify", features = ["dart"] }
|
dart-notify = { path = "../dart-notify" }
|
||||||
|
|
||||||
diesel = {version = "1.4.8", features = ["sqlite"]}
|
diesel = {version = "1.4.8", features = ["sqlite"]}
|
||||||
diesel_derives = {version = "1.4.1", features = ["sqlite"]}
|
diesel_derives = {version = "1.4.1", features = ["sqlite"]}
|
||||||
@ -59,4 +59,4 @@ flowy-codegen = { path = "../flowy-codegen"}
|
|||||||
sync = []
|
sync = []
|
||||||
cloud_sync = ["sync"]
|
cloud_sync = ["sync"]
|
||||||
flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"]
|
flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"]
|
||||||
dart = ["flowy-codegen/dart"]
|
dart = ["flowy-codegen/dart", "dart-notify/dart"]
|
@ -16,7 +16,7 @@ lib-infra = { path = "../../../shared-lib/lib-infra" }
|
|||||||
flowy-document = { path = "../flowy-document" }
|
flowy-document = { path = "../flowy-document" }
|
||||||
flowy-database = { path = "../flowy-database" }
|
flowy-database = { path = "../flowy-database" }
|
||||||
flowy-error = { path = "../flowy-error", features = ["db", "http_server"]}
|
flowy-error = { path = "../flowy-error", features = ["db", "http_server"]}
|
||||||
dart-notify = { path = "../dart-notify", features = ["dart"] }
|
dart-notify = { path = "../dart-notify" }
|
||||||
lib-dispatch = { path = "../lib-dispatch" }
|
lib-dispatch = { path = "../lib-dispatch" }
|
||||||
flowy-revision = { path = "../flowy-revision" }
|
flowy-revision = { path = "../flowy-revision" }
|
||||||
|
|
||||||
@ -50,4 +50,4 @@ default = []
|
|||||||
sync = []
|
sync = []
|
||||||
cloud_sync = ["sync"]
|
cloud_sync = ["sync"]
|
||||||
flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"]
|
flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-revision/flowy_unit_test"]
|
||||||
dart = ["flowy-codegen/dart"]
|
dart = ["flowy-codegen/dart", "dart-notify/dart"]
|
@ -7,7 +7,7 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
lib-dispatch = { path = "../lib-dispatch" }
|
lib-dispatch = { path = "../lib-dispatch" }
|
||||||
dart-notify = { path = "../dart-notify", features = ["dart"] }
|
dart-notify = { path = "../dart-notify" }
|
||||||
flowy-revision = { path = "../flowy-revision" }
|
flowy-revision = { path = "../flowy-revision" }
|
||||||
flowy-task= { path = "../flowy-task" }
|
flowy-task= { path = "../flowy-task" }
|
||||||
flowy-error = { path = "../flowy-error", features = ["db"]}
|
flowy-error = { path = "../flowy-error", features = ["db"]}
|
||||||
@ -56,5 +56,5 @@ flowy-codegen = { path = "../flowy-codegen"}
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
dart = ["flowy-codegen/dart"]
|
dart = ["flowy-codegen/dart", "dart-notify/dart"]
|
||||||
flowy_unit_test = ["flowy-revision/flowy_unit_test"]
|
flowy_unit_test = ["flowy-revision/flowy_unit_test"]
|
@ -69,7 +69,7 @@ impl TypeOptionTransform for RichTextTypeOptionPB {
|
|||||||
{
|
{
|
||||||
Some(stringify_cell_data(cell_str.to_owned(), decoded_field_type, decoded_field_type, field_rev).into())
|
Some(stringify_cell_data(cell_str.to_owned(), decoded_field_type, decoded_field_type, field_rev).into())
|
||||||
} else {
|
} else {
|
||||||
StrCellData::from_cell_str(&cell_str).ok()
|
StrCellData::from_cell_str(cell_str).ok()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ async fn grid_switch_from_multi_select_to_text_test() {
|
|||||||
let mut test = GridFieldTest::new().await;
|
let mut test = GridFieldTest::new().await;
|
||||||
let field_rev = test.get_first_field_rev(FieldType::MultiSelect).clone();
|
let field_rev = test.get_first_field_rev(FieldType::MultiSelect).clone();
|
||||||
|
|
||||||
let mut multi_select_type_option = test.get_multi_select_type_option(&field_rev.id);
|
let multi_select_type_option = test.get_multi_select_type_option(&field_rev.id);
|
||||||
|
|
||||||
let script_switch_field = vec![SwitchToField {
|
let script_switch_field = vec![SwitchToField {
|
||||||
field_id: field_rev.id.clone(),
|
field_id: field_rev.id.clone(),
|
||||||
@ -221,8 +221,8 @@ async fn grid_switch_from_multi_select_to_text_test() {
|
|||||||
from_field_type: FieldType::MultiSelect,
|
from_field_type: FieldType::MultiSelect,
|
||||||
expected_content: format!(
|
expected_content: format!(
|
||||||
"{},{}",
|
"{},{}",
|
||||||
multi_select_type_option.get_mut(0).unwrap().name.to_string(),
|
multi_select_type_option.get(0).unwrap().name,
|
||||||
multi_select_type_option.get_mut(1).unwrap().name.to_string()
|
multi_select_type_option.get(1).unwrap().name
|
||||||
),
|
),
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ impl<C> RevisionMemoryCacheDelegate for Arc<dyn RevisionDiskCache<C, Error = Flo
|
|||||||
fn receive_ack(&self, object_id: &str, rev_id: i64) {
|
fn receive_ack(&self, object_id: &str, rev_id: i64) {
|
||||||
let changeset = RevisionChangeset {
|
let changeset = RevisionChangeset {
|
||||||
object_id: object_id.to_string(),
|
object_id: object_id.to_string(),
|
||||||
rev_id: rev_id.into(),
|
rev_id,
|
||||||
state: RevisionState::Ack,
|
state: RevisionState::Ack,
|
||||||
};
|
};
|
||||||
match self.update_revision_record(vec![changeset]) {
|
match self.update_revision_record(vec![changeset]) {
|
||||||
|
@ -11,7 +11,7 @@ flowy-database = { path = "../flowy-database" }
|
|||||||
flowy-error = { path = "../flowy-error", features = ["db", "http_server"] }
|
flowy-error = { path = "../flowy-error", features = ["db", "http_server"] }
|
||||||
|
|
||||||
lib-infra = { path = "../../../shared-lib/lib-infra" }
|
lib-infra = { path = "../../../shared-lib/lib-infra" }
|
||||||
dart-notify = { path = "../dart-notify", features = ["dart"] }
|
dart-notify = { path = "../dart-notify" }
|
||||||
lib-dispatch = { path = "../lib-dispatch" }
|
lib-dispatch = { path = "../lib-dispatch" }
|
||||||
|
|
||||||
tracing = { version = "0.1", features = ["log"] }
|
tracing = { version = "0.1", features = ["log"] }
|
||||||
@ -45,7 +45,7 @@ rand_core = "0.6.3"
|
|||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
dart = ["flowy-codegen/dart"]
|
dart = ["flowy-codegen/dart", "dart-notify/dart"]
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
flowy-codegen = { path = "../flowy-codegen"}
|
flowy-codegen = { path = "../flowy-codegen"}
|
||||||
|
@ -4,6 +4,7 @@ use flowy_database::{schema::user_table, DBConnection, Database};
|
|||||||
use flowy_error::{ErrorCode, FlowyError};
|
use flowy_error::{ErrorCode, FlowyError};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::{collections::HashMap, sync::Arc, time::Duration};
|
use std::{collections::HashMap, sync::Arc, time::Duration};
|
||||||
|
|
||||||
pub struct UserDB {
|
pub struct UserDB {
|
||||||
@ -34,7 +35,11 @@ impl UserDB {
|
|||||||
Some(database) => return Ok(database.get_pool()),
|
Some(database) => return Ok(database.get_pool()),
|
||||||
}
|
}
|
||||||
|
|
||||||
let dir = format!("{}/{}", self.db_dir, user_id);
|
let mut dir = PathBuf::new();
|
||||||
|
dir.push(&self.db_dir);
|
||||||
|
dir.push(user_id);
|
||||||
|
let dir = dir.to_str().unwrap().to_owned();
|
||||||
|
|
||||||
tracing::trace!("open user db {} at path: {}", user_id, dir);
|
tracing::trace!("open user db {} at path: {}", user_id, dir);
|
||||||
let db = flowy_database::init(&dir).map_err(|e| {
|
let db = flowy_database::init(&dir).map_err(|e| {
|
||||||
log::error!("open user: {} db failed, {:?}", user_id, e);
|
log::error!("open user: {} db failed, {:?}", user_id, e);
|
||||||
|
@ -1,21 +1,15 @@
|
|||||||
|
|
||||||
[tasks.dart_unit_test.macos]
|
[tasks.dart_unit_test]
|
||||||
description = "Run flutter unit tests"
|
|
||||||
script = '''
|
script = '''
|
||||||
cargo make --profile test-macos dart_unit_test_inner
|
cargo make dart_unit_test_inner
|
||||||
'''
|
|
||||||
|
|
||||||
[tasks.dart_unit_test.linux]
|
|
||||||
description = "Run flutter unit tests"
|
|
||||||
script = '''
|
|
||||||
cargo make --profile test-linux dart_unit_test_inner
|
|
||||||
'''
|
'''
|
||||||
|
script_runner = "@shell"
|
||||||
|
|
||||||
[tasks.dart_unit_test.windows]
|
[tasks.dart_unit_test.windows]
|
||||||
description = "Run flutter unit tests"
|
|
||||||
script = '''
|
script = '''
|
||||||
cargo make --profile test-windows dart_unit_test_inner
|
cargo make --profile test-windows dart_unit_test_inner
|
||||||
'''
|
'''
|
||||||
|
script_runner = "@shell"
|
||||||
|
|
||||||
[tasks.dart_unit_test_inner]
|
[tasks.dart_unit_test_inner]
|
||||||
dependencies = ["build-test-lib"]
|
dependencies = ["build-test-lib"]
|
||||||
@ -32,14 +26,14 @@ run_task = { name = ["rust_lib_unit_test", "shared_lib_unit_test"] }
|
|||||||
description = "Run rust-lib unit tests"
|
description = "Run rust-lib unit tests"
|
||||||
script = '''
|
script = '''
|
||||||
cd rust-lib
|
cd rust-lib
|
||||||
RUST_LOG=info cargo test --no-default-features --features="sync"
|
cargo test --no-default-features --features="sync"
|
||||||
'''
|
'''
|
||||||
|
|
||||||
[tasks.shared_lib_unit_test]
|
[tasks.shared_lib_unit_test]
|
||||||
description = "Run shared-lib unit test"
|
description = "Run shared-lib unit test"
|
||||||
script = '''
|
script = '''
|
||||||
cd ../shared-lib
|
cd ../shared-lib
|
||||||
RUST_LOG=info cargo test --no-default-features
|
cargo test --no-default-features
|
||||||
'''
|
'''
|
||||||
|
|
||||||
[tasks.check_grcov]
|
[tasks.check_grcov]
|
||||||
|
Reference in New Issue
Block a user