diff options
Diffstat (limited to 'vendor/gix-submodule/tests')
-rw-r--r-- | vendor/gix-submodule/tests/file/baseline.rs | 80 | ||||
-rw-r--r-- | vendor/gix-submodule/tests/file/mod.rs | 453 | ||||
-rwxr-xr-x | vendor/gix-submodule/tests/fixtures/basic.sh | 48 | ||||
-rw-r--r-- | vendor/gix-submodule/tests/fixtures/generated-archives/basic.tar.xz | bin | 32472 -> 0 bytes | |||
-rw-r--r-- | vendor/gix-submodule/tests/submodule.rs | 3 |
5 files changed, 0 insertions, 584 deletions
diff --git a/vendor/gix-submodule/tests/file/baseline.rs b/vendor/gix-submodule/tests/file/baseline.rs deleted file mode 100644 index dc71ed3ab..000000000 --- a/vendor/gix-submodule/tests/file/baseline.rs +++ /dev/null @@ -1,80 +0,0 @@ -use std::{ffi::OsStr, path::PathBuf}; - -use bstr::ByteSlice; -use gix_features::fs::walkdir::Parallelism; - -#[test] -fn common_values_and_names_by_path() -> crate::Result { - let modules = module_files() - .map(|(path, stripped)| { - gix_submodule::File::from_bytes(&std::fs::read(path).unwrap(), stripped, &Default::default()) - }) - .collect::<Result<Vec<_>, _>>()?; - - assert_eq!( - modules - .iter() - .map(|m| { m.config_path().expect("present").to_owned() }) - .collect::<Vec<_>>(), - [ - "empty-clone/.gitmodules", - "multiple/.gitmodules", - "not-a-submodule/.gitmodules", - "recursive-clone/.gitmodules", - "recursive-clone/submodule/.gitmodules", - "relative-clone/.gitmodules", - "relative-clone/submodule/.gitmodules", - "super/.gitmodules", - "super/submodule/.gitmodules", - "super-clone/.gitmodules", - "super-clone/submodule/.gitmodules", - "top-only-clone/.gitmodules" - ] - .into_iter() - .map(PathBuf::from) - .collect::<Vec<_>>(), - "config_path() yields the path provided when instantiating (for .gitmodules), and not the path of a submodule." - ); - - assert_eq!( - { - let mut v = modules.iter().flat_map(gix_submodule::File::names).collect::<Vec<_>>(); - v.sort(); - v.dedup(); - v - }, - [".a/..c", "a/b", "a/d\\", "a\\e", "submodule"] - .into_iter() - .map(|n| n.as_bytes().as_bstr()) - .collect::<Vec<_>>(), - "names can be iterated" - ); - - for module in &modules { - for name in module.names() { - let path = module.path(name)?; - assert_eq!(module.name_by_path(path.as_ref()).expect("found"), name); - } - } - Ok(()) -} - -fn module_files() -> impl Iterator<Item = (PathBuf, PathBuf)> { - let dir = gix_testtools::scripted_fixture_read_only("basic.sh").expect("valid fixture"); - gix_features::fs::walkdir_sorted_new(&dir, Parallelism::Serial) - .follow_links(false) - .into_iter() - .filter_map(move |entry| { - let entry = entry.unwrap(); - (entry.file_name() == OsStr::new(".gitmodules")).then(|| { - ( - entry.path().to_owned(), - entry - .path() - .strip_prefix(&dir) - .expect("can only provide sub-dirs") - .to_owned(), - ) - }) - }) -} diff --git a/vendor/gix-submodule/tests/file/mod.rs b/vendor/gix-submodule/tests/file/mod.rs deleted file mode 100644 index cecb7b759..000000000 --- a/vendor/gix-submodule/tests/file/mod.rs +++ /dev/null @@ -1,453 +0,0 @@ -fn submodule(bytes: &str) -> gix_submodule::File { - gix_submodule::File::from_bytes(bytes.as_bytes(), None, &Default::default()).expect("valid module") -} - -mod is_active_platform { - use std::str::FromStr; - - fn module_file(name: &str) -> crate::Result<gix_submodule::File> { - let modules = gix_testtools::scripted_fixture_read_only("basic.sh")? - .join(name) - .join(".gitmodules"); - Ok(gix_submodule::File::from_bytes( - std::fs::read(&modules)?.as_slice(), - modules, - &Default::default(), - )?) - } - - use bstr::{BStr, ByteSlice}; - - fn multi_modules() -> crate::Result<gix_submodule::File> { - module_file("multiple") - } - - fn assume_valid_active_state<'a>( - module: &'a gix_submodule::File, - config: &'a gix_config::File<'static>, - defaults: gix_pathspec::Defaults, - ) -> crate::Result<Vec<(&'a str, bool)>> { - assume_valid_active_state_with_attrs(module, config, defaults, |_, _, _, _| { - unreachable!("shouldn't be called") - }) - } - - fn assume_valid_active_state_with_attrs<'a>( - module: &'a gix_submodule::File, - config: &'a gix_config::File<'static>, - defaults: gix_pathspec::Defaults, - mut attributes: impl FnMut( - &BStr, - gix_pathspec::attributes::glob::pattern::Case, - bool, - &mut gix_pathspec::attributes::search::Outcome, - ) -> bool - + 'a, - ) -> crate::Result<Vec<(&'a str, bool)>> { - let mut platform = module.is_active_platform(config, defaults)?; - Ok(module - .names() - .map(|name| { - ( - name.to_str().expect("valid"), - platform.is_active(config, name, &mut attributes).expect("valid"), - ) - }) - .collect()) - } - - #[test] - fn without_submodule_in_index() -> crate::Result { - let module = module_file("not-a-submodule")?; - assert_eq!( - module.names().map(ToOwned::to_owned).collect::<Vec<_>>(), - ["submodule"], - "entries can be read" - ); - Ok(()) - } - - #[test] - fn without_any_additional_settings_all_are_inactive_if_they_have_a_url() -> crate::Result { - let module = multi_modules()?; - assert_eq!( - assume_valid_active_state(&module, &Default::default(), Default::default())?, - &[ - ("submodule", false), - ("a/b", false), - (".a/..c", false), - ("a/d\\", false), - ("a\\e", false) - ] - ); - Ok(()) - } - - #[test] - fn submodules_with_active_config_are_considered_active_or_inactive() -> crate::Result { - let module = multi_modules()?; - assert_eq!( - assume_valid_active_state( - &module, - &gix_config::File::from_str( - "[submodule.submodule]\n active = 0\n url = set \n[submodule \"a/b\"]\n active = false \n url = set \n[submodule \".a/..c\"] active = 1" - )?, - Default::default() - )?, - &[ - ("submodule", false), - ("a/b", false), - (".a/..c", true), - ("a/d\\", false), - ("a\\e", false) - ] - ); - Ok(()) - } - - #[test] - fn submodules_with_active_config_override_pathspecs() -> crate::Result { - let module = multi_modules()?; - assert_eq!( - assume_valid_active_state( - &module, - &gix_config::File::from_str( - "[submodule.submodule]\n active = 0\n[submodule]\n active = *\n[submodule]\n active = :!a*" - )?, - Default::default() - )?, - &[ - ("submodule", false), - ("a/b", false), - (".a/..c", true), - ("a/d\\", false), - ("a\\e", false) - ] - ); - Ok(()) - } - - #[test] - fn pathspecs_matter_even_if_they_do_not_match() -> crate::Result { - let module = multi_modules()?; - assert_eq!( - assume_valid_active_state( - &module, - &gix_config::File::from_str("[submodule]\n active = submodule ")?, - Default::default() - )?, - &[ - ("submodule", true), - ("a/b", false), - (".a/..c", false), - ("a/d\\", false), - ("a\\e", false) - ] - ); - assert_eq!( - assume_valid_active_state( - &module, - &gix_config::File::from_str("[submodule]\n active = :!submodule ")?, - Default::default() - )?, - &[ - ("submodule", false), - ("a/b", true), - (".a/..c", true), - ("a/d\\", true), - ("a\\e", true) - ] - ); - Ok(()) - } -} - -mod path { - use gix_submodule::config::path::Error; - - use crate::file::submodule; - - fn submodule_path(value: &str) -> Error { - let module = submodule(&format!("[submodule.a]\npath = {value}")); - module.path("a".into()).unwrap_err() - } - - #[test] - fn valid() -> crate::Result { - let module = submodule("[submodule.a]\n path = relative/path/submodule"); - assert_eq!(module.path("a".into())?.as_ref(), "relative/path/submodule"); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() { - assert!(matches!( - submodule_path(if cfg!(windows) { - "c:\\\\hello" - } else { - "/definitely/absolute\\\\" - }), - Error::Absolute { .. } - )); - assert!(matches!(submodule_path(""), Error::Missing { .. })); - assert!(matches!(submodule_path("../attack"), Error::OutsideOfWorktree { .. })); - - { - let module = submodule("[submodule.a]\n path"); - assert!(matches!(module.path("a".into()).unwrap_err(), Error::Missing { .. })); - } - - { - let module = submodule("[submodule.a]\n"); - assert!(matches!(module.path("a".into()).unwrap_err(), Error::Missing { .. })); - } - } -} - -mod url { - use gix_submodule::config::url::Error; - - use crate::file::submodule; - - fn submodule_url(value: &str) -> Error { - let module = submodule(&format!("[submodule.a]\nurl = {value}")); - module.url("a".into()).unwrap_err() - } - - #[test] - fn valid() -> crate::Result { - let module = submodule("[submodule.a]\n url = path-to-repo"); - assert_eq!(module.url("a".into())?.to_bstring(), "path-to-repo"); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() { - assert!(matches!(submodule_url(""), Error::Missing { .. })); - { - let module = submodule("[submodule.a]\n url"); - assert!(matches!(module.url("a".into()).unwrap_err(), Error::Missing { .. })); - } - - { - let module = submodule("[submodule.a]\n"); - assert!(matches!(module.url("a".into()).unwrap_err(), Error::Missing { .. })); - } - - assert!(matches!(submodule_url("file://"), Error::Parse { .. })); - } -} - -mod update { - use std::str::FromStr; - - use gix_submodule::config::{update::Error, Update}; - - use crate::file::submodule; - - fn submodule_update(value: &str) -> Error { - let module = submodule(&format!("[submodule.a]\nupdate = {value}")); - module.update("a".into()).unwrap_err() - } - - #[test] - fn default() { - assert_eq!(Update::default(), Update::Checkout, "as defined in the docs"); - } - - #[test] - fn valid() -> crate::Result { - for (valid, expected) in [ - ("checkout", Update::Checkout), - ("rebase", Update::Rebase), - ("merge", Update::Merge), - ("none", Update::None), - ] { - let module = submodule(&format!("[submodule.a]\n update = {valid}")); - assert_eq!(module.update("a".into())?.expect("present"), expected); - } - Ok(()) - } - - #[test] - fn valid_in_overrides() -> crate::Result { - let mut module = submodule("[submodule.a]\n update = merge"); - let repo_config = gix_config::File::from_str("[submodule.a]\n update = !dangerous")?; - let prev_names = module.names().map(ToOwned::to_owned).collect::<Vec<_>>(); - module.append_submodule_overrides(&repo_config); - - assert_eq!( - module.update("a".into())?.expect("present"), - Update::Command("dangerous".into()), - "overridden values are picked up and make commands possible - these are local" - ); - assert_eq!( - module.names().map(ToOwned::to_owned).collect::<Vec<_>>(), - prev_names, - "Appending more configuration sections doesn't affect name listing" - ); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() { - assert!(matches!(submodule_update(""), Error::Invalid { .. })); - assert!(matches!(submodule_update("bogus"), Error::Invalid { .. })); - assert!( - matches!( - submodule_update("!dangerous"), - Error::CommandForbiddenInModulesConfiguration { .. } - ), - "forbidden unless it's an override" - ); - } -} - -mod fetch_recurse { - use gix_submodule::config::FetchRecurse; - - use crate::file::submodule; - - #[test] - fn default() { - assert_eq!( - FetchRecurse::default(), - FetchRecurse::OnDemand, - "as defined in git codebase actually" - ); - } - - #[test] - fn valid() -> crate::Result { - for (valid, expected) in [ - ("yes", FetchRecurse::Always), - ("true", FetchRecurse::Always), - ("", FetchRecurse::Never), - ("no", FetchRecurse::Never), - ("false", FetchRecurse::Never), - ("on-demand", FetchRecurse::OnDemand), - ] { - let module = submodule(&format!("[submodule.a]\n fetchRecurseSubmodules = {valid}")); - assert_eq!(module.fetch_recurse("a".into())?.expect("present"), expected); - } - let module = submodule("[submodule.a]\n fetchRecurseSubmodules"); - assert_eq!( - module.fetch_recurse("a".into())?.expect("present"), - FetchRecurse::Always, - "no value means true, which means to always recurse" - ); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() -> crate::Result { - for invalid in ["foo", "ney", "On-demand"] { - let module = submodule(&format!("[submodule.a]\n fetchRecurseSubmodules = \"{invalid}\"")); - assert!(module.fetch_recurse("a".into()).is_err()); - } - Ok(()) - } -} - -mod ignore { - use gix_submodule::config::Ignore; - - use crate::file::submodule; - - #[test] - fn default() { - assert_eq!(Ignore::default(), Ignore::None, "as defined in the docs"); - } - - #[test] - fn valid() -> crate::Result { - for (valid, expected) in [ - ("all", Ignore::All), - ("dirty", Ignore::Dirty), - ("untracked", Ignore::Untracked), - ("none", Ignore::None), - ] { - let module = submodule(&format!("[submodule.a]\n ignore = {valid}")); - assert_eq!(module.ignore("a".into())?.expect("present"), expected); - } - let module = submodule("[submodule.a]\n ignore"); - assert!( - module.ignore("a".into())?.is_none(), - "no value is interpreted as non-existing string, hence the caller will see None" - ); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() -> crate::Result { - for invalid in ["All", ""] { - let module = submodule(&format!("[submodule.a]\n ignore = \"{invalid}\"")); - assert!(module.ignore("a".into()).is_err()); - } - Ok(()) - } -} - -mod branch { - use gix_submodule::config::Branch; - - use crate::file::submodule; - - #[test] - fn valid() -> crate::Result { - for (valid, expected) in [ - (".", Branch::CurrentInSuperproject), - ("", Branch::Name("HEAD".into())), - ("master", Branch::Name("master".into())), - ("feature/a", Branch::Name("feature/a".into())), - ( - "abcde12345abcde12345abcde12345abcde12345", - Branch::Name("abcde12345abcde12345abcde12345abcde12345".into()), - ), - ] { - let module = submodule(&format!("[submodule.a]\n branch = {valid}")); - assert_eq!(module.branch("a".into())?.expect("present"), expected); - } - let module = submodule("[submodule.a]\n branch"); - assert!( - module.branch("a".into())?.is_none(), - "no value implies it's not set, but the caller will then default" - ); - Ok(()) - } - - #[test] - fn validate_upon_retrieval() -> crate::Result { - let module = submodule("[submodule.a]\n branch = /invalid"); - assert!(module.branch("a".into()).is_err()); - Ok(()) - } -} - -#[test] -fn shallow() -> crate::Result { - let module = submodule("[submodule.a]\n shallow"); - assert_eq!( - module.shallow("a".into())?, - Some(true), - "shallow is a simple boolean without anything special (yet)" - ); - Ok(()) -} - -mod append_submodule_overrides { - use std::str::FromStr; - - use crate::file::submodule; - - #[test] - fn last_of_multiple_values_wins() -> crate::Result { - let mut module = submodule("[submodule.a] url = from-module"); - let repo_config = - gix_config::File::from_str("[submodule.a]\n url = a\n url = b\n ignore = x\n [submodule.a]\n url = c\n[submodule.b] url = not-relevant")?; - module.append_submodule_overrides(&repo_config); - Ok(()) - } -} - -mod baseline; diff --git a/vendor/gix-submodule/tests/fixtures/basic.sh b/vendor/gix-submodule/tests/fixtures/basic.sh deleted file mode 100755 index 203e6afde..000000000 --- a/vendor/gix-submodule/tests/fixtures/basic.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -set -eu -o pipefail - -set -x -git init -touch empty && git add empty -git commit -m upstream -git clone . super -git clone super multiple -(cd multiple - git submodule add ../multiple submodule - git submodule add ../multiple a/b - git submodule add --name .a/..c ../multiple a\\c - git submodule add --name a/d\\ ../multiple a/d\\ - git submodule add --name a\\e ../multiple a/e/ - git commit -m "subsubmodule-a" -) - -(cd super - git submodule add ../multiple submodule - git commit -m "submodule" -) -git clone super super-clone -(cd super-clone - git submodule update --init --recursive -) -git clone super empty-clone -(cd empty-clone - git submodule init -) -git clone super top-only-clone -git clone super relative-clone -(cd relative-clone - git submodule update --init --recursive -) -git clone super recursive-clone -(cd recursive-clone - git submodule update --init --recursive -) - -git clone super not-a-submodule -(cd not-a-submodule - cp .gitmodules modules.bak - git rm submodule - echo fake > submodule - mv modules.bak .gitmodules - git add submodule && git commit -m "no submodule in index and commit, but in configuration" -) diff --git a/vendor/gix-submodule/tests/fixtures/generated-archives/basic.tar.xz b/vendor/gix-submodule/tests/fixtures/generated-archives/basic.tar.xz Binary files differdeleted file mode 100644 index d483db5e7..000000000 --- a/vendor/gix-submodule/tests/fixtures/generated-archives/basic.tar.xz +++ /dev/null diff --git a/vendor/gix-submodule/tests/submodule.rs b/vendor/gix-submodule/tests/submodule.rs deleted file mode 100644 index 75144b10c..000000000 --- a/vendor/gix-submodule/tests/submodule.rs +++ /dev/null @@ -1,3 +0,0 @@ -use gix_testtools::Result; - -mod file; |