v/vlib/v/vcache/vcache_test.v

102 lines
2.3 KiB
V

import os
import v.vcache
const (
vcache_folder = os.join_path(os.temp_dir(), 'vcache_folder')
)
fn check_cache_entry_fpath_invariants(x string, extension string) {
a := x.replace(vcache_folder + os.path_separator, '').split(os.path_separator)
assert a.len > 0
assert a[0].len == 2
assert a[1].len > 32
assert os.file_ext(a[1]) == extension
assert a[1][0..2] == a[0]
}
fn testsuite_begin() {
os.setenv('VCACHE', vcache_folder, true)
// eprintln('testsuite_begin, vcache_folder = $vcache_folder')
os.rmdir_all(vcache_folder) or {}
vcache.new_cache_manager([])
assert os.is_dir(vcache_folder)
}
fn test_save_and_load() {
mut cm := vcache.new_cache_manager([])
x := cm.save('.txt', 'first/cache/entry', 'hello') or {
assert false
''
}
check_cache_entry_fpath_invariants(x, '.txt')
}
fn test_different_options_should_produce_different_cache_entries_for_same_key_and_content() {
mut cm1 := vcache.new_cache_manager([])
mut cm2 := vcache.new_cache_manager(['-cc tcc'])
mut cm3 := vcache.new_cache_manager(['-cc gcc'])
x := cm1.save('.txt', 'first/cache/entry', 'hello') or {
assert false
''
}
y := cm2.save('.txt', 'first/cache/entry', 'hello') or {
assert false
''
}
z := cm3.save('.txt', 'first/cache/entry', 'hello') or {
assert false
''
}
check_cache_entry_fpath_invariants(x, '.txt')
check_cache_entry_fpath_invariants(y, '.txt')
check_cache_entry_fpath_invariants(z, '.txt')
}
fn test_exists() {
mut cm := vcache.new_cache_manager([])
cm.exists('.o', 'abc') or { assert true }
//
x := cm.save('.x', 'abc', '') or {
assert false
''
}
cm.exists('.o', 'abc') or { assert true }
//
y := cm.save('.o', 'zbc', '') or {
assert false
''
}
cm.exists('.o', 'abc') or { assert true }
//
z := cm.save('.o', 'abc', '') or {
assert false
''
}
cm.exists('.o', 'abc') or { assert false }
//
assert os.is_file(x)
assert os.is_file(y)
assert os.is_file(z)
assert x != y
assert x != z
assert y != z
}
fn test_readme_exists_and_is_readable() {
vcache.new_cache_manager([])
freadme := os.join_path(vcache_folder, 'README.md')
assert os.is_file(freadme)
x := os.read_file(freadme) or {
assert false
''
}
assert x.len > 0
assert x.starts_with('This folder contains cached build artifacts')
}
fn testsuite_end() {
os.chdir(os.wd_at_startup) or {}
os.rmdir_all(vcache_folder) or {}
assert !os.is_dir(vcache_folder)
}