diff --git a/src/ripple/app/tests/SusPay_test.cpp b/src/ripple/app/tests/SusPay_test.cpp index d61354f1e..be84c0a50 100644 --- a/src/ripple/app/tests/SusPay_test.cpp +++ b/src/ripple/app/tests/SusPay_test.cpp @@ -146,7 +146,7 @@ struct SusPay_test : public beast::unit_test::suite using S = seconds; { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob"); auto const c = cond("receipt"); @@ -169,7 +169,7 @@ struct SusPay_test : public beast::unit_test::suite { Env env(*this); auto const alice = Account("alice"); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), alice, "bob"); auto const c = cond("receipt"); @@ -190,7 +190,7 @@ struct SusPay_test : public beast::unit_test::suite using S = seconds; { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob"); auto const c = cond("receipt"); @@ -222,7 +222,7 @@ struct SusPay_test : public beast::unit_test::suite using S = seconds; { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob"); auto const seq = env.seq("alice"); @@ -244,7 +244,7 @@ struct SusPay_test : public beast::unit_test::suite using S = seconds; { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob", "carol"); auto const c = cond("receipt"); @@ -270,7 +270,7 @@ struct SusPay_test : public beast::unit_test::suite } { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob", "carol"); auto const c = cond("receipt"); @@ -287,7 +287,7 @@ struct SusPay_test : public beast::unit_test::suite } { Env env(*this); - auto const T = [&env](NetClock::duration const& d) + auto T = [&env](NetClock::duration const& d) { return env.clock.now() + d; }; env.fund(XRP(5000), "alice", "bob", "carol"); env.close(); @@ -306,6 +306,22 @@ struct SusPay_test : public beast::unit_test::suite } } + void + testMeta() + { + using namespace jtx; + using namespace std::chrono; + using S = seconds; + Env env(*this); + auto T = [&env](NetClock::duration const& d) + { return env.clock.now() + d; }; + env.fund(XRP(5000), "alice", "bob", "carol"); + auto const c = cond("receipt"); + env(condpay("alice", "carol", XRP(1000), c.first, T(S{1}))); + auto const m = env.meta(); + expect((*m)[sfTransactionResult] == tesSUCCESS); + } + void run() override { testEnablement(); @@ -313,6 +329,7 @@ struct SusPay_test : public beast::unit_test::suite testFails(); testLockup(); testCondPay(); + testMeta(); } }; diff --git a/src/ripple/test/jtx/Env.h b/src/ripple/test/jtx/Env.h index 9171e3156..597707461 100644 --- a/src/ripple/test/jtx/Env.h +++ b/src/ripple/test/jtx/Env.h @@ -344,6 +344,17 @@ public: } /** @} */ + /** Return metadata for the last JTx. + + Effects: + + The open ledger is closed as if by a call + to close(). The metadata for the last + transaction ID, if any, is returned. + */ + std::shared_ptr + meta(); + private: void fund (bool setDefaultRipple, @@ -446,6 +457,7 @@ protected: int trace_ = 0; bool testing_ = true; TestStopwatch stopwatch_; + uint256 txid_; void autofill_sig (JTx& jt); diff --git a/src/ripple/test/jtx/impl/Env.cpp b/src/ripple/test/jtx/impl/Env.cpp index 2ba0c5c55..18ccb3031 100644 --- a/src/ripple/test/jtx/impl/Env.cpp +++ b/src/ripple/test/jtx/impl/Env.cpp @@ -258,6 +258,7 @@ Env::submit (JTx const& jt) auto const& stx = jt.stx; if (stx) { + txid_ = stx->getTransactionID(); openLedger.modify( [&](OpenView& view, beast::Journal j) { @@ -297,6 +298,14 @@ Env::submit (JTx const& jt) // held.insert(stx); } +std::shared_ptr +Env::meta() +{ + close(); + auto const item = closed()->txRead(txid_); + return item.second; +} + void Env::autofill_sig (JTx& jt) {