Skip to content

Regression Testing

Mike Harder edited this page Oct 7, 2025 · 3 revisions

Small app to run two versions of avocado against the specs repo, and report any folders with different results.

package.json

{
  "type": "module",
  "dependencies": {
    "@azure/avocado": "^0.10.2",
    "avocado-private": "file://home/mharder/avocado-mh/azure-avocado-0.10.3.tgz",
    "glob": "^11.0.3",
    "p-limit": "^7.1.1"
  }
}

test.js

import avocado from "@azure/avocado";
import assert from "assert";
import avocadoPrivate from "avocado-private";
import { globSync } from "glob";
import pLimit from "p-limit";

const rootDir = "/home/mharder/specs/specification";

const dirs = globSync(`${rootDir}/**/data-plane`).sort();

console.log(dirs);

// TODO: Use worker_threads for multi-core perf improvement
const limit = pLimit(16);

await limit.map(dirs, async (dir) => {
  const cwd = dir;
  const env = {};
  const args = {
    excludePaths: ["(?=/examples/)(?!(?:/stable/|/preview/))"],
  };

  const results = await avocado.avocado({ cwd, env, args }).toArray();
  // console.log(results);

  const resultsPrivate = await avocadoPrivate
    .avocado({ cwd, env, args })
    .toArray();
  // console.log(resultsPrivate);

  try {
    assert.deepStrictEqual(results, resultsPrivate);
    console.log(`[${dir}] PASS`);
  } catch (error) {
    console.log(
      `[${dir}] FAIL (expected: ${results.length}, actual: ${resultsPrivate.length})`
    );
  }
});

Clone this wiki locally