# # # patch "automate.cc" # from [6519694114e5381dce9f2c2d3fe1454f5b5b6f64] # to [786b895a5c7dff49030b9280c0e9e03453ce7c3c] # # patch "tests/automate_cert/__driver__.lua" # from [5dc754cbcd83fffd23652e6ba521d060d7c759aa] # to [21c1631cb67da926ed7fdc1995db5dae2130bb05] # ============================================================ --- automate.cc 6519694114e5381dce9f2c2d3fe1454f5b5b6f64 +++ automate.cc 786b895a5c7dff49030b9280c0e9e03453ce7c3c @@ -1737,11 +1737,16 @@ AUTOMATE(cert, N_("REVISION-ID NAME VALU cert c; revision_id rid(idx(args, 0)()); + + transaction_guard guard(app.db); + N(app.db.revision_exists(rid), + F("no such revision '%s'") % rid); make_simple_cert(rid.inner(), cert_name(idx(args, 1)()), cert_value(idx(args, 2)()), app, c); revision rc(c); packet_db_writer dbw(app); dbw.consume_revision_cert(rc); + guard.commit(); } // Name: db_set ============================================================ --- tests/automate_cert/__driver__.lua 5dc754cbcd83fffd23652e6ba521d060d7c759aa +++ tests/automate_cert/__driver__.lua 21c1631cb67da926ed7fdc1995db5dae2130bb05 @@ -17,3 +17,12 @@ check(samefile("expected", "stdout")) check(mtn("automate", "certs", base), 0, true, false) canonicalize("stdout") check(samefile("expected", "stdout")) + +-- check edge cases: +-- wrong number of arguments: +check(mtn("automate", "cert", base, "asdf"), 1, false, false) +check(mtn("automate", "cert", base, "testcert", "testvalue", "asdf"), 1, false, false) +-- nonexistent revision: +check(mtn("automate", "cert", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "branch", "net.venge.monotone"), + 1, false, false)