Moved some files around and made cleanup better
This commit is contained in:
@@ -52,10 +52,11 @@ class CardWorkspaceTests(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):workspace.resolve_revision('BP-999','v02')
|
||||
with self.assertRaisesRegex(ValueError,'already exists'):workspace.scaffold('BP-999','Test card','Common','v01')
|
||||
|
||||
def test_new_acceptance_archives_previous_and_pins_linked_art(self):
|
||||
def test_new_acceptance_compacts_previous_and_internalizes_linked_art(self):
|
||||
alias=self.assemble()
|
||||
accepted=workspace.approve('BP-999','v01','First fixture approval')
|
||||
before=workspace.digest(accepted/'med/normal/card.png')
|
||||
low_before=workspace.digest(accepted/'low/normal/card.png')
|
||||
linked_before=workspace.digest(accepted/'high/boundless/card.png')
|
||||
self.revision=workspace.scaffold('BP-999','Test card','Common','v02')
|
||||
alias.unlink();self.assemble()
|
||||
# This revision deliberately depends on the earlier accepted full-art export.
|
||||
@@ -63,15 +64,33 @@ class CardWorkspaceTests(unittest.TestCase):
|
||||
content=workspace.read(self.revision/'card.json');content['art']=str((accepted/'high/boundless/card.png').relative_to(self.repo));workspace.write(self.revision/'card.json',content);workspace.refresh(self.revision)
|
||||
target=workspace.approve('BP-999','v02','Second fixture approval')
|
||||
archive=self.repo/'in-progress/cards/BP-999-test-card/history/accepted-v01'
|
||||
self.assertEqual(workspace.resolve_revision('BP-999','v01'),archive)
|
||||
with self.assertRaises(ValueError):workspace.resolve_revision('BP-999','v01')
|
||||
self.assertEqual(workspace.resolve_revision('BP-999','v02'),target)
|
||||
self.assertEqual(workspace.digest(archive/'med/normal/card.png'),before)
|
||||
self.assertEqual((target/'source/art-master.png').resolve(),archive/'high/boundless/card.png')
|
||||
self.assertEqual(workspace.validate(archive)['stage'],'approved')
|
||||
self.assertEqual(workspace.digest(archive/'low/normal/card.png'),low_before)
|
||||
self.assertFalse((archive/'med').exists());self.assertFalse((archive/'high').exists())
|
||||
self.assertTrue((archive/'full-manifest.json').is_file());self.assertTrue((archive/'record.json').is_file())
|
||||
self.assertFalse((target/'source/art-master.png').is_symlink())
|
||||
self.assertEqual(workspace.digest(target/'source/art-master.png'),linked_before)
|
||||
self.assertEqual(workspace.read(target/'card.json')['art'],'artifacts/cards/BP-999-test-card/source/art-master.png')
|
||||
self.assertEqual(workspace.validate(target)['stage'],'approved')
|
||||
self.assertEqual(alias.resolve(),target/'med/normal/card.png')
|
||||
self.assertEqual(workspace.update_index()[0]['selectedRevision'],'v02')
|
||||
|
||||
def test_approval_compacts_superseded_working_revisions(self):
|
||||
old=self.revision
|
||||
Image.new('RGB',(20,28),'red').save(old/'source/art-master.png')
|
||||
(old/'source/generation-prompt.txt').write_text('Retained prompt')
|
||||
workspace.refresh(old)
|
||||
self.revision=workspace.scaffold('BP-999','Test card','Common','v02');self.assemble()
|
||||
workspace.approve('BP-999','v02','Second fixture approval')
|
||||
history=self.repo/'in-progress/cards/BP-999-test-card/history/revisions/v01'
|
||||
self.assertFalse(old.exists());self.assertTrue((history/'review/art-reference.png').is_file())
|
||||
with Image.open(history/'review/art-reference.png') as reference:self.assertEqual(reference.size,(5,7))
|
||||
self.assertFalse((history/'source/art-master.png').exists())
|
||||
self.assertEqual((history/'source/generation-prompt.txt').read_text(),'Retained prompt')
|
||||
self.assertTrue((history/'full-manifest.json').is_file())
|
||||
with self.assertRaisesRegex(ValueError,'already exists'):workspace.scaffold('BP-999','Test card','Common','v01')
|
||||
|
||||
def test_changed_or_invalid_exports_block_promotion(self):
|
||||
self.assemble();Image.new('RGBA',(9,14),(40,60,80,255)).save(self.revision/'med/normal/card.png')
|
||||
with self.assertRaises(ValueError):workspace.approve('BP-999','v01','Test fixture approval only')
|
||||
|
||||
Reference in New Issue
Block a user