From 717045c295809801e7325c85ae61be208285d89e Mon Sep 17 00:00:00 2001 From: zongz Date: Thu, 8 Jun 2023 17:19:51 +0800 Subject: [PATCH 1/4] fix: rm the 'Result::unwrap()' in lsp. --- kclvm/driver/src/kpm_metadata.rs | 27 +++++++++++++++------------ kclvm/driver/src/tests.rs | 5 +++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/kclvm/driver/src/kpm_metadata.rs b/kclvm/driver/src/kpm_metadata.rs index d0f2ba13c..058e54bd3 100644 --- a/kclvm/driver/src/kpm_metadata.rs +++ b/kclvm/driver/src/kpm_metadata.rs @@ -57,22 +57,25 @@ impl Metadata { /// [`fetch_metadata`] will call `kpm metadata` to obtain the metadata. pub fn fetch_metadata(manifest_path: PathBuf) -> Result { - let output = Command::new(kpm()) + use std::result::Result::Ok; + match Command::new(kpm()) .arg("metadata") .current_dir(manifest_path) .output() - .unwrap(); - - if !output.status.success() { - bail!( - "fetch workspace failed with error: {}", - String::from_utf8_lossy(&output.stderr) - ); + { + Ok(output) => { + if !output.status.success() { + bail!( + "fetch workspace failed with error: {}", + String::from_utf8_lossy(&output.stderr) + ); + } + Ok(Metadata::parse( + String::from_utf8_lossy(&output.stdout).to_string(), + )?) + } + Err(_) => return Ok(Metadata::default()), } - - Ok(Metadata::parse( - String::from_utf8_lossy(&output.stdout).to_string(), - )?) } /// [`lookup_the_nearest_file_dir`] will start from [`from`] and search for file [`the_nearest_file`] in the parent directories. diff --git a/kclvm/driver/src/tests.rs b/kclvm/driver/src/tests.rs index 6a9ffdb26..4b9ed886c 100644 --- a/kclvm/driver/src/tests.rs +++ b/kclvm/driver/src/tests.rs @@ -196,3 +196,8 @@ fn test_fetch_metadata() { .to_string() ); } + +#[test] +fn test_fetch_metadata_invalid() { + fetch_metadata("invalid_path".to_string().into()).expect("This method can not panic."); +} From a3c58c9a112970cd58138720c12f8088ce5e5a60 Mon Sep 17 00:00:00 2001 From: zongz Date: Thu, 8 Jun 2023 17:43:23 +0800 Subject: [PATCH 2/4] fix: return error if kpm metadata failed. --- kclvm/driver/src/kpm_metadata.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kclvm/driver/src/kpm_metadata.rs b/kclvm/driver/src/kpm_metadata.rs index 058e54bd3..a8d615fa2 100644 --- a/kclvm/driver/src/kpm_metadata.rs +++ b/kclvm/driver/src/kpm_metadata.rs @@ -66,7 +66,7 @@ pub fn fetch_metadata(manifest_path: PathBuf) -> Result { Ok(output) => { if !output.status.success() { bail!( - "fetch workspace failed with error: {}", + "fetch metadata failed with error: {}", String::from_utf8_lossy(&output.stderr) ); } @@ -74,7 +74,7 @@ pub fn fetch_metadata(manifest_path: PathBuf) -> Result { String::from_utf8_lossy(&output.stdout).to_string(), )?) } - Err(_) => return Ok(Metadata::default()), + Err(err) => bail!("fetch metadata failed with error: {}", err), } } From 728cf031b5ee7ddb7f44f3e281897510a932860b Mon Sep 17 00:00:00 2001 From: zongz Date: Thu, 8 Jun 2023 17:57:56 +0800 Subject: [PATCH 3/4] fix: fix test cases --- kclvm/driver/src/tests.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/kclvm/driver/src/tests.rs b/kclvm/driver/src/tests.rs index 4b9ed886c..4179264d0 100644 --- a/kclvm/driver/src/tests.rs +++ b/kclvm/driver/src/tests.rs @@ -1,4 +1,4 @@ -use std::env; +use std::{env, panic}; use std::path::{Path, PathBuf}; use kclvm_config::modfile::get_vendor_home; @@ -199,5 +199,16 @@ fn test_fetch_metadata() { #[test] fn test_fetch_metadata_invalid() { - fetch_metadata("invalid_path".to_string().into()).expect("This method can not panic."); + let result = panic::catch_unwind(|| { + let result = fetch_metadata("invalid_path".to_string().into()); + match result { + Ok(_) => {panic!("The method should not return Ok")}, + Err(_) => {println!("return with an error.")}, + } + }); + + match result { + Ok(_) => println!("no panic"), + Err(e) => panic!("The method should not panic forever.: {:?}", e), + } } From ace4f06bcde618721918a7ebd0ae2adb51f8389e Mon Sep 17 00:00:00 2001 From: zongz Date: Thu, 8 Jun 2023 18:04:04 +0800 Subject: [PATCH 4/4] fix: make fmt. --- kclvm/driver/src/tests.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/kclvm/driver/src/tests.rs b/kclvm/driver/src/tests.rs index 4179264d0..80c125c5e 100644 --- a/kclvm/driver/src/tests.rs +++ b/kclvm/driver/src/tests.rs @@ -1,5 +1,5 @@ -use std::{env, panic}; use std::path::{Path, PathBuf}; +use std::{env, panic}; use kclvm_config::modfile::get_vendor_home; use kclvm_config::settings::KeyValuePair; @@ -200,15 +200,19 @@ fn test_fetch_metadata() { #[test] fn test_fetch_metadata_invalid() { let result = panic::catch_unwind(|| { - let result = fetch_metadata("invalid_path".to_string().into()); + let result = fetch_metadata("invalid_path".to_string().into()); match result { - Ok(_) => {panic!("The method should not return Ok")}, - Err(_) => {println!("return with an error.")}, + Ok(_) => { + panic!("The method should not return Ok") + } + Err(_) => { + println!("return with an error.") + } } }); match result { Ok(_) => println!("no panic"), Err(e) => panic!("The method should not panic forever.: {:?}", e), - } + } }