aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/composer_test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/tests/composer_test.rs')
-rw-r--r--crates/shirabe/tests/composer_test.rs108
1 files changed, 108 insertions, 0 deletions
diff --git a/crates/shirabe/tests/composer_test.rs b/crates/shirabe/tests/composer_test.rs
index 40fd139..bd417e9 100644
--- a/crates/shirabe/tests/composer_test.rs
+++ b/crates/shirabe/tests/composer_test.rs
@@ -1 +1,109 @@
//! ref: composer/tests/Composer/Test/ComposerTest.php
+
+use std::cell::RefCell;
+use std::rc::Rc;
+
+use indexmap::IndexMap;
+use shirabe::composer::Composer;
+use shirabe::config::Config;
+use shirabe::downloader::DownloadManager;
+use shirabe::installer::InstallationManager;
+use shirabe::io::IOInterface;
+use shirabe::io::null_io::NullIO;
+use shirabe::json::JsonFile;
+use shirabe::package::{Locker, RootPackageHandle, RootPackageInterfaceHandle};
+use shirabe::repository::RepositoryManager;
+use shirabe::util::http_downloader::HttpDownloader;
+use shirabe::util::process_executor::ProcessExecutor;
+use shirabe::util::r#loop::Loop;
+
+fn null_io() -> Rc<RefCell<dyn IOInterface>> {
+ Rc::new(RefCell::new(NullIO::new()))
+}
+
+fn http_downloader(io: &Rc<RefCell<dyn IOInterface>>) -> Rc<RefCell<HttpDownloader>> {
+ let config = Rc::new(RefCell::new(Config::new(false, None)));
+ Rc::new(RefCell::new(HttpDownloader::new(
+ io.clone(),
+ config,
+ IndexMap::new(),
+ true,
+ )))
+}
+
+fn installation_manager(io: &Rc<RefCell<dyn IOInterface>>) -> Rc<RefCell<InstallationManager>> {
+ let r#loop = Rc::new(RefCell::new(Loop::new(http_downloader(io), None)));
+ Rc::new(RefCell::new(InstallationManager::new(
+ r#loop,
+ io.clone(),
+ None,
+ )))
+}
+
+#[test]
+fn test_set_get_package() {
+ let mut composer = Composer::new();
+ let package: RootPackageInterfaceHandle =
+ RootPackageHandle::new("foo".to_string(), "1.0.0.0".to_string(), "1.0.0".to_string())
+ .into();
+ composer.set_package(package.clone());
+
+ assert!(composer.get_package().ptr_eq(&package));
+}
+
+#[test]
+#[ignore = "Locker construction builds an HttpDownloader, which reaches curl_multi_init (todo!()) in the php-shim"]
+fn test_set_get_locker() {
+ let mut composer = Composer::new();
+ let io = null_io();
+ let json_file = JsonFile::new("composer.lock".to_string(), None, None).unwrap();
+ let process = Rc::new(RefCell::new(ProcessExecutor::new(Some(io.clone()))));
+ let locker = Rc::new(RefCell::new(Locker::new(
+ io.clone(),
+ json_file,
+ installation_manager(&io),
+ "{}",
+ process,
+ )));
+ composer.set_locker(locker.clone());
+
+ assert!(Rc::ptr_eq(&composer.get_locker(), &locker));
+}
+
+#[test]
+#[ignore = "RepositoryManager construction builds an HttpDownloader, which reaches curl_multi_init (todo!()) in the php-shim"]
+fn test_set_get_repository_manager() {
+ let mut composer = Composer::new();
+ let io = null_io();
+ let config = Rc::new(RefCell::new(Config::new(false, None)));
+ let manager = Rc::new(RefCell::new(RepositoryManager::new(
+ io.clone(),
+ config,
+ http_downloader(&io),
+ None,
+ None,
+ )));
+ composer.set_repository_manager(manager.clone());
+
+ assert!(Rc::ptr_eq(&composer.get_repository_manager(), &manager));
+}
+
+#[test]
+fn test_set_get_download_manager() {
+ let mut composer = Composer::new();
+ let manager = Rc::new(RefCell::new(DownloadManager::new(null_io(), false, None)));
+ composer.set_download_manager(manager.clone());
+
+ assert!(Rc::ptr_eq(&composer.get_download_manager(), &manager));
+}
+
+#[test]
+#[ignore = "InstallationManager construction builds a Loop/HttpDownloader, which reaches curl_multi_init (todo!()) in the php-shim"]
+fn test_set_get_installation_manager() {
+ let mut composer = Composer::new();
+ let io = null_io();
+ let manager = installation_manager(&io);
+ composer.set_installation_manager(manager.clone());
+
+ assert!(Rc::ptr_eq(&composer.get_installation_manager(), &manager));
+}