uncovered-highlight Debian v26.5.0

Build 94e09889a5e682159002ca48053b8ad544fdb100 on Debian Node.js v26.5.0 at 2026-07-23 20:20
npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me

added 105 packages, and audited 106 packages in 2s

30 packages are looking for funding
  run `npm fund` for details

5 vulnerabilities (1 low, 1 moderate, 3 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

> uncovered-highlight@1.0.1 build
> tsc


> uncovered-highlight@1.0.1 cloudtest
> mocha



  CLI
    ✔ should create CLI instance
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
    ✔ should process file successfully

=== /workspace/testprogs/test1.ts ===

  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }

=== /workspace/testprogs/test2.ts ===

  13    if (!user.name) {
  14      console.log("name validation failed - NOT visible");
  15      return false;
  16    }
  18    if (user.age < 0) {
  19      console.log("negative age - NOT visible");
  20      return false;
  21    } else if (user.age < 18) {
  24    } else if (user.age > 120) {
  25      console.log("age > 120 - NOT visible");
  26      return false;
  27    }
  29    if (user.country === "禁止国") {
  30      console.log("restricted country - NOT visible");
  31      return false;
  32    }
  53      } catch (error) {
  54        console.log(`Error processing user ${user.name} - NOT visible`);
  55        if (error instanceof Error) {
  56          console.log(`Error message: ${error.message} - NOT visible`);
  57        }
  58      }
  67    if (users.length === 0) {
  68      console.log("no users to format - NOT visible");
  69      return "No valid users found";
  70    }
  72    if (users.length === 1) {
  73      console.log("single user - NOT visible");
  74      return `Found 1 user: ${users[0].name}`;
  75    }
    ✔ should handle multiple files
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
    ✔ should handle line numbers option
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
    ✔ should handle different highlight colors
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
   9      return `Hello, ${name}!`;
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  17      console.log("default language branch - NOT visible");
  31        return a - b;
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  36        console.log("divide operation - should be visible");
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
  41        return a / b;
   5    console.log("greet() called - always visible");
   6  
   7    if (language === "english") {
   8      console.log("english branch - should be visible");
   9      return `Hello, ${name}!`;
  10    } else if (language === "spanish") {
  11      console.log("spanish branch - NOT visible");
  12      return `¡Hola, ${name}!`;
  13    } else if (language === "chinese") {
  14      console.log("chinese branch - NOT visible");
  15      return `你好, ${name}!`;
  16    } else {
  17      console.log("default language branch - NOT visible");
  18      return `Greetings, ${name}!`;
  19    }
  20  }
  21  
  27        console.log("add operation - should be visible");
  28        return a + b;
  29      } else if (operation === "subtract") {
  30        console.log("subtract operation - should be visible");
  31        return a - b;
  32      } else if (operation === "multiply") {
  33        console.log("multiply operation - NOT visible");
  34        return a * b;
  35      } else if (operation === "divide") {
  36        console.log("divide operation - should be visible");
  37        if (b === 0) {
  38          console.log("division by zero - NOT visible");
  39          throw new Error("Division by zero");
  40        }
  41        return a / b;
  42      } else {
  43        console.log("unknown operation - should be visible");
  44        throw new Error(`Unknown operation: ${operation}`);
  45      }
    ✔ should handle context setting
  10      else if (language === "spanish") {
  11          console.log("spanish branch - NOT visible");
  12          return `¡Hola, ${name}!`;
  13      }
  14      else if (language === "chinese") {
  15          console.log("chinese branch - NOT visible");
  16          return `你好, ${name}!`;
  17      }
  34          else if (operation === "multiply") {
  35              console.log("multiply operation - NOT visible");
  36              return a * b;
  37          }
  40              if (b === 0) {
  41                  console.log("division by zero - NOT visible");
  42                  throw new Error("Division by zero");
  43              }
    ✔ should handle JavaScript files

  Coverage Subdirectories
    - should load coverage from subdirectories when main directory is empty
    ✔ should prioritize coverage files in main directory over subdirectories

  HighlightProcessor
    ✔ should process JavaScript source with coverage
    ✔ should process TypeScript source with mapped coverage
    ✔ should identify uncovered lines in test1.ts
    ✔ should handle multi-byte characters correctly
    ✔ should filter context lines correctly
    ✔ should merge overlapping highlights

  Integration Tests
    End-to-end TypeScript coverage
      ✔ should process test1.ts from coverage to highlighted output
      ✔ should process test2.ts with multi-byte characters
      ✔ should process test3.ts with classes
    Context line filtering
      ✔ should filter lines based on context setting
    JavaScript file processing
      ✔ should process JavaScript files directly without source maps
    Coverage accuracy
      ✔ should show covered code paths are not highlighted
      ✔ should show uncovered code paths are highlighted

  SourceMapProcessor
    ✔ should load source map for test1.js
    ✔ should load source map for test2.js
    ✔ should load source map for test3.js
    ✔ should convert JS offset to position
    ✔ should map JavaScript coverage ranges to TypeScript source
    ✔ should map ranges for test2.js
    ✔ should map ranges for test3.js
    ✔ should find source file from JS file path

  V8CoverageReader
    ✔ should load coverage data from directory
    ✔ should find coverage for test1.js
    ✔ should find coverage for test2.js
    ✔ should find coverage for test3.js
    ✔ should return coverage ranges for test1.js
    ✔ should merge overlapping ranges
    ✔ should identify uncovered ranges


  36 passing (209ms)
  1 pending

Test exit code: 0