forked from XRPLF/rippled
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeclarative-suite.js
More file actions
57 lines (50 loc) · 1.68 KB
/
declarative-suite.js
File metadata and controls
57 lines (50 loc) · 1.68 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* global test, suite, suiteSetup, suiteTeardown */
var lodash = require('lodash');
var testutils = require('./testutils');
var LedgerState = require('./ledger-state').LedgerState;
var assert = require('assert-diff');
var config = testutils.init_config();
// We just use equal instead of strictEqual everywhere.
assert.options.strict = true;
function makeSuite (name, ledger_state, tests) {
suite(name, function () {
// build_(setup|teardown) utils functions set state on this context var.
var context = {};
// This runs only once
suiteSetup(function (done) {
var opts = {};
if (ledger_state.dump) {
opts.ledger_file = ledger_state.dump;
}
testutils.build_setup(opts).call(context, function () {
if (opts.ledger_file) {
done();
} else {
var ledger = context.ledger = new LedgerState(ledger_state,
assert, context.remote,
config);
// Run the ledger setup util. This compiles the declarative description
// into a series of transactions and executes them.
ledger.setup(lodash.noop/* logger */, function () {
done();
});
}
});
});
suiteTeardown(function (done) {
testutils.build_teardown().call(context, done);
});
lodash.forOwn(tests, function (func, name) {
test(name, function (done) {
var args = [context, context.ledger, context.remote, done];
while (args.length > func.length && args.length > 1) {
args.shift();
}
func.apply(this, args);
});
});
});
}
module.exports = {
makeSuite: makeSuite
};