From ec74ed71091af195b388a20b14e273cf4106b156 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Mon, 19 Apr 2021 18:34:28 -0700
Subject: [PATCH] Add the Coverity scan support (for *nix builds only)

---
 exec/testbuild.js | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/exec/testbuild.js b/exec/testbuild.js
index e3b18b7fa1..6f57b50bb8 100755
--- a/exec/testbuild.js
+++ b/exec/testbuild.js
@@ -7,11 +7,14 @@
 require("smbdefs.js", 'SMB_PRIORITY_HIGHEST');
 
 var keep = false;
-
-for(i=0;i<argc;i++)
+var cov_token;
+for(i=0;i<argc;i++) {
 	if(argv[i]=="-k")
 		keep=true;
-
+	else if(argv[i].indexOf('-cov-token=') == 0) {
+		cov_token = argv[i].slice(11);
+	}
+}
 var date_str = strftime("%b-%d-%Y");	/* mmm-dd-yyyy */
 
 var temp_dir = backslash(system.temp_path) + "sbbs-" + date_str;
@@ -48,6 +51,7 @@ var exclude_dirs = [
 	"install",
 	"text",
 	"web",
+	"webv4",
 	"xtrn",
 	"src/crt",
 	"src/doors",
@@ -88,7 +92,7 @@ var builds
 /* Platform-specific (or non-ported) projects */
 if(platform=="win32") {
 	/* Requires Visual C++ 2019 */
-	builds.push(["src/sbbs3"			,'build.bat /v:m "/p:Configuration=Release" "/p:WarningLevel=0"'
+	builds.push(["src/sbbs3"			,'release.bat /v:m /p:WarningLevel=0'
 																,"> " + build_output]);
 	/* Requires C++Builder */
 	builds.push(["src/xpdev"			,"make"
@@ -103,7 +107,7 @@ if(platform=="win32") {
 																,"> " + build_output]);
 } else {	/* Unix */
 	builds.unshift(["src/sbbs3"			,"make git_branch.h git_hash.h"]);
-	builds.push(["src/sbbs3"			,"make RELEASE=1 all"		,"2> " + build_output]);
+	builds.push(["src/sbbs3"			,"cov-build --dir ../../cov-int make RELEASE=1 all" ,"2> " + build_output]);
 	builds.push(["src/sbbs3"			,"make RELEASE=1 gtkutils"	,"2> " + build_output]);
 }
 
@@ -120,6 +124,8 @@ var win32_dist
 		"3rdp/win32.release/mozjs/bin/*.dll",
 		"3rdp/win32.release/nspr/bin/*.dll",
 		"3rdp/win32.release/cryptlib/bin/*.dll",
+		"3rdp/win32.release/libarchive/bin/*.dll",
+		"3rdp/win32.release/zlib/bin/*.dll",
 		"s:/sbbs/exec/dosxtrn.exe"
 	];
 
@@ -266,6 +272,15 @@ if(platform=="win32") {
 	cmd_line = "pkzip25 -add " + archive 
 		+ " -exclude=v4upgrade.exe " + win32_dist.join(" ");
 } else {
+	cmd_line = 'tar czvf sbbs-cov.tgz cov-int && ' +
+			'curl --form token=' + cov_token + ' ' +
+			'--form email=rob@synchro.net ' +
+			'--form file=@sbbs-cov.tgz ' +
+			'--form version=' + system.version + system.revision + ' ' +
+			'--form description="Synchronet for ' + system.platform + '" ' +
+			'https://scan.coverity.com/builds?project=Synchronet';
+	log(LOG_INFO, "Executing: " + cmd_line);
+	system.exec(cmd_line);
 	archive = "sbbs_dev.tgz";
 	cmd_line = "pax -s :.*/::p -wzf " + archive + " " + nix_dist.join(" ");
 }
@@ -273,7 +288,7 @@ if(platform=="win32") {
 log(LOG_INFO, "Executing: " + cmd_line);
 system.exec(cmd_line);
 
-dest = file_area.dir["sbbs"].path+archive;	
+dest = file_area.dir["sbbs"].path+archive;
 
 log(LOG_INFO,format("Copying %s to %s",archive,dest));
 if(!file_copy(archive,dest))
@@ -320,8 +335,8 @@ function send_email(subject, body, priority)
 		return(false);
 	}
 
-	var hdr = { 
-		from: "Synchronet testbuild.js", 
+	var hdr = {
+		from: "Synchronet testbuild.js",
 		subject: subject || (system.platform + " build failure"),
 		priority: priority
 	};
-- 
GitLab