summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-07-29 18:44:46 +0100
committerRichard Jones <rjones@trick.home.annexia.org>2009-07-29 18:44:46 +0100
commitbf2b08560f649c22152e4138531ad0b46b4ad1b3 (patch)
tree3002cb0225a56b15ee905bbbeb52603f3e033f76 /src
parent9847e0c07d5907887e26ec60192fa12aa46277ee (diff)
downloadlibguestfs-bf2b08560f649c22152e4138531ad0b46b4ad1b3.tar.gz
libguestfs-bf2b08560f649c22152e4138531ad0b46b4ad1b3.tar.xz
libguestfs-bf2b08560f649c22152e4138531ad0b46b4ad1b3.zip
tests: Fix read_file test.
The test ignored the fact that this function returns a (char *, size_t) pair, and just treated the char * as a string. This of course would fail if the string didn't happen to be nul-terminated. The tests are updated to add a new TestOutputBuffer type which should be used with functions that return RBufferOut.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/generator.ml29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/generator.ml b/src/generator.ml
index c098ec84..547acb7d 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -243,6 +243,10 @@ and test =
*)
| TestOutputLength of seq * int
(* Run the command sequence and expect the output of the final
+ * command to be a buffer (RBufferOut), ie. string + size.
+ *)
+ | TestOutputBuffer of seq * string
+ (* Run the command sequence and expect the output of the final
* command to be a structure.
*)
| TestOutputStruct of seq * test_field_compare list
@@ -3033,9 +3037,8 @@ with C<guestfs_mkmountpoint>. See C<guestfs_mkmountpoint>
for full details.");
("read_file", (RBufferOut "content", [String "path"]), 150, [ProtocolLimitWarning],
- [InitBasicFS, Always, TestOutput (
- [["write_file"; "/new"; "new file contents"; "0"];
- ["read_file"; "/new"]], "new file contents")],
+ [InitSquashFS, Always, TestOutputBuffer (
+ [["read_file"; "/known-4"]], "abc\ndef\nghi")],
"read a file",
"\
This calls returns the contents of the file C<path> as a
@@ -3471,7 +3474,8 @@ let seq_of_test = function
| TestOutputListOfDevices (s, _)
| TestOutputInt (s, _) | TestOutputIntOp (s, _, _)
| TestOutputTrue s | TestOutputFalse s
- | TestOutputLength (s, _) | TestOutputStruct (s, _)
+ | TestOutputLength (s, _) | TestOutputBuffer (s, _)
+ | TestOutputStruct (s, _)
| TestLastFail s -> s
(* Handling for function flags. *)
@@ -5219,6 +5223,23 @@ 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
+ | TestOutputBuffer (seq, expected) ->
+ pr " /* TestOutputBuffer for %s (%d) */\n" name i;
+ pr " const char *expected = \"%s\";\n" (c_quote expected);
+ let seq, last = get_seq_last seq in
+ let len = String.length expected in
+ let test () =
+ pr " if (size != %d) {\n" len;
+ pr " fprintf (stderr, \"%s: returned size of buffer wrong, expected %d but got %%zu\\n\", size);\n" test_name len;
+ pr " return -1;\n";
+ pr " }\n";
+ pr " if (strncmp (r, expected, size) != 0) {\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
| TestOutputStruct (seq, checks) ->
pr " /* TestOutputStruct for %s (%d) */\n" name i;
let seq, last = get_seq_last seq in