mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00

Some checks failed
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (push) Waiting to run
sdl CI / v-compiles-sdl-examples (push) Waiting to run
Time CI / time-linux (push) Waiting to run
Time CI / time-macos (push) Waiting to run
Time CI / time-windows (push) Waiting to run
toml CI / toml-module-pass-external-test-suites (push) Waiting to run
Tools CI / tools-linux (clang) (push) Waiting to run
Tools CI / tools-linux (gcc) (push) Waiting to run
Tools CI / tools-linux (tcc) (push) Waiting to run
Tools CI / tools-macos (clang) (push) Waiting to run
Tools CI / tools-windows (gcc) (push) Waiting to run
Tools CI / tools-windows (msvc) (push) Waiting to run
Tools CI / tools-windows (tcc) (push) Waiting to run
Tools CI / tools-docker-ubuntu-musl (push) Waiting to run
vab CI / vab-compiles-v-examples (push) Waiting to run
vab CI / v-compiles-os-android (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Has been cancelled
native backend CI / native-backend-windows (push) Has been cancelled
Sanitized CI / sanitize-undefined-clang (push) Has been cancelled
Sanitized CI / sanitize-undefined-gcc (push) Has been cancelled
Sanitized CI / tests-sanitize-address-clang (push) Has been cancelled
Sanitized CI / sanitize-address-msvc (push) Has been cancelled
Sanitized CI / sanitize-address-gcc (push) Has been cancelled
Sanitized CI / sanitize-memory-clang (push) Has been cancelled
wasm backend CI / wasm-backend (ubuntu-22.04) (push) Has been cancelled
wasm backend CI / wasm-backend (windows-2022) (push) Has been cancelled
52 lines
1.3 KiB
V
52 lines
1.3 KiB
V
// vtest build: !windows
|
||
// vtest retry: 2
|
||
import os
|
||
import time
|
||
|
||
fn test_input_rune_iterator_with_unicode_input() {
|
||
mut p := os.new_process(@VEXE)
|
||
p.set_args(['-e', 'for i, r in input_rune_iterator() { println("> i: \${i:04} | r: `\${r}`") }'])
|
||
p.set_redirect_stdio()
|
||
p.run()
|
||
spawn fn [mut p] () {
|
||
time.sleep(10 * time.millisecond)
|
||
dump(p.pid)
|
||
p.stdin_write('Проба Abc 你好 🌍 123')
|
||
time.sleep(10 * time.millisecond)
|
||
p.stdin_write('\0x00') // 0 should break the input stream
|
||
time.sleep(10 * time.millisecond)
|
||
eprintln('>>> done')
|
||
}()
|
||
mut olines := []string{}
|
||
for p.is_alive() {
|
||
if oline := p.pipe_read(.stdout) {
|
||
olines << oline
|
||
}
|
||
time.sleep(1 * time.millisecond)
|
||
}
|
||
p.close()
|
||
p.wait()
|
||
assert p.code == 0
|
||
eprintln('done')
|
||
solines := olines.join('\n').trim_space().replace('\r', '')
|
||
eprintln('solines.len: ${solines.len} | solines: ${solines}')
|
||
assert solines.len > 100
|
||
assert solines == '> i: 0000 | r: `П`
|
||
> i: 0001 | r: `р`
|
||
> i: 0002 | r: `о`
|
||
> i: 0003 | r: `б`
|
||
> i: 0004 | r: `а`
|
||
> i: 0005 | r: ` `
|
||
> i: 0006 | r: `A`
|
||
> i: 0007 | r: `b`
|
||
> i: 0008 | r: `c`
|
||
> i: 0009 | r: ` `
|
||
> i: 0010 | r: `你`
|
||
> i: 0011 | r: `好`
|
||
> i: 0012 | r: ` `
|
||
> i: 0013 | r: `🌍`
|
||
> i: 0014 | r: ` `
|
||
> i: 0015 | r: `1`
|
||
> i: 0016 | r: `2`
|
||
> i: 0017 | r: `3`'
|
||
}
|