2020Check them with CURL
2121"""
2222
23- JOIN_TIMEOUT_SEC : int = 120
23+ JOIN_TIMEOUT_SEC = 120
2424
2525CURL_EXIT_CODES_AND_HTTP_CODES : dict [str , tuple [int , int | None ]] = {
2626 "https://api.aspose.cloud/connect/token" : (CURL_EXIT_CODES .HTTP_RETURNED_ERROR , 400 ),
3636 re .compile (r"^https://github\.com/(?P<user>[^/]+)/(?P<repo>[^/]+)/(?:blob|issues)/\S+$" ),
3737]
3838
39- URLS_TO_IGNORE : frozenset [ str ] = frozenset (
39+ URLS_TO_IGNORE = frozenset (
4040 [
4141 "https://api.aspose.cloud" ,
4242 "https://www.aspose.cloud/404" ,
4343 "https://www.aspose.cloud/404/" ,
4444 ]
4545)
4646
47- IGNORE_DOMAINS : Subdomains = Subdomains (
47+ IGNORE_DOMAINS = Subdomains (
4848 [
4949 ".android.com" ,
5050 ".apache.org" ,
8181 ]
8282)
8383
84- URL_END_CHARS : str = r",#\)\"'<>\*\s\\"
85- URL_RE_PATTERN : str = r"(https*://[^{0}]+)[{0}]?" .format (URL_END_CHARS )
84+ URL_END_CHARS = r",#\)\"'<>\*\s\\"
85+ URL_RE_PATTERN = r"(https*://[^{0}]+)[{0}]?" .format (URL_END_CHARS )
8686# print(URL_RE_PATTERN)
87- EXTRACT_URL_REGEX : re . Pattern [ str ] = re .compile (URL_RE_PATTERN , re .MULTILINE )
87+ EXTRACT_URL_REGEX = re .compile (URL_RE_PATTERN , re .MULTILINE )
8888
8989# URL : [Files]
9090EXTRACTED_URLS_WITH_FILES : dict [str , list [str ]] = {k : [] for k in URLS_TO_IGNORE }
@@ -128,7 +128,7 @@ def url_extractor(text: str, filename: str) -> typing.Generator[str, None, None]
128128 EXTRACTED_URLS_WITH_FILES [url ].append (filename )
129129
130130
131- FILES_TO_IGNORE : frozenset [ str ] = frozenset (
131+ FILES_TO_IGNORE = frozenset (
132132 [
133133 ".jar" ,
134134 ".jar" ,
@@ -153,7 +153,7 @@ def text_extractor(files: list[str]) -> typing.Generator[tuple[str, str], None,
153153 raise
154154
155155
156- JOB_SUMMARY : JobSummary = JobSummary (os .environ .get ("GITHUB_STEP_SUMMARY" , "step_summary.md" ))
156+ JOB_SUMMARY = JobSummary (os .environ .get ("GITHUB_STEP_SUMMARY" , "step_summary.md" ))
157157JOB_SUMMARY .add_header ("Test all URLs" )
158158
159159
@@ -162,32 +162,15 @@ def main(files: list[str]) -> int:
162162 expectations = CURL_EXIT_CODES_AND_HTTP_CODES ,
163163 )
164164
165- # Setup signal handlers for graceful shutdown
166- def _handle_signal (_sig : int , _frame : typing .Any ) -> None :
167- url_checker .stop ()
168-
169- with contextlib .suppress (Exception ):
170- signal .signal (signal .SIGINT , _handle_signal )
171- signal .signal (signal .SIGTERM , _handle_signal )
172-
173- checker = threading .Thread (target = url_checker .run , daemon = True )
174- checker .start ()
175-
176- for filename , text in text_extractor (files ):
177- for url in url_extractor (text , filename ):
178- # print("In:", url)
179- url_checker .add_url (url )
180- url_checker .close ()
181- checker .join (timeout = JOIN_TIMEOUT_SEC )
182- if checker .is_alive ():
183- print (
184- f"URL checker did not finish within { JOIN_TIMEOUT_SEC } s; exiting early." ,
185- file = sys .stderr ,
186- flush = True ,
187- )
165+ with url_checker .start () as checker :
166+ for filename , text in text_extractor (files ):
167+ for url in url_extractor (text , filename ):
168+ checker .add_url (url )
169+ checker .wait (JOIN_TIMEOUT_SEC )
170+ results = url_checker .results
188171
189172 # Collect results and write summary
190- for res in url_checker . results :
173+ for res in results :
191174 if res .ok :
192175 JOB_SUMMARY .add_success (res .url )
193176 else :
0 commit comments