mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2025-08-18 05:03:27 +02:00
Compare commits
1 Commits
fix/readme
...
feat/warni
Author | SHA1 | Date | |
---|---|---|---|
95834ce908
|
@@ -27,7 +27,7 @@ cargo add dagger-sdk
|
|||||||
```rust
|
```rust
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> eyre::Result<()> {
|
async fn main() -> eyre::Result<()> {
|
||||||
let client = dagger_sdk::connect().await?;
|
let client = dagger_sdk::connect()?;
|
||||||
|
|
||||||
let version = client
|
let version = client
|
||||||
.container()
|
.container()
|
||||||
@@ -46,3 +46,9 @@ And run it like a normal application:
|
|||||||
```bash
|
```bash
|
||||||
cargo run
|
cargo run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Disclaimer
|
||||||
|
|
||||||
|
You are free to use something else than `tokio`, I haven't tested it with
|
||||||
|
anything else, but it should work with any other runtime. We don't rely on it
|
||||||
|
specifically. That might change in the future though.
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
use dagger_sdk::{connect, ContainerExecOpts, ContainerExecOptsBuilder};
|
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
||||||
use pretty_assertions::assert_eq;
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_example_container() {
|
async fn test_example_container() {
|
||||||
@@ -20,99 +19,3 @@ 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]
|
|
||||||
async fn test_container() {
|
|
||||||
let client = connect().await.unwrap();
|
|
||||||
|
|
||||||
let alpine = client.container().from("alpine:3.16.2");
|
|
||||||
|
|
||||||
let contents = alpine
|
|
||||||
.fs()
|
|
||||||
.file("/etc/alpine-release")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(contents, "3.16.2\n".to_string());
|
|
||||||
|
|
||||||
let out = alpine
|
|
||||||
.exec_opts(
|
|
||||||
ContainerExecOptsBuilder::default()
|
|
||||||
.args(vec!["cat", "/etc/alpine-release"])
|
|
||||||
.build()
|
|
||||||
.unwrap(),
|
|
||||||
)
|
|
||||||
.stdout()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(out, "3.16.2\n".to_string());
|
|
||||||
|
|
||||||
let id = alpine.id().await.unwrap();
|
|
||||||
let contents = client
|
|
||||||
.container_opts(dagger_sdk::QueryContainerOpts {
|
|
||||||
id: Some(id),
|
|
||||||
platform: None,
|
|
||||||
})
|
|
||||||
.fs()
|
|
||||||
.file("/etc/alpine-release")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user