roll_tryjob_reuse: Don't apply to merges

Change-Id: I23423b3e5108e816197161f6daebc8bd37da85c2
Reviewed-on: https://pigweed-review.googlesource.com/c/infra/recipes/+/417533
diff --git a/recipe_modules/roll_tryjob_reuse/api.py b/recipe_modules/roll_tryjob_reuse/api.py
index 572f3d0..cb7d13b 100644
--- a/recipe_modules/roll_tryjob_reuse/api.py
+++ b/recipe_modules/roll_tryjob_reuse/api.py
@@ -41,6 +41,7 @@
     number: int
     commit_message: str
     uploader: str
+    is_merge: bool = False
 
 
 class RollTryjobReuseApi(recipe_api.RecipeApi):
@@ -114,6 +115,12 @@
                 return
 
             roll_change = changes[0]
+            if roll_change.is_merge:
+                if verbose:
+                    self.m.step.empty('change is a merge')
+                    checking_pres.step_summary_text = 'change is a merge'
+                return
+
             if '@' not in (roll_change.uploader or ''):
                 if verbose:
                     self.m.step.empty(f'bad uploader: {roll_change.uploader!r}')
diff --git a/recipe_modules/roll_tryjob_reuse/tests/exit_early_passed_before_roll.py b/recipe_modules/roll_tryjob_reuse/tests/exit_early_passed_before_roll.py
index 16a0540..61c7754 100644
--- a/recipe_modules/roll_tryjob_reuse/tests/exit_early_passed_before_roll.py
+++ b/recipe_modules/roll_tryjob_reuse/tests/exit_early_passed_before_roll.py
@@ -38,6 +38,7 @@
   int32 number = 2;
   string commit_message = 3;
   string uploader = 4;
+  bool is_merge = 5;
 }
 
 message InputProperties {
@@ -58,6 +59,7 @@
                 number=c.number,
                 commit_message=c.commit_message,
                 uploader=c.uploader,
+                is_merge=c.is_merge,
             )
         )
 
@@ -424,3 +426,19 @@
         assert_exit_early(),
         drop_expectations_must_be_last(),
     )
+
+    yield api.test(
+        'change-is-merge',
+        enable_module(),
+        api.properties(
+            changes=[test_change(is_merge=True)],
+            verbose=True,
+        ),
+        api.buildbucket.try_build(),
+        assert_continue(),
+        api.post_check(
+            post_process.MustRun,
+            'checking roll tryjob status.change is a merge',
+        ),
+        drop_expectations_must_be_last(),
+    )