102 lines
2.3 KiB
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)
|
|
os.rmdir_all(vcache_folder) or {}
|
|
assert !os.is_dir(vcache_folder)
|
|
}
|