56 lines
1.4 KiB
V
56 lines
1.4 KiB
V
import net.ftp
|
|
|
|
fn check_for_network(tname string) ? {
|
|
$if !network ? {
|
|
eprintln('> skipping ${tname:-20}, since `-d network` is not passed')
|
|
return none
|
|
}
|
|
}
|
|
|
|
fn test_ftp_client() {
|
|
check_for_network(@FN) or { return }
|
|
// Note: this function makes network calls to external servers,
|
|
// that is why it is not a very good idea to run it in CI.
|
|
// If you want to run it manually, use:
|
|
// `v -d network vlib/net/ftp/ftp_test.v`
|
|
mut zftp := ftp.new()
|
|
defer { zftp.close() or {} }
|
|
server := 'ftp.sunet.se:21'
|
|
connect_result := zftp.connect(server) or {
|
|
eprintln('> skipping test_ftp_client: could not connect to ${server}: ${err}')
|
|
return
|
|
}
|
|
assert connect_result
|
|
println('> connected to ${server}')
|
|
login_result := zftp.login('ftp', 'ftp')!
|
|
assert login_result
|
|
pwd := zftp.pwd()!
|
|
assert pwd.len > 0
|
|
zftp.cd('/')!
|
|
dir_list1 := zftp.dir()!
|
|
assert dir_list1.len > 0
|
|
}
|
|
|
|
fn test_ftp_get() ! {
|
|
check_for_network(@FN) or { return }
|
|
mut zftp := ftp.new()
|
|
defer { zftp.close() or {} }
|
|
server := 'ftp.sunet.se:21'
|
|
connect_result := zftp.connect(server) or {
|
|
eprintln('> skipping test_ftp_get: could not connect to ${server}: ${err}')
|
|
return
|
|
}
|
|
assert connect_result
|
|
println('> connected to ${server}')
|
|
login_result := zftp.login('ftp', 'ftp')!
|
|
assert login_result
|
|
pwd := zftp.pwd()!
|
|
assert pwd.len > 0
|
|
mut txt := zftp.get('robots.txt')!
|
|
assert txt[0] == 35 // first byte is # char
|
|
zftp.pwd()!
|
|
zftp.cd('pub')!
|
|
zftp.cd('..')!
|
|
zftp.get('robots.txt')!
|
|
}
|