فهرست منبع

Fix early reporting of FV prover's output

Hadrien Croubois 2 سال پیش
والد
کامیت
2a6ccebfb7
1فایلهای تغییر یافته به همراه11 افزوده شده و 8 حذف شده
  1. 11 8
      certora/run.js

+ 11 - 8
certora/run.js

@@ -75,13 +75,16 @@ async function runCertora(spec, contract, files, options = []) {
 
   // as soon as we have a jobStatus link, print it
   stream.on('data', function logStatusUrl(data) {
-    const urls = data.toString('utf8').match(/https?:\S*/g);
-    for (const url of urls ?? []) {
-      if (url.includes('/jobStatus/')) {
-        console.error(`[${spec}] ${url.replace('/jobStatus/', '/output/')}`);
-        stream.off('data', logStatusUrl);
-        break;
-      }
+    const { '-DjobId': jobId, '-DuserId': userId } = Object.fromEntries(
+      data
+        .toString('utf8')
+        .match(/-D\S+=\S+/g)
+        ?.map(s => s.split('=')) || [],
+    );
+
+    if (jobId && userId) {
+      console.error(`[${spec}] https://prover.certora.com/output/${userId}/${jobId}/`);
+      stream.off('data', logStatusUrl);
     }
   });
 
@@ -98,7 +101,7 @@ async function runCertora(spec, contract, files, options = []) {
   stream.end();
 
   // write results in markdown format
-  writeEntry(spec, contract, code || signal, (await output).match(/https:\S*/)?.[0]);
+  writeEntry(spec, contract, code || signal, (await output).match(/https:\/\/prover.certora.com\/output\/\S*/)?.[0]);
 
   // write all details
   console.error(`+ certoraRun ${args.join(' ')}\n` + (await output));