|
|
@@ -231,3 +231,63 @@ fn test_workspace_metadata_tools_version() {
|
|
|
run_cargo_build("workspace-metadata", &[], false);
|
|
|
clean_target("workspace-metadata");
|
|
|
}
|
|
|
+
|
|
|
+#[test]
|
|
|
+#[serial]
|
|
|
+fn test_corrupted_toolchain() {
|
|
|
+ run_cargo_build("noop", &[], false);
|
|
|
+
|
|
|
+ fn assert_failed_command() {
|
|
|
+ let cwd = env::current_dir().expect("Unable to get current working directory");
|
|
|
+ let toml = cwd
|
|
|
+ .join("tests")
|
|
|
+ .join("crates")
|
|
|
+ .join("noop")
|
|
|
+ .join("Cargo.toml");
|
|
|
+ let toml = format!("{}", toml.display());
|
|
|
+ let args = vec!["--sbf-sdk", "../sbf", "--manifest-path", &toml];
|
|
|
+
|
|
|
+ let mut cmd = assert_cmd::Command::cargo_bin("cargo-build-sbf").unwrap();
|
|
|
+ let assert = cmd.env("RUST_LOG", "debug").args(&args).assert();
|
|
|
+ let output = assert.get_output();
|
|
|
+
|
|
|
+ assert!(
|
|
|
+ String::from_utf8_lossy(&output.stderr).contains("The Solana toolchain is corrupted.")
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ let cwd = env::current_dir().expect("Unable to get current working directory");
|
|
|
+ let sdk_path = cwd.parent().unwrap().join("sbf");
|
|
|
+
|
|
|
+ let bin_folder = sdk_path
|
|
|
+ .join("dependencies")
|
|
|
+ .join("platform-tools")
|
|
|
+ .join("rust")
|
|
|
+ .join("bin");
|
|
|
+ fs::rename(bin_folder.join("cargo"), bin_folder.join("cargo_2"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+
|
|
|
+ assert_failed_command();
|
|
|
+
|
|
|
+ fs::rename(bin_folder.join("cargo_2"), bin_folder.join("cargo"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+ fs::rename(bin_folder.join("rustc"), bin_folder.join("rustc_2"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+
|
|
|
+ assert_failed_command();
|
|
|
+
|
|
|
+ fs::rename(bin_folder.join("rustc_2"), bin_folder.join("rustc"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+ fs::rename(&bin_folder, bin_folder.parent().unwrap().join("bin2"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+
|
|
|
+ assert_failed_command();
|
|
|
+
|
|
|
+ fs::rename(bin_folder.parent().unwrap().join("bin2"), &bin_folder)
|
|
|
+ .expect("Failed to rename file");
|
|
|
+ let rust_folder = bin_folder.parent().unwrap();
|
|
|
+ fs::rename(rust_folder, rust_folder.parent().unwrap().join("rust_2"))
|
|
|
+ .expect("Failed to rename file");
|
|
|
+
|
|
|
+ assert_failed_command();
|
|
|
+}
|