]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Support dumping of the transaction order in testcases
authorMichael Schroeder <mls@suse.de>
Fri, 12 Nov 2021 15:52:23 +0000 (16:52 +0100)
committerMichael Schroeder <mls@suse.de>
Fri, 12 Nov 2021 15:52:23 +0000 (16:52 +0100)
ext/testcase.c
ext/testcase.h

index 7a9e785950f39861a6511246aa5760ec4053ac98..eead74b229e346b524f381b7604f48746d47ba29 100644 (file)
@@ -100,6 +100,7 @@ static struct resultflags2str {
   { TESTCASE_RESULT_CLEANDEPS,         "cleandeps" },
   { TESTCASE_RESULT_JOBS,              "jobs" },
   { TESTCASE_RESULT_USERINSTALLED,     "userinstalled" },
+  { TESTCASE_RESULT_ORDER,             "order" },
   { 0, 0 }
 };
 
@@ -1394,6 +1395,25 @@ testcase_solverresult(Solver *solv, int resultflags)
        }
       queue_free(&q);
     }
+  if ((resultflags & TESTCASE_RESULT_ORDER) != 0)
+    {
+      int i;
+      char buf[256];
+      Id p;
+      Transaction *trans = solver_create_transaction(solv);
+      transaction_order(trans, 0);
+      for (i = 0; i < trans->steps.count; i++)
+       {
+         p = trans->steps.elements[i];
+         if (pool->installed && pool->solvables[p].repo == pool->installed)
+           sprintf(buf, "%4d erase ", i + 1);
+         else
+           sprintf(buf, "%4d install ", i + 1);
+         s = pool_tmpjoin(pool, "order ", buf, testcase_solvid2str(pool, p));
+         strqueue_push(&sq, s);
+       }
+      transaction_free(trans);
+    }
   if ((resultflags & TESTCASE_RESULT_ALTERNATIVES) != 0)
     {
       char *altprefix;
index 5b2e573dcf997faf95bc1e18486ace46f62ad56a..c69098dda5be3a88bff3961b444ecd970ab62e6d 100644 (file)
@@ -21,6 +21,7 @@
 #define TESTCASE_RESULT_CLEANDEPS      (1 << 9)
 #define TESTCASE_RESULT_JOBS           (1 << 10)
 #define TESTCASE_RESULT_USERINSTALLED  (1 << 11)
+#define TESTCASE_RESULT_ORDER          (1 << 12)
 
 /* reuse solver hack, testsolv use only */
 #define TESTCASE_RESULT_REUSE_SOLVER   (1 << 31)