]> sigrok.org Git - libsigrokdecode.git/blobdiff - tests/runtc.c
tests/check_session.c: Fix compiler warning.
[libsigrokdecode.git] / tests / runtc.c
index 059262d3918660a83a9c5058bfa6ff802fa2388d..11ae560dbea4766c63872d09018dbf9b333a6e66 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <Python.h>
 #include "../libsigrokdecode.h"
 #include <libsigrok/libsigrok.h>
 #include <stdlib.h>
@@ -35,7 +36,7 @@
 #ifdef __LINUX__
 #include <sched.h>
 #endif
-#include "../config.h"
+#include "config.h"
 
 int debug = FALSE;
 int statistics = FALSE;
@@ -48,7 +49,7 @@ struct channel {
 
 struct option {
        char *key;
-       char *value;
+       GVariant *value;
 };
 
 struct pd {
@@ -337,6 +338,7 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
        int idx;
        int max_channel;
        char **decoder_class;
+       struct sr_session *sr_sess;
 
        if (op->outfile) {
                if ((op->outfd = open(op->outfile, O_CREAT|O_WRONLY, 0600)) == -1) {
@@ -346,12 +348,12 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
                }
        }
 
-       if (sr_session_load(infile) != SR_OK)
+       if (sr_session_load(infile, &sr_sess) != SR_OK)
                return FALSE;
 
        if (srd_session_new(&sess) != SRD_OK)
                return FALSE;
-       sr_session_datafeed_callback_add(sr_cb, sess);
+       sr_session_datafeed_callback_add(sr_sess, sr_cb, sess);
        switch (op->type) {
        case SRD_OUTPUT_ANN:
                cb = srd_cb_ann;
@@ -443,9 +445,9 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
                        DBG("Class %s index is %d", op->class, op->class_idx);
        }
 
-       sr_session_start();
-       sr_session_run();
-       sr_session_stop();
+       sr_session_start(sr_sess);
+       sr_session_run(sr_sess);
+       sr_session_stop(sr_sess);
 
        srd_session_destroy(sess);
 
@@ -736,7 +738,8 @@ int main(int argc, char **argv)
                        } else {
                                option = malloc(sizeof(struct option));
                                option->key = g_strdup(kv[0]);
-                               option->value = g_strdup(kv[1]);
+                               option->value = g_variant_new_string(kv[1]);
+                g_variant_ref_sink(option->value);
                                /* Apply to last PD. */
                                pd->options = g_slist_append(pd->options, option);
                        }
@@ -759,6 +762,9 @@ int main(int argc, char **argv)
                                op->type = SRD_OUTPUT_BINARY;
                        else if (!strcmp(opstr[1], "python"))
                                op->type = SRD_OUTPUT_PYTHON;
+                       else if (!strcmp(opstr[1], "exception"))
+                /* Doesn't matter, we just need it to bomb out. */
+                               op->type = SRD_OUTPUT_PYTHON;
                        else {
                                ERR("Unknown output type '%s'", opstr[1]);
                                g_strfreev(opstr);