arnaucube
arnaucube/circomPublic Self-hosted repository
circom/test_old/commandline.js
test_old/commandline.jsRaw
 1const path = require("path");
 2const fs = require("fs");
 3const cmd=require("node-cmd");
 4const util = require("util");
 5const assert = require("assert");
 6
 7const claimUtils = require("../src/claimUtils.js");
 8
 9cmd.get[util.promisify.custom] = (c) => {
10    return new Promise((resolve, reject) => {
11        cmd.get(c, (err, data, stderr) => {
12            if (err) {
13                reject(err);
14            } else {
15                resolve([data, stderr]);
16            }
17        });
18    });
19};
20
21const getAsync = util.promisify(cmd.get);
22const mkdir = util.promisify(fs.mkdir);
23const writeFile = util.promisify(fs.writeFile);
24
25describe("command line", () => {
26
27    let tmpPath;
28    before(async () => {
29        tmpPath = path.join(__dirname, "..", "tmp");
30        if (!fs.existsSync(tmpPath)) {
31            await mkdir(tmpPath, 0o744);
32        }
33        process.chdir(tmpPath);
34    });
35
36    it("Should create a tree from a claim files", async () => {
37
38        let i;
39        let claims = [];
40        for (i=0; i<100; i++) {
41            const b = Buffer.from([ i / 256, i % 256 ]);
42            claims[i] = claimUtils.buildClaim("0x01", "0x02", "0x03", b).toString("hex");
43        }
44
45        claims = claims.sort();
46        const claimsFile = path.join(tmpPath, "claims100.hex");
47        const dbFile = path.join(tmpPath, "claims100.db");
48        await writeFile(claimsFile, claims.join("\n"), "utf8");
49
50        await getAsync(`${path.join("..", "cli.js")} -d ${dbFile} add ${claimsFile}  `);
51
52        const data = await getAsync(`${path.join("..", "cli.js")} -d ${dbFile} export`);
53        let claims2 = data[0].split("\n");
54
55        claims2 = claims2.filter(function(n){ return n.length>0; });
56        claims2 = claims2.sort();
57
58        assert.equal(claims2.join("\n"), claims.join("\n"));
59
60    }).timeout(20000);
61});