use travelagent_core::forge::*;
use travelagent_forge_github::GitHubForge;
#[tokio::test]
#[ignore] async fn live_github_fetch_ripgrep_pr() {
let forge = if let Ok(f) = GitHubForge::new() {
f
} else {
eprintln!("Skipping: no GitHub token");
return;
};
let pr_id = PrId {
owner: "BurntSushi".into(),
repo: "ripgrep".into(),
number: 2900,
};
let meta = forge.get_pr(&pr_id).await.unwrap();
assert_eq!(meta.author, "tmccombs");
assert!(!meta.title.is_empty());
let files = forge.get_pr_files(&pr_id).await.unwrap();
assert!(!files.is_empty());
let commits = forge.get_pr_commits(&pr_id).await.unwrap();
assert!(!commits.is_empty());
let comments = forge.get_comments(&pr_id).await.unwrap();
let _ = comments;
}
#[tokio::test]
#[ignore]
async fn live_github_fetch_large_pr() {
let forge = if let Ok(f) = GitHubForge::new() {
f
} else {
eprintln!("Skipping: no GitHub token");
return;
};
let pr_id = PrId {
owner: "rust-lang".into(),
repo: "rust".into(),
number: 128440,
};
let meta = forge.get_pr(&pr_id).await.unwrap();
assert_eq!(meta.state, PrState::Closed);
let files = forge.get_pr_files(&pr_id).await.unwrap();
assert!(
files.len() > 100,
"Expected 600+ files, got {}",
files.len()
);
let commits = forge.get_pr_commits(&pr_id).await.unwrap();
assert!(commits.len() >= 4);
}
#[tokio::test]
#[ignore]
async fn live_github_enterprise_smoke() {
let (base_url, token, owner, repo, pr) = match (
std::env::var("TRV_SMOKE_GITHUB_BASE_URL"),
std::env::var("TRV_SMOKE_GITHUB_TOKEN"),
std::env::var("TRV_SMOKE_GITHUB_OWNER"),
std::env::var("TRV_SMOKE_GITHUB_REPO"),
std::env::var("TRV_SMOKE_GITHUB_PR"),
) {
(Ok(a), Ok(b), Ok(c), Ok(d), Ok(e))
if !a.is_empty() && !b.is_empty() && !c.is_empty() && !d.is_empty() =>
{
(a, b, c, d, e)
}
_ => {
eprintln!(
"Skipping: TRV_SMOKE_GITHUB_BASE_URL/TOKEN/OWNER/REPO/PR must all be set. \
See docs/forge-smoke-tests.md."
);
return;
}
};
let number: u64 = pr.parse().expect("TRV_SMOKE_GITHUB_PR must parse as a u64");
let forge =
GitHubForge::with_token(&base_url, token).expect("GH Enterprise GitHubForge construction");
let pr_id = PrId {
owner,
repo,
number,
};
let meta = forge.get_pr(&pr_id).await.expect("get_pr");
assert!(!meta.title.is_empty(), "PR must have a title");
let files = forge.get_pr_files(&pr_id).await.expect("get_pr_files");
eprintln!(
"GH-Enterprise smoke: PR {} has {} changed file(s)",
pr_id.number,
files.len()
);
let commits = forge.get_pr_commits(&pr_id).await.expect("get_pr_commits");
assert!(!commits.is_empty(), "PR must have at least one commit");
let _comments = forge.get_comments(&pr_id).await.expect("get_comments");
}