1010import unittest
1111
1212sys .path .insert (0 , str (Path (__file__ ).resolve ().parents [1 ]))
13- import upstream
13+ import check as checker
1414
1515
1616class UpstreamTest (unittest .TestCase ):
1717 def setUp (self ):
1818 self .temp = tempfile .TemporaryDirectory ()
1919 self .addCleanup (self .temp .cleanup )
2020 self .repo = Path (self .temp .name )
21- upstream .git (self .repo , "init" , "--quiet" )
22- upstream .git (self .repo , "config" , "user.email" , "test@example.invalid" )
23- upstream .git (self .repo , "config" , "user.name" , "Upstream tests" )
21+ checker .git (self .repo , "init" , "--quiet" )
22+ checker .git (self .repo , "config" , "user.email" , "test@example.invalid" )
23+ checker .git (self .repo , "config" , "user.name" , "Upstream tests" )
2424 self .path = self .repo / "src" / "Example.lean"
2525 self .path .parent .mkdir ()
2626 self .original = (
@@ -36,22 +36,22 @@ def setUp(self):
3636 "local" : "Adapted.foo" , "local_file" : "RandomDo/Example.lean" ,
3737 "upstream" : "Example.foo" , "path" : "src/Example.lean" , "start" : 3 , "end" : 4 ,
3838 }]}
39- self .baseline = upstream .record (None , self .metadata , self .source (), None )
39+ self .baseline = checker .record (None , self .metadata , self .source (), None )
4040
4141 def source (self ):
42- return upstream .Source (self .repo )
42+ return checker .Source (self .repo )
4343
4444 def commit (self ):
45- upstream .git (self .repo , "add" , "." )
46- upstream .git (self .repo , "commit" , "--quiet" , "--no-gpg-sign" , "-m" , "fixture" )
47- return upstream .git (self .repo , "rev-parse" , "HEAD" ).strip ()
45+ checker .git (self .repo , "add" , "." )
46+ checker .git (self .repo , "commit" , "--quiet" , "--no-gpg-sign" , "-m" , "fixture" )
47+ return checker .git (self .repo , "rev-parse" , "HEAD" ).strip ()
4848
4949 def change (self , text ):
5050 self .path .write_text (text )
5151 return self .commit ()
5252
5353 def report (self , target ):
54- return upstream .check (self .baseline , self .source (), target )
54+ return checker .check (self .baseline , self .source (), target )
5555
5656 def test_unchanged_and_unrelated_edits (self ):
5757 self .assertEqual (self .report (self .before )["changes" ], [])
@@ -94,79 +94,79 @@ def test_deleted_or_moved_file_is_reported(self):
9494
9595 def test_nonexistent_source_is_an_error (self ):
9696 self .baseline ["entries" ][0 ]["path" ] = "src/Missing.lean"
97- with self .assertRaises (upstream .CheckError ):
97+ with self .assertRaises (checker .CheckError ):
9898 self .report (self .before )
9999
100100 def test_missing_revision_is_an_error (self ):
101- with self .assertRaises (upstream .CheckError ):
101+ with self .assertRaises (checker .CheckError ):
102102 self .report ("no-such-revision" )
103103
104104 def test_source_range_and_identity_are_validated (self ):
105105 for key , value in [("start" , 0 ), ("end" , 1000 ), ("path" , "../outside.lean" )]:
106106 baseline = copy .deepcopy (self .baseline )
107107 baseline ["entries" ][0 ][key ] = value
108- with self .subTest (key = key ), self .assertRaises (upstream .CheckError ):
109- upstream .check (baseline , self .source (), self .before )
108+ with self .subTest (key = key ), self .assertRaises (checker .CheckError ):
109+ checker .check (baseline , self .source (), self .before )
110110 baseline = copy .deepcopy (self .baseline )
111111 baseline ["entries" ].append (baseline ["entries" ][0 ])
112- with self .assertRaisesRegex (upstream .CheckError , "Duplicate" ):
113- upstream .entries (baseline , baseline = True )
112+ with self .assertRaisesRegex (checker .CheckError , "Duplicate" ):
113+ checker .entries (baseline , baseline = True )
114114
115115 def test_new_removed_and_moved_annotations_require_review (self ):
116- upstream .validate_mappings (self .baseline , self .metadata )
116+ checker .validate_mappings (self .baseline , self .metadata )
117117 for key , value in [("local" , "Adapted.new" ), ("upstream" , "Example.new" ),
118118 ("local_file" , "RandomDo/New.lean" )]:
119119 metadata = copy .deepcopy (self .metadata )
120120 metadata ["entries" ][0 ][key ] = value
121- with self .subTest (key = key ), self .assertRaises (upstream .CheckError ):
122- upstream .validate_mappings (self .baseline , metadata )
121+ with self .subTest (key = key ), self .assertRaises (checker .CheckError ):
122+ checker .validate_mappings (self .baseline , metadata )
123123
124124 def test_range_must_match_exported_metadata_at_the_same_commit (self ):
125125 baseline = copy .deepcopy (self .baseline )
126126 baseline ["entries" ][0 ]["start" ] = 4
127- with self .assertRaisesRegex (upstream .CheckError , "range disagrees" ):
128- upstream .validate_mappings (baseline , self .metadata )
127+ with self .assertRaisesRegex (checker .CheckError , "range disagrees" ):
128+ checker .validate_mappings (baseline , self .metadata )
129129
130130 def test_invalid_commit_is_a_check_error (self ):
131131 self .baseline ["entries" ][0 ]["commit" ] = None
132- with self .assertRaises (upstream .CheckError ):
133- upstream .entries (self .baseline , baseline = True )
132+ with self .assertRaises (checker .CheckError ):
133+ checker .entries (self .baseline , baseline = True )
134134
135135 def test_partial_review_preserves_other_baselines (self ):
136136 metadata = copy .deepcopy (self .metadata )
137137 metadata ["entries" ].append ({** metadata ["entries" ][0 ], "local" : "Adapted.second" })
138- baseline = upstream .record (None , metadata , self .source (), None )
138+ baseline = checker .record (None , metadata , self .source (), None )
139139 metadata ["commit" ] = self .change (self .original .replace ("x + 1" , "x + 2" ))
140- reviewed = upstream .record (baseline , metadata , self .source (), ["Adapted.foo" ])
140+ reviewed = checker .record (baseline , metadata , self .source (), ["Adapted.foo" ])
141141 by_name = {e ["local" ]: e for e in reviewed ["entries" ]}
142142 self .assertEqual (by_name ["Adapted.foo" ]["commit" ], metadata ["commit" ])
143143 self .assertEqual (by_name ["Adapted.second" ]["commit" ], self .before )
144- report = upstream .check (reviewed , self .source (), metadata ["commit" ])
144+ report = checker .check (reviewed , self .source (), metadata ["commit" ])
145145 self .assertEqual ([c ["local" ] for c in report ["changes" ]], ["Adapted.second" ])
146146
147147 def test_removing_or_renaming_one_annotation_preserves_other_baselines (self ):
148148 for renamed in (False , True ):
149149 with self .subTest (renamed = renamed ):
150150 metadata = copy .deepcopy (self .metadata )
151151 metadata ["entries" ].append ({** metadata ["entries" ][0 ], "local" : "Adapted.second" })
152- baseline = upstream .record (None , metadata , self .source (), None )
152+ baseline = checker .record (None , metadata , self .source (), None )
153153 metadata ["commit" ] = self .change (self .path .read_text () + "-- unrelated\n " )
154154 metadata ["entries" ].pop (0 )
155155 selected = ["Adapted.foo" ]
156156 if renamed :
157157 metadata ["entries" ].append ({** metadata ["entries" ][0 ], "local" : "Adapted.new" })
158158 selected .append ("Adapted.new" )
159- recorded = upstream .record (baseline , metadata , self .source (), selected )
160- upstream .validate_mappings (recorded , metadata )
159+ recorded = checker .record (baseline , metadata , self .source (), selected )
160+ checker .validate_mappings (recorded , metadata )
161161 by_name = {e ["local" ]: e for e in recorded ["entries" ]}
162162 self .assertNotIn ("Adapted.foo" , by_name )
163163 self .assertEqual (by_name ["Adapted.second" ]["commit" ], self .before )
164164 if renamed :
165165 self .assertEqual (by_name ["Adapted.new" ]["commit" ], metadata ["commit" ])
166166
167167 def test_git_display_settings_cannot_hide_or_expand_changes (self ):
168- upstream .git (self .repo , "config" , "color.ui" , "always" )
169- upstream .git (self .repo , "config" , "diff.interHunkContext" , "100" )
168+ checker .git (self .repo , "config" , "color.ui" , "always" )
169+ checker .git (self .repo , "config" , "diff.interHunkContext" , "100" )
170170 (self .repo / ".gitattributes" ).write_text ("*.lean binary\n " )
171171 self .assertFalse (self .report (self .change (self .original .replace ("10" , "20" )))["changes" ])
172172 self .assertTrue (self .report (self .change (self .original .replace ("x + 1" , "x + 2" )))["changes" ])
@@ -178,10 +178,10 @@ def test_no_automatic_baseline_update_and_exit_codes(self):
178178 target = self .change (self .original .replace ("x + 1" , "x + 2" ))
179179 args = ["--baseline" , str (lock ), "--repo" , str (self .repo ), "check" , "--target" , target ]
180180 with contextlib .redirect_stdout (io .StringIO ()):
181- self .assertEqual (upstream .main (args ), 1 )
182- self .assertEqual (upstream .main (args + ["--advisory" ]), 0 )
181+ self .assertEqual (checker .main (args ), 1 )
182+ self .assertEqual (checker .main (args + ["--advisory" ]), 0 )
183183 with contextlib .redirect_stderr (io .StringIO ()):
184- self .assertEqual (upstream .main (args [:- 1 ] + ["missing" ] + ["--advisory" ]), 2 )
184+ self .assertEqual (checker .main (args [:- 1 ] + ["missing" ] + ["--advisory" ]), 2 )
185185 self .assertEqual (lock .read_bytes (), original )
186186
187187 def test_notification_fingerprint_ignores_unrelated_commits (self ):
@@ -193,7 +193,7 @@ def test_notification_fingerprint_ignores_unrelated_commits(self):
193193
194194 def test_report_includes_mapping_and_upstream_diff (self ):
195195 report = self .report (self .change (self .original .replace ("x + 1" , "x + 2" )))
196- text = upstream .markdown (report )
196+ text = checker .markdown (report )
197197 for expected in ["Adapted.foo" , "Example.foo" , "- x + 1" , "+ x + 2" ]:
198198 self .assertIn (expected , text )
199199
0 commit comments