| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 | 
# If you want to test a single file with single case, you can try this command:# RUST_LOG="debug" flutter test -j, --concurrency=1 'path to the file' --name 'test case name'[tasks.flutter_test]description = "Run flutter test with single case in single file. Input: cargo make flutter_test 'path to the file' --name 'test case name'"script = '''cd appflowy_flutterRUST_LOG="debug" flutter test -j, --concurrency=1 "${@}"'''script_runner = "@shell"[tasks.dart_unit_test]script = '''cargo make --profile test-macos-$(uname -m) run_dart_unit_test'''script_runner = "@shell"[tasks.dart_unit_test.windows]script = '''cargo make --profile test-windows run_dart_unit_test'''script_runner = "@shell"[tasks.dart_unit_test.linux]script = '''cargo make --profile test-linux run_dart_unit_test'''script_runner = "@shell"[tasks.run_dart_unit_test]env = { RUST_LOG = "info" }dependencies = ["inner_build_test_backend"]description = "Run flutter unit tests"script = '''cd appflowy_flutterflutter test --dart-define=RUST_LOG=${RUST_LOG} -j, --concurrency=1'''[tasks.rust_unit_test]run_task = { name = ["rust_lib_unit_test", "shared_lib_unit_test"] }[tasks.rust_lib_unit_test]env = { RUST_LOG = "info" }description = "Run rust-lib unit tests"script = '''cd rust-libcargo test --no-default-features --features="rev-sqlite"'''[tasks.shared_lib_unit_test]env = { RUST_LOG = "info" }description = "Run shared-lib unit test"script = '''cd ../shared-libcargo test --no-default-features'''[tasks.check_grcov]description = "Check if `grcov` is installled"script_runner = "@shell"script = '''export PATH=$PATH:"$HOME/.cargo/bin/"if command -v grcov > /dev/null; then  echo "Found 'grcov' executable."else  echo "[!] Could not find 'grcov' executable."  echo "[!] Please install 'grcov' by running 'cargo install grcov'."  echo "[!] You may also need to install 'llvm-tools-preview' using 'rustup component add llvm-tools-preview'."  echo "[!] If installed, check if 'grcov' is in PATH."  echo "[!] Exiting..."  exit -1fi'''[tasks.clean_profraw_files]description = "Cleans profraw files that are created by `cargo test`"script_runner = "@duckscript"script = ["""  rust_lib_profs = glob_array ./rust-lib/**/*.profraw  for prof in ${rust_lib_profs}    full_path = canonicalize ${prof}    rm ${full_path}  end  shared_lib_profs = glob_array ../shared-lib/**/*.profraw  for prof in ${shared_lib_profs}    full_path = canonicalize ${prof}    rm ${full_path}  end  """][tasks.run_rustlib_coverage_tests]description = "Run tests with coverage instrumentation"script_runner = "@shell"script = ["""  echo --- Running coverage tests ---  cd rust-lib/  CARGO_INCREMENTAL=0 \  RUSTFLAGS='-C instrument-coverage' \  LLVM_PROFILE_FILE='prof-%p-%m.profraw' \  cargo test --no-default-features --features="rev-sqlite"  """][tasks.run_sharedlib_coverage_tests]description = "Run tests with coverage instrumentation"script_runner = "@shell"script = ["""  echo --- Running coverage tests ---  cd ../shared-lib  CARGO_INCREMENTAL=0 \  RUSTFLAGS='-C instrument-coverage' \  LLVM_PROFILE_FILE='prof-%p-%m.profraw' \  cargo test --no-default-features  """][tasks.get_rustlib_grcov_report]description = "Get `grcov` HTML report for test coverage for rust-lib"script_runner = "@shell"script = [  """  echo --- Getting 'grcov' results for 'rust-lib' ---  cd rust-lib/  grcov . \  --binary-path target/debug/deps \  --source-dir . \  --output-type html \  --branch \  --ignore-not-existing \  --log-level WARN \  --output-path target/coverage-html  echo "--- Done! Generated HTML report under 'target/coverage-html' for rustlib."  """,][tasks.get_sharedlib_grcov_report]description = "Get `grcov` HTML report for test coverage shared-lib"script_runner = "@shell"script = [  """  echo --- Getting 'grcov' results 'shared-lib' ---  cd ../shared-lib  grcov . \  --binary-path target/debug/deps \  --source-dir . \  --output-type html \  --branch \  --ignore-not-existing \  --log-level WARN \  --output-path target/coverage-html  echo "--- Done! Generated HTML report under 'target/coverage-html' for sharedlib."  """,][tasks.get_grcov_report]description = "Get `grcov` HTML report for test coverage"run_task = { name = [  "get_rustlib_grcov_report",  "get_sharedlib_grcov_report",], parallel = true }[tasks.get_sharedlib_lcov_report]description = "Generates `lcov` report for `shared-lib`"script_runner = "@shell"script = ["""  echo Getting 'lcov' results for 'shared-lib'  cd ../shared-lib  grcov . \  --binary-path target/debug/deps \  --source-dir . \  --output-type lcov \  --branch \  --ignore-not-existing \  --log-level WARN \  --output-path target/coverage.lcov  echo "--- Done! Generated 'target/coverage.lcov' sharedlib."  """][tasks.get_rustlib_lcov_report]description = "Generates `lcov` report for `rust-lib`"script_runner = "@shell"script = ["""  echo Getting 'lcov' results for 'rust-lib'  cd rust-lib/  grcov . \  --binary-path target/debug/deps \  --source-dir . \  --output-type lcov \  --branch \  --ignore-not-existing \  --log-level WARN \  --output-path target/coverage.lcov  echo "--- Done! Generated 'target/coverage.lcov' for rustlib."  """][tasks.get_lcov_report]description = "Get `lcov` reports for test coverage"run_task = { name = [  "get_sharedlib_lcov_report",  "get_rustlib_lcov_report",], parallel = true }[tasks.rust_unit_test_with_coverage]description = "Run rust unit test with code coverage"run_task = { name = [  "check_grcov",  'appflowy-flutter-deps-tools',  "run_rustlib_coverage_tests",  "run_sharedlib_coverage_tests",  "get_lcov_report",  "clean_profraw_files",] }[tasks.build_test_backend]script = '''cargo make --profile test-macos-$(uname -m) inner_build_test_backend'''script_runner = "@shell"[tasks.build_test_backend.windows]script = '''cargo make --profile test-windows inner_build_test_backend'''script_runner = "@shell"[tasks.build_test_backend.linux]script = '''cargo make --profile test-linux inner_build_test_backend'''script_runner = "@shell"[tasks.inner_build_test_backend]category = "Build"dependencies = ["env_check"]run_task = { name = [  "setup-test-crate-type",  "compile_test_backend",  "copy-to-sandbox-folder",  "restore-test-crate-type",] }[tasks.compile_test_backend]mac_alias = "compile_test_backend_default"windows_alias = "compile_test_backend_windows"linux_alias = "compile_test_backend_default"[tasks.compile_test_backend_default]private = truescript = [  """    cd rust-lib/    rustup show    echo RUST_LOG=${RUST_LOG} cargo build --package=dart-ffi --target ${TEST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}"    RUST_LOG=${RUST_LOG} cargo build --package=dart-ffi --target ${TEST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}"    cd ../  """,]script_runner = "@shell"[tasks.compile_test_backend_windows]private = truescript = [  """    cd rust-lib/    rustup show    echo cargo build --package=dart-ffi --target ${TEST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}"    RUST_LOG=${RUST_LOG} cargo build --package=dart-ffi --target ${TEST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}"    cd ../  """,]script_runner = "@shell"[tasks.copy-to-sandbox-folder]mac_alias = "copy-to-sandbox-folder-default"windows_alias = "copy-to-sandbox-folder-windows"linux_alias = "copy-to-sandbox-folder-default"[tasks.copy-to-sandbox-folder-windows]private = truescript = [  """    # Copy the appflowy_backend lib to system temp directory for flutter unit test.    lib = set ${LIB_NAME}.${TEST_LIB_EXT}    dest = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/appflowy_flutter/.sandbox/${lib}    rm ${dest}    cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${TEST_COMPILE_TARGET}/${TEST_BUILD_FLAG}/${lib} \    ${dest}  """,]script_runner = "@duckscript"[tasks.copy-to-sandbox-folder-default]private = truescript = [  """    # Copy the appflowy_backend lib to system temp directory for flutter unit test.    lib = set lib${LIB_NAME}.${TEST_LIB_EXT}    dest = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/appflowy_flutter/.sandbox/${lib}    rm ${dest}    cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${TEST_COMPILE_TARGET}/${TEST_BUILD_FLAG}/${lib} \    ${dest}  """,]script_runner = "@duckscript"
 |