diff --git a/package/tests/integration/inputs/git/branch-leaf/branch.txt b/package/tests/integration/inputs/git/branch-leaf/branch.txt new file mode 100644 index 0000000000..b3ffe0adbb --- /dev/null +++ b/package/tests/integration/inputs/git/branch-leaf/branch.txt @@ -0,0 +1 @@ +cành diff --git a/package/tests/integration/inputs/git/branch-leaf/package.ncl b/package/tests/integration/inputs/git/branch-leaf/package.ncl new file mode 100644 index 0000000000..6ade31996c --- /dev/null +++ b/package/tests/integration/inputs/git/branch-leaf/package.ncl @@ -0,0 +1,6 @@ +{ + name = "branch-leaf", + version = "0.1.0", + nickel_version = "1.9.0", + dependencies = {}, +} | std.package.Manifest diff --git a/package/tests/integration/inputs/git/tag-leaf/package.ncl b/package/tests/integration/inputs/git/tag-leaf/package.ncl new file mode 100644 index 0000000000..8f3361804a --- /dev/null +++ b/package/tests/integration/inputs/git/tag-leaf/package.ncl @@ -0,0 +1,6 @@ +{ + name = "leaf", + version = "0.1.0", + nickel_version = "1.9.0", + dependencies = {}, +} | std.package.Manifest diff --git a/package/tests/integration/inputs/git/tag-leaf/tag.txt b/package/tests/integration/inputs/git/tag-leaf/tag.txt new file mode 100644 index 0000000000..04eaf200f6 --- /dev/null +++ b/package/tests/integration/inputs/git/tag-leaf/tag.txt @@ -0,0 +1 @@ +mytag diff --git a/package/tests/integration/inputs/path/git-branch-and-tag-dep/package.ncl b/package/tests/integration/inputs/path/git-branch-and-tag-dep/package.ncl new file mode 100644 index 0000000000..7081bc05d1 --- /dev/null +++ b/package/tests/integration/inputs/path/git-branch-and-tag-dep/package.ncl @@ -0,0 +1,9 @@ +{ + name = "single-git-dep", + version = "0.1.0", + nickel_version = "1.9.0", + dependencies = { + branch = 'Git { url = "https://example.com/branch-leaf", ref = 'Branch "cành" }, + tag = 'Git { url = "https://example.com/tag-leaf", ref = 'Tag "mytag" }, + }, +} | std.package.Manifest diff --git a/package/tests/integration/main.rs b/package/tests/integration/main.rs index 5c5e9cde02..cb1222a56b 100644 --- a/package/tests/integration/main.rs +++ b/package/tests/integration/main.rs @@ -39,32 +39,41 @@ fn set_up_git_repos(config: &mut Config) -> TempDir { let file_name = input_path.file_name().unwrap(); let dir_path = tmp.path().join(file_name); - // TODO: allow some annotations for configuring the git structure. (e.g. branches/tags) + + let run = |cmd: &mut Command| { + assert!(cmd.output().unwrap().status.success()); + }; + + let run_in_dir = |cmd: &mut Command| { + run(cmd.current_dir(&dir_path)); + }; // The rust stdlib doesn't have anything for recursively copying a directory. There are // some crates for that, but it's easier just to shell out. - Command::new("cp") + run(Command::new("cp") .arg("-r") .arg(&input_path) - .arg(tmp.path()) - .output() - .unwrap(); - - Command::new("git") - .arg("init") - .current_dir(&dir_path) - .output() - .unwrap(); - Command::new("git") - .args(["add", "--all"]) - .current_dir(&dir_path) - .output() - .unwrap(); - Command::new("git") - .args(["commit", "-m", "initial"]) - .current_dir(&dir_path) - .output() - .unwrap(); + .arg(tmp.path())); + + // We have some hacky ways to test branch/tag fetching: if the input contains a tag.txt file, + // make a git tag named with the contents of that file. If the input contains a branch.txt file, + // make a git branch named with the contents of that file. + let tag = std::fs::read_to_string(dir_path.join("tag.txt")).ok(); + let branch = std::fs::read_to_string(dir_path.join("branch.txt")).ok(); + + run_in_dir(Command::new("git").arg("init")); + + if let Some(branch) = branch { + run_in_dir(Command::new("git").args(["commit", "-m", "initial", "--allow-empty"])); + run_in_dir(Command::new("git").args(["checkout", "-b", branch.trim()])); + } + + run_in_dir(Command::new("git").args(["add", "--all"])); + run_in_dir(Command::new("git").args(["commit", "-m", "initial"])); + + if let Some(tag) = tag { + run_in_dir(Command::new("git").args(["tag", tag.trim()])); + } let orig_url = gix::Url::try_from(format!( "https://example.com/{}", @@ -86,7 +95,6 @@ fn generate_lock_file(path: &str) { let mut config = Config::default().with_cache_dir(cache_dir.path().to_owned()); let _git_dir = set_up_git_repos(&mut config); - dbg!(_git_dir.into_path()); // Make an empty git repo as the index. Command::new("git") diff --git a/package/tests/integration/snapshots/integration__package__tests__integration__inputs__path__git-branch-and-tag-dep__package.ncl.snap b/package/tests/integration/snapshots/integration__package__tests__integration__inputs__path__git-branch-and-tag-dep__package.ncl.snap new file mode 100644 index 0000000000..fe8f9b1b81 --- /dev/null +++ b/package/tests/integration/snapshots/integration__package__tests__integration__inputs__path__git-branch-and-tag-dep__package.ncl.snap @@ -0,0 +1,44 @@ +--- +source: package/tests/integration/main.rs +expression: lock_contents +--- +{ + "dependencies": { + "branch": { + "Git": { + "url": "https://example.com/branch-leaf", + "id": , + "path": "" + } + }, + "tag": { + "Git": { + "url": "https://example.com/tag-leaf", + "id": , + "path": "" + } + } + }, + "packages": [ + { + "source": { + "Git": { + "url": "https://example.com/branch-leaf", + "id": , + "path": "" + } + }, + "dependencies": {} + }, + { + "source": { + "Git": { + "url": "https://example.com/tag-leaf", + "id": , + "path": "" + } + }, + "dependencies": {} + } + ] +}