summaryrefslogtreecommitdiff
path: root/tests/regression.test.ts
blob: 14e98476639b2ca7d3f914eae05143fd74db8556 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { $, createWalletViaCli, getMoneroCTags, prepareCli, prepareMoneroC } from "./utils.ts";

const coin = Deno.env.get("COIN");
if (coin !== "monero" && coin !== "wownero") {
  throw new Error("COIN env var invalid or missing");
}

Deno.test(`Regression tests (${coin})`, async (t) => {
  await Deno.remove("./tests/wallets", { recursive: true }).catch(() => {});
  await Deno.mkdir("./tests/wallets", { recursive: true });

  const tags = await getMoneroCTags();
  const latestTag = tags[0];
  await Promise.all([prepareMoneroC(coin, "next"), await prepareMoneroC(coin, latestTag), prepareCli(coin)]);

  await t.step("Simple (next, latest, next)", async () => {
    const walletInfo = await createWalletViaCli(coin, "dog", "sobaka");

    for (const version of ["next", latestTag, "next"]) {
      await $`deno run -A ./tests/compare.ts ${coin} ${version} ${JSON.stringify(walletInfo)}`;
    }
  });

  await t.step("All releases sequentially (all tags in the release order, next)", async () => {
    tags.unshift("next");

    const walletInfo = await createWalletViaCli(coin, "cat", "koshka");

    for (const version of tags.toReversed()) {
      if (version !== "next" && version !== tags[0]) await prepareMoneroC(coin, version);
      await $`deno run -A ./tests/compare.ts ${coin} ${version} ${JSON.stringify(walletInfo)}`;
    }

    await Deno.remove("./tests/wallets", { recursive: true }).catch(() => {});
  });

  await Deno.remove("./tests/wallets", { recursive: true }).catch(() => {});
  await Deno.remove("./tests/libs", { recursive: true }).catch(() => {});
});