Merge 22db6bcb7c593673a1403eadf54e37e065c8109b into 6937ef0ace797315013513aa7e2af39a9206a738

This commit is contained in:
Florian Fromm 2023-04-25 08:56:18 +02:00 committed by GitHub
commit 4356fd16dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 131 additions and 58 deletions

View File

@ -0,0 +1,2 @@
mod issues;
mod standard_apis;

View File

@ -1,5 +1,3 @@
mod issues;
use dagger_sdk::{connect, ContainerExecOptsBuilder}; use dagger_sdk::{connect, ContainerExecOptsBuilder};
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
@ -23,46 +21,6 @@ async fn test_example_container() {
assert_eq!(out, "3.16.2\n".to_string()) assert_eq!(out, "3.16.2\n".to_string())
} }
#[tokio::test]
async fn test_directory() {
let c = connect().await.unwrap();
let contents = c
.directory()
.with_new_file("/hello.txt", "world")
.file("/hello.txt")
.contents()
.await
.unwrap();
assert_eq!("world", contents)
}
#[tokio::test]
async fn test_git() {
let c = connect().await.unwrap();
let tree = c.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.find("Dagger").is_some());
let readme_id = readme_file.id().await.unwrap();
let other_readme = c.file(readme_id).contents().await.unwrap();
assert_eq!(readme, other_readme);
}
#[tokio::test] #[tokio::test]
async fn test_container() { async fn test_container() {
let client = connect().await.unwrap(); let client = connect().await.unwrap();
@ -102,19 +60,3 @@ async fn test_container() {
.unwrap(); .unwrap();
assert_eq!(contents, "3.16.2\n".to_string()); assert_eq!(contents, "3.16.2\n".to_string());
} }
#[tokio::test]
async fn test_err_message() {
let client = connect().await.unwrap();
let alpine = client.container().from("fake.invalid:latest").id().await;
assert_eq!(alpine.is_err(), true);
let err = alpine.expect_err("Tests expect err");
let error_msg = r#"
GQLClient Error: Look at json field for more details
Message: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
"#;
assert_eq!(err.to_string().as_str(), error_msg);
}

View File

@ -0,0 +1,17 @@
use dagger_sdk::connect;
use pretty_assertions::assert_eq;
#[tokio::test]
async fn test_directory() {
let c = connect().await.unwrap();
let contents = c
.directory()
.with_new_file("/hello.txt", "world")
.file("/hello.txt")
.contents()
.await
.unwrap();
assert_eq!("world", contents)
}

View File

@ -0,0 +1,62 @@
use dagger_sdk::connect;
use pretty_assertions::assert_eq;
static TEST_FILE_PATH: &str = "./data/";
static TEST_FILE_NAME: &str = "test.txt";
static TEST_FILE_CONTENT: &str = "This is a test file.";
static ALPINE_VERSION: &str = "3.16.2";
#[tokio::test]
async fn test_file_from_host() -> eyre::Result<()> {
setup_file().await?;
let client = connect().await.unwrap();
let file = client.host().directory(TEST_FILE_PATH).file(TEST_FILE_NAME);
let file_content = file.contents().await?;
assert_eq!(file_content, TEST_FILE_CONTENT);
let file_retrieved_by_id = client.file(file.id().await?);
let file_retrieved_by_id_content = file_retrieved_by_id.contents().await?;
assert_eq!(file_retrieved_by_id_content, TEST_FILE_CONTENT);
cleanup_file().await
}
#[tokio::test]
async fn test_file_from_container() -> eyre::Result<()> {
let client = connect().await.unwrap();
let alpine = client.container().from(format!("alpine:{}", ALPINE_VERSION));
let file = alpine.file("/etc/alpine-release");
let file_content = file.contents().await?;
let expected_file_content = format!("{}\n", ALPINE_VERSION);
assert_eq!(file_content, expected_file_content);
let file_retrieved_by_id = client.file(file.id().await?);
let file_retrieved_by_id_contents = file_retrieved_by_id.contents().await?;
assert_eq!(file_retrieved_by_id_contents, expected_file_content);
Ok(())
}
async fn setup_file() -> eyre::Result<()> {
let full_file_path = String::from(TEST_FILE_PATH) + TEST_FILE_NAME;
tokio::fs::create_dir(TEST_FILE_PATH)
.await
.map_err(eyre::Error::from)?;
tokio::fs::write(full_file_path, TEST_FILE_CONTENT)
.await
.map_err(eyre::Error::from)
}
async fn cleanup_file() -> eyre::Result<()> {
let full_file_path = String::from(TEST_FILE_PATH) + TEST_FILE_NAME;
tokio::fs::remove_file(full_file_path)
.await
.map_err(eyre::Error::from)?;
tokio::fs::remove_dir(TEST_FILE_PATH)
.await
.map_err(eyre::Error::from)
}

View File

@ -0,0 +1,27 @@
use dagger_sdk::connect;
use pretty_assertions::assert_eq;
#[tokio::test]
async fn test_git() {
let c = connect().await.unwrap();
let tree = c.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.find("Dagger").is_some());
let readme_id = readme_file.id().await.unwrap();
let other_readme = c.file(readme_id).contents().await.unwrap();
assert_eq!(readme, other_readme);
}

View File

@ -0,0 +1,23 @@
mod container;
mod directory;
mod file;
mod git;
use dagger_sdk::connect;
use pretty_assertions::assert_eq;
#[tokio::test]
async fn test_err_message() {
let client = connect().await.unwrap();
let alpine = client.container().from("fake.invalid:latest").id().await;
assert_eq!(alpine.is_err(), true);
let err = alpine.expect_err("Tests expect err");
let error_msg = r#"
GQLClient Error: Look at json field for more details
Message: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
"#;
assert_eq!(err.to_string().as_str(), error_msg);
}