Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,164 @@
|
||||
import os
|
||||
|
||||
fn testsuite_begin() {
|
||||
// Calling unbuffer_stdout() here is important, in order
|
||||
// for `v test pipe_test.v` to work, since the test runner
|
||||
// will start a non interactive process for the test, in which
|
||||
// case libc buffers the output lines by default -> failures.
|
||||
unbuffer_stdout()
|
||||
}
|
||||
|
||||
fn test_pipe_basic() {
|
||||
println('=== Testing basic pipe functionality ===')
|
||||
mut pipe := os.pipe()!
|
||||
defer {
|
||||
pipe.close()
|
||||
}
|
||||
test_data := 'Hello, Pipe!'
|
||||
bytes_written := pipe.write(test_data.bytes()) or {
|
||||
eprintln('Failed to write to pipe: ${err}')
|
||||
return
|
||||
}
|
||||
println('Written ${bytes_written} bytes to pipe')
|
||||
mut buffer := []u8{len: 1024}
|
||||
bytes_read := pipe.read(mut buffer) or {
|
||||
eprintln('Failed to read from pipe: ${err}')
|
||||
return
|
||||
}
|
||||
received_data := buffer[0..bytes_read].bytestr()
|
||||
println('Read ${bytes_read} bytes from pipe: "${received_data}"')
|
||||
assert bytes_written == bytes_read
|
||||
assert test_data == received_data
|
||||
println('✓ Basic pipe test passed')
|
||||
}
|
||||
|
||||
fn test_pipe_large_data() {
|
||||
println('=== Testing pipe with large data ===')
|
||||
mut pipe := os.pipe()!
|
||||
defer {
|
||||
pipe.close()
|
||||
}
|
||||
large_data := 'X'.repeat(1000)
|
||||
bytes_written := pipe.write(large_data.bytes()) or {
|
||||
eprintln('Failed to write large data to pipe: ${err}')
|
||||
return
|
||||
}
|
||||
println('Written ${bytes_written} bytes of large data to pipe')
|
||||
mut buffer := []u8{len: 1024}
|
||||
bytes_read := pipe.read(mut buffer) or {
|
||||
eprintln('Failed to read large data from pipe: ${err}')
|
||||
return
|
||||
}
|
||||
assert bytes_written == bytes_read
|
||||
assert bytes_read == 1000
|
||||
println('✓ Large data pipe test passed')
|
||||
}
|
||||
|
||||
fn test_capture_stdout() {
|
||||
println('=== Testing stdout capture ===')
|
||||
mut cap := os.stdio_capture()!
|
||||
test_output := 'This is stdout test message'
|
||||
println(test_output)
|
||||
println('Another stdout line')
|
||||
cap.stop()
|
||||
stdout := cap.stdout.slurp().join('\n')
|
||||
stderr := cap.stderr.slurp().join('\n')
|
||||
cap.close()
|
||||
println('Captured stdout: "${stdout}"')
|
||||
println('Captured stderr: "${stderr}"')
|
||||
assert stdout.contains(test_output)
|
||||
assert stdout.contains('Another stdout line')
|
||||
assert stderr == ''
|
||||
println('✓ Stdout capture test passed')
|
||||
}
|
||||
|
||||
fn test_capture_stderr() {
|
||||
println('=== Testing stderr capture ===')
|
||||
mut cap := os.stdio_capture()!
|
||||
test_error := 'This is stderr test message'
|
||||
eprintln(test_error)
|
||||
eprintln('Another stderr line')
|
||||
cap.stop()
|
||||
stdout := cap.stdout.slurp().join('\n')
|
||||
stderr := cap.stderr.slurp().join('\n')
|
||||
cap.close()
|
||||
println('Captured stdout: "${stdout}"')
|
||||
println('Captured stderr: "${stderr}"')
|
||||
assert stderr.contains(test_error)
|
||||
assert stderr.contains('Another stderr line')
|
||||
assert stdout == ''
|
||||
println('✓ Stderr capture test passed')
|
||||
}
|
||||
|
||||
fn test_capture_both() {
|
||||
println('=== Testing both stdout and stderr capture ===')
|
||||
mut cap := os.stdio_capture()!
|
||||
stdout_msg := 'Standard output message'
|
||||
stderr_msg := 'Standard error message'
|
||||
println(stdout_msg)
|
||||
eprintln(stderr_msg)
|
||||
println('More stdout')
|
||||
eprintln('More stderr')
|
||||
cap.stop()
|
||||
stdout := cap.stdout.slurp().join('\n')
|
||||
stderr := cap.stderr.slurp().join('\n')
|
||||
cap.close()
|
||||
println('Captured stdout: "${stdout}"')
|
||||
println('Captured stderr: "${stderr}"')
|
||||
assert stdout.contains(stdout_msg)
|
||||
assert stdout.contains('More stdout')
|
||||
assert stderr.contains(stderr_msg)
|
||||
assert stderr.contains('More stderr')
|
||||
assert !stdout.contains(stderr_msg)
|
||||
assert !stderr.contains(stdout_msg)
|
||||
println('✓ Both stdout and stderr capture test passed')
|
||||
}
|
||||
|
||||
fn test_capture_both_finish() {
|
||||
println('=== Testing both stdout and stderr capture (finish)===')
|
||||
mut cap := os.stdio_capture()!
|
||||
stdout_msg := 'Standard output message'
|
||||
stderr_msg := 'Standard error message'
|
||||
println(stdout_msg)
|
||||
eprintln(stderr_msg)
|
||||
println('More stdout')
|
||||
eprintln('More stderr')
|
||||
stdout_list, stderr_list := cap.finish()
|
||||
stdout := stdout_list.join('\n')
|
||||
stderr := stderr_list.join('\n')
|
||||
println('Captured stdout: "${stdout}"')
|
||||
println('Captured stderr: "${stderr}"')
|
||||
assert stdout.contains(stdout_msg)
|
||||
assert stdout.contains('More stdout')
|
||||
assert stderr.contains(stderr_msg)
|
||||
assert stderr.contains('More stderr')
|
||||
assert !stdout.contains(stderr_msg)
|
||||
assert !stderr.contains(stdout_msg)
|
||||
println('✓ Both stdout and stderr capture test passed')
|
||||
}
|
||||
|
||||
fn test_capture_restoration() {
|
||||
println('=== Testing output restoration after capture ===')
|
||||
original_stdout_msg := 'Before capture - stdout'
|
||||
original_stderr_msg := 'Before capture - stderr'
|
||||
println(original_stdout_msg)
|
||||
eprintln(original_stderr_msg)
|
||||
mut cap := os.stdio_capture()!
|
||||
captured_stdout_msg := 'During capture - stdout'
|
||||
captured_stderr_msg := 'During capture - stderr'
|
||||
println(captured_stdout_msg)
|
||||
eprintln(captured_stderr_msg)
|
||||
cap.stop()
|
||||
stdout := cap.stdout.slurp().join('\n')
|
||||
stderr := cap.stderr.slurp().join('\n')
|
||||
cap.close()
|
||||
after_capture_stdout_msg := 'After capture - stdout'
|
||||
after_capture_stderr_msg := 'After capture - stderr'
|
||||
println(after_capture_stdout_msg)
|
||||
eprintln(after_capture_stderr_msg)
|
||||
assert stdout.contains(captured_stdout_msg)
|
||||
assert stderr.contains(captured_stderr_msg)
|
||||
assert !stdout.contains(original_stdout_msg)
|
||||
assert !stderr.contains(original_stderr_msg)
|
||||
println('✓ Output restoration test passed')
|
||||
}
|
||||
Reference in new issue
Block a user