import fs from 'node:fs' import assert from 'node:assert/strict' import {execFileSync} from 'node:child_process' import pg from 'pg' const database=process.env.MMAPP_OWN_SQL_DB,root='/app/backend/acceptance' assert(/^mm_accept_166_\d+$/.test(database)) const url=new URL(process.env.DATABASE_URL);assert.equal(url.pathname,'/'+database);assert.equal(url.username,database) const client=new pg.Client({connectionString:url.toString()});await client.connect() assert.equal((await client.query('SELECT current_database() AS name')).rows[0].name,database) const role=(await client.query('SELECT rolsuper,rolcreatedb,rolcreaterole,rolbypassrls FROM pg_roles WHERE rolname=current_user')).rows[0] assert(Object.values(role).every(value=>value===false));await client.end() const pkg=JSON.parse(fs.readFileSync('/app/backend/package.json')) const profiles=pkg.scripts['test:all'].split(/\s*&&\s*/).map(c=>{const m=/^npm run (test:[\w-]+)$/.exec(c);assert(m);return m[1]}) const report={date:'2026-10-14',block:'12.5.222',scope:'full backend profile list on owned isolated PostgreSQL; no production DSN',database,profiles:[],passed:false} for(const profile of profiles){ const started=Date.now();let output='',passed=true,errorName try{output=execFileSync('npm',['--prefix','backend','run',profile],{cwd:'/app',timeout:240_000,maxBuffer:16*1024**2,encoding:'utf8',env:{...process.env,NODE_ENV:'test',GEOIP_DIR:'/tmp/'+database+'/geoip',DATABASE_PATH:'/tmp/'+database+'/legacy.db'},stdio:['ignore','pipe','pipe']})} catch(e){passed=false;errorName=e.name;output=String(e.stdout??'')+'\n'+String(e.stderr??'')} fs.writeFileSync(root+'/'+profile.replace(':','-')+'-private.log',output,{mode:0o600}) const skippedLines=output.split('\n').filter(s=>/\bskip(?:ped)?\b/i.test(s));const unavailableSql=skippedLines.filter(s=>/PostgreSQL|owned|own SQL|explicit owned|database|MMAPP_OWN/i.test(s)&&!s.includes('skip/release/recovery passed')); report.profiles.push({profile,passed,durationMs:Date.now()-started,errorName,skippedLineCount:skippedLines.length,unavailableSqlBranches:unavailableSql.map(line=>line.trim())}) fs.writeFileSync(root+'/owned222-result.json',JSON.stringify(report,null,2));console.log(JSON.stringify(report.profiles.at(-1))) } report.passed=report.profiles.every(p=>p.passed);fs.writeFileSync(root+'/owned222-result.json',JSON.stringify(report,null,2)) if(!report.passed)process.exitCode=1