generator: Add TestOutputDevice.
authorRichard Jones <rjones@redhat.com>
Wed, 15 Sep 2010 16:15:44 +0000 (17:15 +0100)
committerRichard Jones <rjones@redhat.com>
Wed, 15 Sep 2010 16:16:51 +0000 (17:16 +0100)
This is for testing functions that return a device or partition
name, so that we can compare the return value with the canonical
device name (eg. "/dev/vda1" == "/dev/sda1").

generator/generator_capitests.ml
generator/generator_types.ml
generator/generator_utils.ml

index 044c70d..594c867 100644 (file)
@@ -685,6 +685,19 @@ and generate_one_test_body name i test_name init test =
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
+  | TestOutputDevice (seq, expected) ->
+      pr "  /* TestOutputDevice for %s (%d) */\n" name i;
+      pr "  const char *expected = \"%s\";\n" (c_quote expected);
+      let seq, last = get_seq_last seq in
+      let test () =
+        pr "    r[5] = 's';\n";
+        pr "    if (STRNEQ (r, expected)) {\n";
+        pr "      fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r);\n" test_name;
+        pr "      return -1;\n";
+        pr "    }\n"
+      in
+      List.iter (generate_test_command_call test_name) seq;
+      generate_test_command_call ~test test_name last
   | TestLastFail seq ->
       pr "  /* TestLastFail for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
   | TestLastFail seq ->
       pr "  /* TestLastFail for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
index 49d3792..0ed6f74 100644 (file)
@@ -266,6 +266,12 @@ and test =
      *)
   | TestOutputFileMD5 of seq * string
 
      *)
   | TestOutputFileMD5 of seq * string
 
+    (* Run the command sequence and expect the output of the final
+     * command to be a string which is a block device name (we don't
+     * check the 5th character of the string, so "/dev/sda" == "/dev/vda").
+     *)
+  | TestOutputDevice of seq * string
+
   (* Run the command sequence and expect the final command (only)
    * to fail.
    *)
   (* Run the command sequence and expect the final command (only)
    * to fail.
    *)
index 329e6ce..2bdcc0d 100644 (file)
@@ -240,6 +240,7 @@ let seq_of_test = function
   | TestOutputLength (s, _) | TestOutputBuffer (s, _)
   | TestOutputStruct (s, _)
   | TestOutputFileMD5 (s, _)
   | TestOutputLength (s, _) | TestOutputBuffer (s, _)
   | TestOutputStruct (s, _)
   | TestOutputFileMD5 (s, _)
+  | TestOutputDevice (s, _)
   | TestLastFail s -> s
 
 let c_quote str =
   | TestLastFail s -> s
 
 let c_quote str =