gowalk-cicd 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/action/.daemux-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.29
|
|
@@ -139,7 +139,21 @@ def _stale_editable_id(versions: list[dict], target: str) -> str | None:
|
|
|
139
139
|
vid = v.get("id")
|
|
140
140
|
if not vid:
|
|
141
141
|
continue
|
|
142
|
-
|
|
142
|
+
# STRICTLY greater, not >=. The skip above is a STRING compare while
|
|
143
|
+
# this is a TUPLE compare, so a version that is the SAME but written
|
|
144
|
+
# differently — "1.0" against a target of "1.0.0" — slipped past the
|
|
145
|
+
# skip and then tripped this guard, refusing the whole deploy.
|
|
146
|
+
#
|
|
147
|
+
# That is precisely what App Store Connect hands a brand-new app: it
|
|
148
|
+
# auto-creates version "1.0" when the record is made, while a Flutter
|
|
149
|
+
# project ships MARKETING_VERSION "1.0.0". Every first release hit it.
|
|
150
|
+
#
|
|
151
|
+
# Renaming an editable to an EQUAL version downgrades nothing — it
|
|
152
|
+
# normalises the string — so it falls through to the PATCH-rename
|
|
153
|
+
# candidates below. The guard's real target is unaffected: an editable
|
|
154
|
+
# genuinely AHEAD of the project (draft 1.2 vs target 1.1) still
|
|
155
|
+
# refuses, because renaming that one WOULD lose an in-progress draft.
|
|
156
|
+
if semver_tuple(version_string) > target_t:
|
|
143
157
|
_refuse_downgrade(target, version_string, vid, state)
|
|
144
158
|
# In-review rows (WAITING_FOR_REVIEW / IN_REVIEW) are editable
|
|
145
159
|
# but not safe to rename — leave them alone and POST a fresh row.
|
|
@@ -117,3 +117,36 @@ class StaleEditableSelectionTests(unittest.TestCase):
|
|
|
117
117
|
|
|
118
118
|
if __name__ == "__main__":
|
|
119
119
|
unittest.main()
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class EqualVersionWrittenDifferently(unittest.TestCase):
|
|
123
|
+
"""ASC auto-creates "1.0" with a new app record; Flutter ships "1.0.0".
|
|
124
|
+
|
|
125
|
+
The skip above the guard is a STRING compare while the guard itself is a
|
|
126
|
+
TUPLE compare, so this pair slipped past the skip and then tripped the
|
|
127
|
+
guard — refusing the very FIRST deploy of every newly created app.
|
|
128
|
+
"1.0" and "1.0.0" are the same version: renaming the editable normalises
|
|
129
|
+
the string and downgrades nothing.
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
def test_equal_version_is_patch_renamed_not_refused(self):
|
|
133
|
+
editable = _v("1.0", "PREPARE_FOR_SUBMISSION", vid="ed-10")
|
|
134
|
+
result, stderr, calls = _run_decide_for_version(
|
|
135
|
+
"1.0.0", versions=[editable], ground_truth=None,
|
|
136
|
+
)
|
|
137
|
+
self.assertEqual(result["decision"], "CREATE")
|
|
138
|
+
self.assertEqual(result["versionString"], "1.0.0")
|
|
139
|
+
self.assertEqual(calls[0].kwargs.get("stale_editable_id"), "ed-10")
|
|
140
|
+
|
|
141
|
+
def test_a_genuinely_higher_draft_still_refuses(self):
|
|
142
|
+
"""The guard's real purpose must survive: renaming a draft AHEAD of
|
|
143
|
+
the project would lose in-progress work."""
|
|
144
|
+
editable = _v("1.2.0", "PREPARE_FOR_SUBMISSION", vid="ed-120")
|
|
145
|
+
stderr = _assert_decide_exits(
|
|
146
|
+
self, "1.1.0", versions=[editable], ground_truth=None,
|
|
147
|
+
)
|
|
148
|
+
self.assertIn("downgrade", stderr.lower())
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
if __name__ == "__main__":
|
|
152
|
+
unittest.main()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.29
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.29
|