2020HOOK_INPUT = json .dumps ({"prompt" : "How do I write clean code?" })
2121
2222
23- def run_script (script , project_dir = None , args = None , evolve_dir = None , stdin = None , expect_success = True ):
23+ def run_script (script , project_dir , args = None , evolve_dir = None , stdin = None , expect_success = True ):
2424 env = {** os .environ }
2525 if evolve_dir :
2626 env ["EVOLVE_DIR" ] = str (evolve_dir )
@@ -29,7 +29,7 @@ def run_script(script, project_dir=None, args=None, evolve_dir=None, stdin=None,
2929 input = stdin ,
3030 capture_output = True ,
3131 text = True ,
32- cwd = str (project_dir ) if project_dir else None ,
32+ cwd = str (project_dir ),
3333 env = env ,
3434 check = expect_success ,
3535 )
@@ -51,6 +51,34 @@ def test_save_stamps_owner_and_private_visibility(self, temp_project_dir):
5151 assert "owner: alice" in content
5252 assert "visibility: private" in content
5353
54+ def test_save_ignores_incoming_owner_and_visibility (self , temp_project_dir ):
55+ evolve_dir = temp_project_dir / ".evolve"
56+ run_script (
57+ SAVE_SCRIPT ,
58+ project_dir = temp_project_dir ,
59+ args = ["--user" , "alice" ],
60+ evolve_dir = evolve_dir ,
61+ stdin = json .dumps (
62+ {
63+ "entities" : [
64+ {
65+ "type" : "guideline" ,
66+ "content" : "Prefer small, reversible changes." ,
67+ "owner" : "mallory" ,
68+ "visibility" : "public" ,
69+ }
70+ ]
71+ }
72+ ),
73+ )
74+ files = list ((evolve_dir / "entities" / "guideline" ).glob ("*.md" ))
75+ assert len (files ) == 1
76+ content = files [0 ].read_text ()
77+ assert "owner: alice" in content
78+ assert "owner: mallory" not in content
79+ assert "visibility: private" in content
80+ assert "visibility: public" not in content
81+
5482 def test_retrieve_annotates_subscribed_entities (self , temp_project_dir ):
5583 evolve_dir = temp_project_dir / ".evolve"
5684 own_dir = evolve_dir / "entities" / "guideline"
@@ -60,7 +88,13 @@ def test_retrieve_annotates_subscribed_entities(self, temp_project_dir):
6088 sub_dir .mkdir (parents = True )
6189 (sub_dir / "alice-tip.md" ).write_text ("---\n type: guideline\n owner: alice\n visibility: public\n ---\n \n Always write tests.\n " )
6290
63- result = run_script (RETRIEVE_SCRIPT , evolve_dir = evolve_dir , stdin = HOOK_INPUT , expect_success = False )
91+ result = run_script (
92+ RETRIEVE_SCRIPT ,
93+ project_dir = temp_project_dir ,
94+ evolve_dir = evolve_dir ,
95+ stdin = HOOK_INPUT ,
96+ expect_success = False ,
97+ )
6498 assert result .returncode == 0
6599 assert "Keep functions small." in result .stdout
66100 assert "[from: alice]" in result .stdout
@@ -77,7 +111,13 @@ def test_retrieve_includes_published_guidelines(self, temp_project_dir):
77111 "---\n type: guideline\n visibility: public\n source: alice/evolve-guidelines\n ---\n \n Document edge cases.\n "
78112 )
79113
80- result = run_script (RETRIEVE_SCRIPT , evolve_dir = evolve_dir , stdin = HOOK_INPUT , expect_success = False )
114+ result = run_script (
115+ RETRIEVE_SCRIPT ,
116+ project_dir = temp_project_dir ,
117+ evolve_dir = evolve_dir ,
118+ stdin = HOOK_INPUT ,
119+ expect_success = False ,
120+ )
81121 assert result .returncode == 0
82122 assert "Keep functions small." in result .stdout
83123 assert "Document edge cases." in result .stdout
0 commit comments