✅ gremlins: portable gate test and same-second delta-note test
This commit is contained in:
@@ -1521,9 +1521,14 @@ class GateTests(Base):
|
|||||||
|
|
||||||
def test_closed_gate_on_existing_registry(self):
|
def test_closed_gate_on_existing_registry(self):
|
||||||
"""A1: a registry made with the gate open; with it closed, nothing launches and no job
|
"""A1: a registry made with the gate open; with it closed, nothing launches and no job
|
||||||
entry is written; the tick launches no ping (it reads nothing)."""
|
entry is written; the tick launches no ping (it reads nothing).
|
||||||
|
The registry is made with the override env set, so the gate is open on any host (on a
|
||||||
|
supported one the env is ignored); the env is gone again before the gate is closed."""
|
||||||
|
with mock.patch.dict(os.environ, {gremlins.UNSUPPORTED_OK_ENV: "1"}):
|
||||||
|
self.assertIsNone(gremlins.platform_gate())
|
||||||
code, out, _ = self.init()
|
code, out, _ = self.init()
|
||||||
self.assertEqual(code, 0, out)
|
self.assertEqual(code, 0, out)
|
||||||
|
self.assertNotIn(gremlins.UNSUPPORTED_OK_ENV, os.environ)
|
||||||
before = gremlins.read_registry(self.state)
|
before = gremlins.read_registry(self.state)
|
||||||
brief = os.path.join(self.tmp, "b.md")
|
brief = os.path.join(self.tmp, "b.md")
|
||||||
with open(brief, "w") as f:
|
with open(brief, "w") as f:
|
||||||
@@ -3813,6 +3818,14 @@ class LaunchTests(LaunchBase):
|
|||||||
note = os.path.join(self.tmp, "delta-1.md")
|
note = os.path.join(self.tmp, "delta-1.md")
|
||||||
with open(note, "w", newline="\n") as f:
|
with open(note, "w", newline="\n") as f:
|
||||||
f.write("NOTE-MARKER\n" + "d" * 60000 + "\n")
|
f.write("NOTE-MARKER\n" + "d" * 60000 + "\n")
|
||||||
|
# `trained_at` has whole seconds, so a note written in the same second as a training's or
|
||||||
|
# a rebase's end would sit on either side of it by chance: B1's training is moved a minute
|
||||||
|
# back and the note half a minute back, so B1 predates the note and the rebase below
|
||||||
|
# (ending now or later) postdates it, on any host speed.
|
||||||
|
t_note = time.time() - 30
|
||||||
|
os.utime(note, (t_note, t_note))
|
||||||
|
self.set_registry(lambda reg: reg["bases"]["B1"].__setitem__("trained_at", gremlins._iso(t_note - 30)))
|
||||||
|
self.assertLess(gremlins._ts(self.reg()["bases"]["B1"]["trained_at"]), os.path.getmtime(note))
|
||||||
out = self.fake_spawn("B1", "--delta-note", note, brief=named)
|
out = self.fake_spawn("B1", "--delta-note", note, brief=named)
|
||||||
self.assertEqual(len(out["reasons"]), 1, out)
|
self.assertEqual(len(out["reasons"]), 1, out)
|
||||||
self.assertRegex(out["reasons"][0], r"^delta_tokens:\d+$")
|
self.assertRegex(out["reasons"][0], r"^delta_tokens:\d+$")
|
||||||
|
|||||||
Reference in New Issue
Block a user