use dagger_sdk::connect;
use pretty_assertions::assert_eq;
#[tokio::test]
async fn test_example_container() {
connect(|client| async move {
let alpine = client.container().from("alpine:3.16.2");
let out = alpine
.with_exec(vec!["cat", "/etc/alpine-release"])
.stdout()
.await
.unwrap();
assert_eq!(out, "3.16.2\n".to_string());
Ok(())
})
.await
.unwrap();
}
#[tokio::test]
async fn test_directory() {
connect(|client| async move {
let contents = client
.directory()
.with_new_file("/hello.txt", "world")
.file("/hello.txt")
.contents()
.await
.unwrap();
assert_eq!("world", contents);
Ok(())
})
.await
.unwrap();
}
#[tokio::test]
async fn test_git() {
connect(|client| async move {
let tree = client.git("github.com/dagger/dagger").branch("main").tree();
let _ = tree
.entries()
.await
.unwrap()
.iter()
.find(|f| f.as_str() == "README.md")
.unwrap();
let readme_file = tree.file("README.md");
let readme = readme_file.contents().await.unwrap();
assert_eq!(true, readme.contains("Dagger"));
let other_readme = client
.load_file_from_id(readme_file)
.contents()
.await
.unwrap();
assert_eq!(readme, other_readme);
Ok(())
})
.await
.unwrap();
}
#[tokio::test]
async fn test_container() {
connect(|client| async move {
let alpine = client.container().from("alpine:3.16.2");
let contents = alpine.file("/etc/alpine-release").contents().await.unwrap();
assert_eq!(contents, "3.16.2\n".to_string());
let out = alpine
.with_exec(vec!["cat", "/etc/alpine-release"])
.stdout()
.await
.unwrap();
assert_eq!(out, "3.16.2\n".to_string());
let id = alpine.id().await.unwrap();
let contents = client
.load_container_from_id(id)
.file("/etc/alpine-release")
.contents()
.await
.unwrap();
assert_eq!(contents, "3.16.2\n".to_string());
Ok(())
})
.await
.unwrap();
}