huskies: merge 1176 bug base_branch fallback hardcodes master instead of auto-detecting
This commit is contained in:
@@ -593,6 +593,7 @@ impl ProjectConfig {
|
||||
/// If `agent_name` is None, uses the first (default) agent.
|
||||
pub fn render_agent_args(
|
||||
&self,
|
||||
project_root: &Path,
|
||||
worktree_path: &str,
|
||||
story_id: &str,
|
||||
agent_name: Option<&str>,
|
||||
@@ -607,9 +608,11 @@ impl ProjectConfig {
|
||||
.ok_or_else(|| "No agents configured".to_string())?,
|
||||
};
|
||||
|
||||
let bb = base_branch
|
||||
.or(self.base_branch.as_deref())
|
||||
.unwrap_or("master");
|
||||
let bb_owned = crate::worktree::resolve_base_branch(
|
||||
project_root,
|
||||
base_branch.or(self.base_branch.as_deref()),
|
||||
);
|
||||
let bb = bb_owned.as_str();
|
||||
let aname = agent.name.as_str();
|
||||
let render = |s: &str| {
|
||||
s.replace("{{worktree_path}}", worktree_path)
|
||||
|
||||
@@ -129,7 +129,13 @@ max_turns = 0
|
||||
fn render_agent_args_default() {
|
||||
let config = ProjectConfig::default();
|
||||
let (cmd, args, prompt) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", None, None)
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(cmd, "claude");
|
||||
assert!(args.is_empty());
|
||||
@@ -155,7 +161,13 @@ max_turns = 30
|
||||
|
||||
let config = ProjectConfig::parse(toml_str).unwrap();
|
||||
let (cmd, args, prompt) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", Some("supervisor"), Some("master"))
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
Some("supervisor"),
|
||||
Some("master"),
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(cmd, "claude");
|
||||
assert!(args.contains(&"--model".to_string()));
|
||||
@@ -173,7 +185,13 @@ max_turns = 30
|
||||
|
||||
// Render for coder
|
||||
let (_, coder_args, _) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", Some("coder"), Some("master"))
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
Some("coder"),
|
||||
Some("master"),
|
||||
)
|
||||
.unwrap();
|
||||
assert!(coder_args.contains(&"sonnet".to_string()));
|
||||
assert!(coder_args.contains(&"30".to_string()));
|
||||
@@ -184,7 +202,13 @@ max_turns = 30
|
||||
#[test]
|
||||
fn render_agent_args_not_found() {
|
||||
let config = ProjectConfig::default();
|
||||
let result = config.render_agent_args("/tmp/wt", "42_foo", Some("nonexistent"), None);
|
||||
let result = config.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
Some("nonexistent"),
|
||||
None,
|
||||
);
|
||||
assert!(result.is_err());
|
||||
assert!(result.unwrap_err().contains("No agent named 'nonexistent'"));
|
||||
}
|
||||
@@ -576,7 +600,13 @@ prompt = "git difftool {{base_branch}}...HEAD"
|
||||
"#;
|
||||
let config = ProjectConfig::parse(toml_str).unwrap();
|
||||
let (_, _, prompt) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", None, None)
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
assert!(
|
||||
prompt.contains("develop"),
|
||||
@@ -595,7 +625,13 @@ prompt = "git difftool {{base_branch}}...HEAD"
|
||||
"#;
|
||||
let config = ProjectConfig::parse(toml_str).unwrap();
|
||||
let (_, _, prompt) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", None, Some("feature-x"))
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
None,
|
||||
Some("feature-x"),
|
||||
)
|
||||
.unwrap();
|
||||
assert!(
|
||||
prompt.contains("feature-x"),
|
||||
@@ -674,7 +710,13 @@ disallowed_tools = ["ScheduleWakeup", "SomeTool"]
|
||||
|
||||
let config = ProjectConfig::parse(toml_str).unwrap();
|
||||
let (_, args, _) = config
|
||||
.render_agent_args("/tmp/wt", "42_foo", None, None)
|
||||
.render_agent_args(
|
||||
std::path::Path::new("/tmp/wt"),
|
||||
"/tmp/wt",
|
||||
"42_foo",
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
assert!(
|
||||
args.contains(&"--disallowedTools".to_string()),
|
||||
|
||||
Reference in New Issue
Block a user