1use gh_workflow::{Event, Job, Level, Permissions, PullRequest, Push, UsesJob, Workflow};
2
3use crate::tasks::workflows::{
4 GenerateWorkflowArgs, GitSha,
5 steps::{NamedJob, named},
6 vars::one_workflow_per_non_main_branch_and_token,
7};
8
9pub(crate) fn run_tests(args: &GenerateWorkflowArgs) -> Workflow {
10 let call_extension_tests = call_extension_tests(args.sha.as_ref());
11 named::workflow()
12 .on(Event::default()
13 .pull_request(PullRequest::default().add_branch("**"))
14 .push(Push::default().add_branch("main")))
15 .concurrency(one_workflow_per_non_main_branch_and_token("pr"))
16 .add_job(call_extension_tests.name, call_extension_tests.job)
17}
18
19pub(crate) fn call_extension_tests(target_ref: Option<&GitSha>) -> NamedJob<UsesJob> {
20 let job = Job::default()
21 .permissions(Permissions::default().contents(Level::Read))
22 .uses(
23 "zed-industries",
24 "zed",
25 ".github/workflows/extension_tests.yml",
26 target_ref.map_or("main", AsRef::as_ref),
27 );
28
29 named::job(job)
30}