hive-forge: pr create --draft: extract draft_warning so the warning decision is tested
This commit is contained in:
parent
4d164819b3
commit
4e6c3b4a2f
1 changed files with 21 additions and 10 deletions
|
|
@ -89,8 +89,8 @@ pub struct Args {
|
|||
/// token missing/invalid), an unresolved `--label` name, and any I/O
|
||||
/// error from writing the PR URL to stdout.
|
||||
pub fn run(client: &Client, args: Args) -> Result<()> {
|
||||
if args.draft {
|
||||
eprintln!("{DRAFT_WARNING}");
|
||||
if let Some(w) = draft_warning(&args) {
|
||||
eprintln!("{w}");
|
||||
}
|
||||
let body = body::resolve(args.body.as_deref(), args.body_file.as_deref())?.unwrap_or_default();
|
||||
if args.agit {
|
||||
|
|
@ -387,6 +387,10 @@ fn remote_content(line: &str) -> Option<&str> {
|
|||
|
||||
const DRAFT_WARNING: &str = "warning: --draft is not supported by this forge; opening a normal PR";
|
||||
|
||||
fn draft_warning(args: &Args) -> Option<&'static str> {
|
||||
args.draft.then_some(DRAFT_WARNING)
|
||||
}
|
||||
|
||||
fn is_remote_line(line: &str) -> bool {
|
||||
remote_content(line).is_some()
|
||||
}
|
||||
|
|
@ -401,17 +405,24 @@ fn is_pr_hint_opener(line: &str) -> bool {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use clap::Parser;
|
||||
|
||||
#[derive(clap::Parser)]
|
||||
struct Cli {
|
||||
#[command(flatten)]
|
||||
args: Args,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn draft_flag_parses() {
|
||||
#[derive(clap::Parser)]
|
||||
struct Cli {
|
||||
#[command(flatten)]
|
||||
args: Args,
|
||||
}
|
||||
use clap::Parser;
|
||||
fn draft_flag_yields_warning() {
|
||||
let cli = Cli::parse_from(["x", "--title", "t", "--head", "h", "--draft"]);
|
||||
assert!(cli.args.draft);
|
||||
assert_eq!(draft_warning(&cli.args), Some(DRAFT_WARNING));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn no_draft_flag_yields_no_warning() {
|
||||
let cli = Cli::parse_from(["x", "--title", "t", "--head", "h"]);
|
||||
assert_eq!(draft_warning(&cli.args), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
Loading…
Reference in a new issue