{"record":{"id":"d19b95e840111f05","repo":"santifer/career-ops","slug":"dashboard-build-skipped-go-compiler-not-in-env","errorCode":null,"errorMessage":"Dashboard build skipped — go compiler not in env","messagePattern":"Dashboard build skipped — go compiler not in env","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"test-all.mjs","lineNumber":1533,"sourceCode":"\n  if (typeof installEgressGuard !== 'function') {\n    fail('archive-posting does not export installEgressGuard');\n  }\n} catch (e) {\n  fail(`archive-posting egress guard tests crashed: ${e.message}`);\n}\n\n// ── 4. DASHBOARD BUILD ──────────────────────────────────────────\n\nif (!QUICK) {\n  console.log('\\n4. Dashboard build');\n  let hasGo = false;\n  try {\n    execSync('go version', { stdio: 'ignore' });\n    hasGo = true;\n  } catch {}\n  if (!hasGo) {\n    warn('Dashboard build skipped — go compiler not in env');\n  } else {\n    const isWindows = process.platform === 'win32';\n    const dashboardBuildTmp = mkdtempSync(join(tmpdir(), 'career-dashboard-build-'));\n    const outPath = join(dashboardBuildTmp, isWindows ? 'career-dashboard-test.exe' : 'career-dashboard-test');\n    const goEnv = { ...process.env };\n    if (isWindows && !goEnv.GOCACHE) {\n      goEnv.GOCACHE = join(tmpdir(), 'career-ops-go-build-cache');\n    }\n    if (goEnv.GOCACHE) {\n      try { mkdirSync(goEnv.GOCACHE, { recursive: true }); } catch (e) {}\n    }\n    const goBuild = run('go', ['build', '-o', outPath, '.'], {\n      cwd: join(ROOT, 'dashboard'),\n      env: goEnv,\n      stdio: ['pipe', 'pipe', 'pipe'],\n      timeout: 60000,\n    });\n    if (goBuild !== null) {","sourceCodeStart":1515,"sourceCodeEnd":1551,"githubUrl":"https://github.com/santifer/career-ops/blob/60398d6549a46f5266929538af21cfab94badc75/test-all.mjs#L1515-L1551","documentation":"Section 4 of test-all.mjs builds the Go dashboard (go build -o .). It first probes for the toolchain with execSync('go version'); when that fails -- Go absent from PATH -- the check is skipped with this warning instead of failing the suite. QUICK mode skips the section entirely regardless of toolchain.","triggerScenarios":"Fresh CI container or minimal environment without golang installed; Go installed but not on PATH for the test process; Windows setups where only GOCACHE handling is special-cased after the probe.","commonSituations":"Node-only CI images; contributor machines that never touch the dashboard; PATH differences between interactive shells and CI.","solutions":["Install Go (e.g. via the official tarball or distro package) and confirm 'go version' works in the same shell that runs test-all.","If dashboard coverage is irrelevant in that environment, accept the skip -- the suite passes without it.","On Windows, set GOCACHE explicitly; the suite pre-creates it when present."],"exampleFix":"# before\n⚠️ Dashboard build skipped — go compiler not in env\n# after\n$ sudo apt-get install -y golang-go   # or download from go.dev/dl\n$ go version && node test-all.mjs","handlingStrategy":"validation","validationCode":"// Skip the section decision up front instead of relying on the probe\nimport { execSync } from 'node:child_process';\nlet hasGo = false;\ntry { execSync('go version', { stdio: 'ignore' }); hasGo = true; } catch {}\nif (!hasGo && process.env.CI) console.log('dashboard build not part of this environment — skipping intentionally');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install golang in CI images where dashboard build coverage matters; pin the version for reproducibility.","Confirm 'go version' works in the exact shell/env that runs test-all.mjs, not just interactively.","On Windows set GOCACHE — the suite honors and pre-creates it when present."],"tags":["test-all","go-toolchain","dashboard","skipped-check","toolchain-probe"],"backgroundTag":"missing-toolchain","analyzedSha":"60398d6549a46f5266929538af21cfab94badc75","analyzedAt":"2026-08-20T23:00:06.764Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}