summaryrefslogtreecommitdiffstats
path: root/vendor/git2/tests
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/git2/tests')
-rw-r--r--vendor/git2/tests/add_extensions.rs21
-rw-r--r--vendor/git2/tests/get_extensions.rs16
-rw-r--r--vendor/git2/tests/global_state.rs47
-rw-r--r--vendor/git2/tests/remove_extensions.rs19
4 files changed, 103 insertions, 0 deletions
diff --git a/vendor/git2/tests/add_extensions.rs b/vendor/git2/tests/add_extensions.rs
new file mode 100644
index 000000000..7d80b705d
--- /dev/null
+++ b/vendor/git2/tests/add_extensions.rs
@@ -0,0 +1,21 @@
+//! Test for `set_extensions`, which writes a global state maintained by libgit2
+
+use git2::opts::{get_extensions, set_extensions};
+use git2::Error;
+
+#[test]
+fn test_add_extensions() -> Result<(), Error> {
+ unsafe {
+ set_extensions(&["custom"])?;
+ }
+
+ let extensions = unsafe { get_extensions() }?;
+
+ assert_eq!(extensions.len(), 3);
+ assert_eq!(extensions.get(0), Some("noop"));
+ // The objectformat extension was added in 1.6
+ assert_eq!(extensions.get(1), Some("objectformat"));
+ assert_eq!(extensions.get(2), Some("custom"));
+
+ Ok(())
+}
diff --git a/vendor/git2/tests/get_extensions.rs b/vendor/git2/tests/get_extensions.rs
new file mode 100644
index 000000000..d8dd55fe0
--- /dev/null
+++ b/vendor/git2/tests/get_extensions.rs
@@ -0,0 +1,16 @@
+//! Test for `get_extensions`, which reads a global state maintained by libgit2
+
+use git2::opts::get_extensions;
+use git2::Error;
+
+#[test]
+fn test_get_extensions() -> Result<(), Error> {
+ let extensions = unsafe { get_extensions() }?;
+
+ assert_eq!(extensions.len(), 2);
+ assert_eq!(extensions.get(0), Some("noop"));
+ // The objectformat extension was added in 1.6
+ assert_eq!(extensions.get(1), Some("objectformat"));
+
+ Ok(())
+}
diff --git a/vendor/git2/tests/global_state.rs b/vendor/git2/tests/global_state.rs
new file mode 100644
index 000000000..192acdbd3
--- /dev/null
+++ b/vendor/git2/tests/global_state.rs
@@ -0,0 +1,47 @@
+//! Test for some global state set up by libgit2's `git_libgit2_init` function
+//! that need to be synchronized within a single process.
+
+use git2::opts;
+use git2::{ConfigLevel, IntoCString};
+
+// Test for mutating configuration file search path which is set during
+// initialization in libgit2's `git_sysdir_global_init` function.
+#[test]
+fn search_path() -> Result<(), Box<dyn std::error::Error>> {
+ use std::env::join_paths;
+
+ let path = "fake_path";
+ let original = unsafe { opts::get_search_path(ConfigLevel::Global) };
+ assert_ne!(original, Ok(path.into_c_string()?));
+
+ // Set
+ unsafe {
+ opts::set_search_path(ConfigLevel::Global, &path)?;
+ }
+ assert_eq!(
+ unsafe { opts::get_search_path(ConfigLevel::Global) },
+ Ok(path.into_c_string()?)
+ );
+
+ // Append
+ let paths = join_paths(["$PATH", path].iter())?;
+ let expected_paths = join_paths([path, path].iter())?.into_c_string()?;
+ unsafe {
+ opts::set_search_path(ConfigLevel::Global, paths)?;
+ }
+ assert_eq!(
+ unsafe { opts::get_search_path(ConfigLevel::Global) },
+ Ok(expected_paths)
+ );
+
+ // Reset
+ unsafe {
+ opts::reset_search_path(ConfigLevel::Global)?;
+ }
+ assert_eq!(
+ unsafe { opts::get_search_path(ConfigLevel::Global) },
+ original
+ );
+
+ Ok(())
+}
diff --git a/vendor/git2/tests/remove_extensions.rs b/vendor/git2/tests/remove_extensions.rs
new file mode 100644
index 000000000..5f632a880
--- /dev/null
+++ b/vendor/git2/tests/remove_extensions.rs
@@ -0,0 +1,19 @@
+//! Test for `set_extensions`, which writes a global state maintained by libgit2
+
+use git2::opts::{get_extensions, set_extensions};
+use git2::Error;
+
+#[test]
+fn test_remove_extensions() -> Result<(), Error> {
+ unsafe {
+ set_extensions(&["custom", "!ignore", "!noop", "!objectformat", "other"])?;
+ }
+
+ let extensions = unsafe { get_extensions() }?;
+
+ assert_eq!(extensions.len(), 2);
+ assert_eq!(extensions.get(0), Some("custom"));
+ assert_eq!(extensions.get(1), Some("other"));
+
+ Ok(())
+}