Skip to content

Commit 2f020da

Browse files
committed
Add descriptions to test cases
1 parent fecb04d commit 2f020da

File tree

1 file changed

+35
-24
lines changed

1 file changed

+35
-24
lines changed

lightning/src/ln/interactivetxs.rs

+35-24
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,7 @@ mod tests {
943943
}
944944

945945
struct TestSession {
946+
description: &'static str,
946947
inputs_a: Vec<(TxIn, TransactionU16LenLimited)>,
947948
outputs_a: Vec<TxOut>,
948949
inputs_b: Vec<(TxIn, TransactionU16LenLimited)>,
@@ -1034,7 +1035,12 @@ mod tests {
10341035
},
10351036
_ => ErrorCulprit::NodeA,
10361037
};
1037-
assert_eq!(Some((abort_reason, error_culprit)), session.expect_error);
1038+
assert_eq!(
1039+
Some((abort_reason, error_culprit)),
1040+
session.expect_error,
1041+
"Test: {}",
1042+
session.description
1043+
);
10381044
assert!(message_send_b.is_none());
10391045
return;
10401046
},
@@ -1053,7 +1059,12 @@ mod tests {
10531059
},
10541060
_ => ErrorCulprit::NodeB,
10551061
};
1056-
assert_eq!(Some((abort_reason, error_culprit)), session.expect_error);
1062+
assert_eq!(
1063+
Some((abort_reason, error_culprit)),
1064+
session.expect_error,
1065+
"Test: {}",
1066+
session.description
1067+
);
10571068
assert!(message_send_a.is_none());
10581069
return;
10591070
},
@@ -1172,56 +1183,55 @@ mod tests {
11721183

11731184
#[test]
11741185
fn test_interactive_tx_constructor() {
1175-
// No contributions.
11761186
do_test_interactive_tx_constructor(TestSession {
1187+
description: "No contributions",
11771188
inputs_a: vec![],
11781189
outputs_a: vec![],
11791190
inputs_b: vec![],
11801191
outputs_b: vec![],
11811192
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeA)),
11821193
});
1183-
// Single contribution, no initiator inputs.
11841194
do_test_interactive_tx_constructor(TestSession {
1195+
description: "Single contribution, no initiator inputs",
11851196
inputs_a: vec![],
11861197
outputs_a: generate_outputs(&[1_000_000]),
11871198
inputs_b: vec![],
11881199
outputs_b: vec![],
11891200
expect_error: Some((AbortReason::OutputsValueExceedsInputsValue, ErrorCulprit::NodeA)),
11901201
});
1191-
// Single contribution, no initiator outputs.
11921202
do_test_interactive_tx_constructor(TestSession {
1203+
description: "Single contribution, no initiator outputs",
11931204
inputs_a: generate_inputs(&[1_000_000]),
11941205
outputs_a: vec![],
11951206
inputs_b: vec![],
11961207
outputs_b: vec![],
11971208
expect_error: None,
11981209
});
1199-
// Single contribution, insufficient fees.
12001210
do_test_interactive_tx_constructor(TestSession {
1211+
description: "Single contribution, insufficient fees",
12011212
inputs_a: generate_inputs(&[1_000_000]),
12021213
outputs_a: generate_outputs(&[1_000_000]),
12031214
inputs_b: vec![],
12041215
outputs_b: vec![],
12051216
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeA)),
12061217
});
1207-
// Initiator contributes sufficient fees, but non-initiator does not.
12081218
do_test_interactive_tx_constructor(TestSession {
1219+
description: "Initiator contributes sufficient fees, but non-initiator does not",
12091220
inputs_a: generate_inputs(&[1_000_000]),
12101221
outputs_a: vec![],
12111222
inputs_b: generate_inputs(&[100_000]),
12121223
outputs_b: generate_outputs(&[100_000]),
12131224
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeB)),
12141225
});
1215-
// Multi-input-output contributions from both sides.
12161226
do_test_interactive_tx_constructor(TestSession {
1227+
description: "Multi-input-output contributions from both sides",
12171228
inputs_a: generate_inputs(&[1_000_000, 1_000_000]),
12181229
outputs_a: generate_outputs(&[1_000_000, 200_000]),
12191230
inputs_b: generate_inputs(&[1_000_000, 500_000]),
12201231
outputs_b: generate_outputs(&[1_000_000, 400_000]),
12211232
expect_error: None,
12221233
});
12231234

1224-
// Prevout from initiator is not a witness program
12251235
let non_segwit_output_tx = {
12261236
let mut tx = generate_tx(&[1_000_000]);
12271237
tx.output.push(TxOut {
@@ -1243,64 +1253,65 @@ mod tests {
12431253
..Default::default()
12441254
};
12451255
do_test_interactive_tx_constructor(TestSession {
1256+
description: "Prevout from initiator is not a witness program",
12461257
inputs_a: vec![(non_segwit_input, non_segwit_output_tx)],
12471258
outputs_a: vec![],
12481259
inputs_b: vec![],
12491260
outputs_b: vec![],
12501261
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
12511262
});
12521263

1253-
// Invalid input sequence from initiator.
12541264
let tx = TransactionU16LenLimited::new(generate_tx(&[1_000_000])).unwrap();
12551265
let invalid_sequence_input = TxIn {
12561266
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12571267
..Default::default()
12581268
};
12591269
do_test_interactive_tx_constructor(TestSession {
1270+
description: "Invalid input sequence from initiator",
12601271
inputs_a: vec![(invalid_sequence_input, tx.clone())],
12611272
outputs_a: generate_outputs(&[1_000_000]),
12621273
inputs_b: vec![],
12631274
outputs_b: vec![],
12641275
expect_error: Some((AbortReason::IncorrectInputSequenceValue, ErrorCulprit::NodeA)),
12651276
});
1266-
// Duplicate prevout from initiator.
12671277
let duplicate_input = TxIn {
12681278
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12691279
sequence: Sequence::ENABLE_RBF_NO_LOCKTIME,
12701280
..Default::default()
12711281
};
12721282
do_test_interactive_tx_constructor(TestSession {
1283+
description: "Duplicate prevout from initiator",
12731284
inputs_a: vec![(duplicate_input.clone(), tx.clone()), (duplicate_input, tx.clone())],
12741285
outputs_a: generate_outputs(&[1_000_000]),
12751286
inputs_b: vec![],
12761287
outputs_b: vec![],
12771288
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeB)),
12781289
});
1279-
// Non-initiator uses same prevout as initiator.
12801290
let duplicate_input = TxIn {
12811291
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12821292
sequence: Sequence::ENABLE_RBF_NO_LOCKTIME,
12831293
..Default::default()
12841294
};
12851295
do_test_interactive_tx_constructor(TestSession {
1296+
description: "Non-initiator uses same prevout as initiator",
12861297
inputs_a: vec![(duplicate_input.clone(), tx.clone())],
12871298
outputs_a: generate_outputs(&[1_000_000]),
12881299
inputs_b: vec![(duplicate_input.clone(), tx.clone())],
12891300
outputs_b: vec![],
12901301
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
12911302
});
1292-
// Initiator sends too many TxAddInputs
12931303
do_test_interactive_tx_constructor(TestSession {
1304+
description: "Initiator sends too many TxAddInputs",
12941305
inputs_a: generate_fixed_number_of_inputs(MAX_RECEIVED_TX_ADD_INPUT_COUNT + 1),
12951306
outputs_a: vec![],
12961307
inputs_b: vec![],
12971308
outputs_b: vec![],
12981309
expect_error: Some((AbortReason::ReceivedTooManyTxAddInputs, ErrorCulprit::NodeA)),
12991310
});
1300-
// Attempt to queue up two inputs with duplicate serial ids. We use a deliberately bad
1301-
// entropy source, `DuplicateEntropySource` to simulate this.
13021311
do_test_interactive_tx_constructor_with_entropy_source(
13031312
TestSession {
1313+
// We use a deliberately bad entropy source, `DuplicateEntropySource` to simulate this.
1314+
description: "Attempt to queue up two inputs with duplicate serial ids",
13041315
inputs_a: generate_fixed_number_of_inputs(2),
13051316
outputs_a: vec![],
13061317
inputs_b: vec![],
@@ -1309,42 +1320,42 @@ mod tests {
13091320
},
13101321
&DuplicateEntropySource,
13111322
);
1312-
// Initiator sends too many TxAddOutputs.
13131323
do_test_interactive_tx_constructor(TestSession {
1324+
description: "Initiator sends too many TxAddOutputs",
13141325
inputs_a: vec![],
13151326
outputs_a: generate_fixed_number_of_outputs(MAX_RECEIVED_TX_ADD_OUTPUT_COUNT + 1),
13161327
inputs_b: vec![],
13171328
outputs_b: vec![],
13181329
expect_error: Some((AbortReason::ReceivedTooManyTxAddOutputs, ErrorCulprit::NodeA)),
13191330
});
1320-
// Initiator sends an output below dust value.
13211331
do_test_interactive_tx_constructor(TestSession {
1332+
description: "Initiator sends an output below dust value",
13221333
inputs_a: vec![],
13231334
outputs_a: generate_outputs(&[1]),
13241335
inputs_b: vec![],
13251336
outputs_b: vec![],
13261337
expect_error: Some((AbortReason::BelowDustLimit, ErrorCulprit::NodeA)),
13271338
});
1328-
// Initiator sends an output above maximum sats allowed.
13291339
do_test_interactive_tx_constructor(TestSession {
1340+
description: "Initiator sends an output above maximum sats allowed",
13301341
inputs_a: vec![],
13311342
outputs_a: generate_outputs(&[TOTAL_BITCOIN_SUPPLY_SATOSHIS + 1]),
13321343
inputs_b: vec![],
13331344
outputs_b: vec![],
13341345
expect_error: Some((AbortReason::ExceededMaximumSatsAllowed, ErrorCulprit::NodeA)),
13351346
});
1336-
// Initiator sends an output without a witness program.
13371347
do_test_interactive_tx_constructor(TestSession {
1348+
description: "Initiator sends an output without a witness program",
13381349
inputs_a: vec![],
13391350
outputs_a: vec![generate_non_witness_output(1_000_000)],
13401351
inputs_b: vec![],
13411352
outputs_b: vec![],
13421353
expect_error: Some((AbortReason::InvalidOutputScript, ErrorCulprit::NodeA)),
13431354
});
1344-
// Attempt to queue up two outputs with duplicate serial ids. We use a deliberately bad
1345-
// entropy source, `DuplicateEntropySource` to simulate this.
13461355
do_test_interactive_tx_constructor_with_entropy_source(
13471356
TestSession {
1357+
// We use a deliberately bad entropy source, `DuplicateEntropySource` to simulate this.
1358+
description: "Attempt to queue up two outputs with duplicate serial ids",
13481359
inputs_a: vec![],
13491360
outputs_a: generate_fixed_number_of_outputs(2),
13501361
inputs_b: vec![],
@@ -1354,17 +1365,17 @@ mod tests {
13541365
&DuplicateEntropySource,
13551366
);
13561367

1357-
// Peer contributed more output value than inputs
13581368
do_test_interactive_tx_constructor(TestSession {
1369+
description: "Peer contributed more output value than inputs",
13591370
inputs_a: generate_inputs(&[100_000]),
13601371
outputs_a: generate_outputs(&[1_000_000]),
13611372
inputs_b: vec![],
13621373
outputs_b: vec![],
13631374
expect_error: Some((AbortReason::OutputsValueExceedsInputsValue, ErrorCulprit::NodeA)),
13641375
});
13651376

1366-
// Peer contributed more than allowed number of inputs.
13671377
do_test_interactive_tx_constructor(TestSession {
1378+
description: "Peer contributed more than allowed number of inputs",
13681379
inputs_a: generate_fixed_number_of_inputs(MAX_INPUTS_OUTPUTS_COUNT as u16 + 1),
13691380
outputs_a: vec![],
13701381
inputs_b: vec![],
@@ -1374,8 +1385,8 @@ mod tests {
13741385
ErrorCulprit::Indeterminate,
13751386
)),
13761387
});
1377-
// Peer contributed more than allowed number of outputs.
13781388
do_test_interactive_tx_constructor(TestSession {
1389+
description: "Peer contributed more than allowed number of outputs",
13791390
inputs_a: generate_inputs(&[TOTAL_BITCOIN_SUPPLY_SATOSHIS]),
13801391
outputs_a: generate_fixed_number_of_outputs(MAX_INPUTS_OUTPUTS_COUNT as u16 + 1),
13811392
inputs_b: vec![],

0 commit comments

Comments
 (0)