diff --git a/lib/vfs/ourdb_fs/encoder.v b/lib/vfs/ourdb_fs/encoder.v index 96d0d010..a17c03ec 100644 --- a/lib/vfs/ourdb_fs/encoder.v +++ b/lib/vfs/ourdb_fs/encoder.v @@ -17,17 +17,17 @@ fn encode_metadata(mut e encoder.Encoder, m Metadata) { } // decode_metadata decodes the common metadata structure -fn decode_metadata(mut d encoder.Decoder) Metadata { - id := d.get_u32() - name := d.get_string() - file_type_byte := d.get_u8() - size := d.get_u64() - created_at := d.get_i64() - modified_at := d.get_i64() - accessed_at := d.get_i64() - mode := d.get_u32() - owner := d.get_string() - group := d.get_string() +fn decode_metadata(mut d encoder.Decoder) !Metadata { + id := d.get_u32()! + name := d.get_string()! + file_type_byte := d.get_u8()! + size := d.get_u64()! + created_at := d.get_i64()! + modified_at := d.get_i64()! + accessed_at := d.get_i64()! + mode := d.get_u32()! + owner := d.get_string()! + group := d.get_string()! return Metadata{ id: id @@ -69,28 +69,28 @@ pub fn (dir Directory) encode() []u8 { // decode_directory decodes a binary format back to Directory pub fn decode_directory(data []u8) !Directory { mut d := encoder.decoder_new(data) - version := d.get_u8() + version := d.get_u8()! if version != 1 { return error('Unsupported version ${version}') } - type_byte := d.get_u8() + type_byte := d.get_u8()! if type_byte != u8(FileType.directory) { return error('Invalid type byte for directory') } // Decode metadata - metadata := decode_metadata(mut d) + metadata := decode_metadata(mut d)! // Decode parent_id - parent_id := d.get_u32() + parent_id := d.get_u32()! // Decode children IDs - children_count := int(d.get_u16()) + children_count := int(d.get_u16()!) mut children := []u32{cap: children_count} for _ in 0 .. children_count { - children << d.get_u32() + children << d.get_u32()! } return Directory{ @@ -124,24 +124,24 @@ pub fn (f File) encode() []u8 { // decode_file decodes a binary format back to File pub fn decode_file(data []u8) !File { mut d := encoder.decoder_new(data) - version := d.get_u8() + version := d.get_u8()! if version != 1 { return error('Unsupported version ${version}') } - type_byte := d.get_u8() + type_byte := d.get_u8()! if type_byte != u8(FileType.file) { return error('Invalid type byte for file') } // Decode metadata - metadata := decode_metadata(mut d) + metadata := decode_metadata(mut d)! // Decode parent_id - parent_id := d.get_u32() + parent_id := d.get_u32()! // Decode file data - data_content := d.get_string() + data_content := d.get_string()! return File{ metadata: metadata @@ -174,24 +174,24 @@ pub fn (sl Symlink) encode() []u8 { // decode_symlink decodes a binary format back to Symlink pub fn decode_symlink(data []u8) !Symlink { mut d := encoder.decoder_new(data) - version := d.get_u8() + version := d.get_u8()! if version != 1 { return error('Unsupported version ${version}') } - type_byte := d.get_u8() + type_byte := d.get_u8()! if type_byte != u8(FileType.symlink) { return error('Invalid type byte for symlink') } // Decode metadata - metadata := decode_metadata(mut d) + metadata := decode_metadata(mut d)! // Decode parent_id - parent_id := d.get_u32() + parent_id := d.get_u32()! // Decode target path - target := d.get_string() + target := d.get_string()! return Symlink{ metadata: metadata diff --git a/lib/vfs/ourdb_fs/vfs.v b/lib/vfs/ourdb_fs/vfs.v index a8bf67ac..7a7d99ef 100644 --- a/lib/vfs/ourdb_fs/vfs.v +++ b/lib/vfs/ourdb_fs/vfs.v @@ -72,19 +72,19 @@ pub fn (mut fs OurDBFS) save_entry(entry FSEntry) !u32 { match entry { Directory { encoded := entry.encode() - return fs.db_meta.set(entry.metadata.id, encoded) or { + return fs.db_meta.set(id: entry.metadata.id, data: encoded) or { return error('Failed to save directory on id:${entry.metadata.id}: ${err}') } } File { encoded := entry.encode() - return fs.db_meta.set(entry.metadata.id, encoded) or { + return fs.db_meta.set(id: entry.metadata.id, data: encoded) or { return error('Failed to save file on id:${entry.metadata.id}: ${err}') } } Symlink { encoded := entry.encode() - return fs.db_meta.set(entry.metadata.id, encoded) or { + return fs.db_meta.set(id: entry.metadata.id, data: encoded) or { return error('Failed to save symlink on id:${entry.metadata.id}: ${err}') } } diff --git a/lib/vfs/vfscore/local_test.v b/lib/vfs/vfscore/local_test.v index 7c7eb10a..652344ee 100644 --- a/lib/vfs/vfscore/local_test.v +++ b/lib/vfs/vfscore/local_test.v @@ -59,7 +59,7 @@ fn test_vfs_implementations() ! { // Cleanup local_vfs.delete('test2.txt')! local_vfs.delete('subdir')! - local_vfs.delete('test_link.txt')! + local_vfs.delete('test_link.txt') or {} os.rmdir('/tmp/test_local_vfs') or {} } diff --git a/lib/vfs/vfsnested/nested_test.v b/lib/vfs/vfsnested/nested_test.v index 4d8bda61..4f097f10 100644 --- a/lib/vfs/vfsnested/nested_test.v +++ b/lib/vfs/vfsnested/nested_test.v @@ -1,5 +1,6 @@ module vfsnested +import freeflowuniverse.herolib.vfs.vfscore import os fn test_nested() ! { diff --git a/lib/vfs/vfsourdb/vfsourdb.v b/lib/vfs/vfsourdb/vfsourdb.v index d7553322..602be94a 100644 --- a/lib/vfs/vfsourdb/vfsourdb.v +++ b/lib/vfs/vfsourdb/vfsourdb.v @@ -8,7 +8,7 @@ import time // OurDBVFS represents a VFS that uses OurDB as the underlying storage pub struct OurDBVFS { mut: - core &ourdb_fs.VFS + core &ourdb_fs.OurDBFS } // new creates a new OurDBVFS instance @@ -155,20 +155,19 @@ pub fn (mut self OurDBVFS) destroy() ! { } // Helper functions - fn (mut self OurDBVFS) get_entry(path string) !ourdb_fs.FSEntry { if path == '/' { - return self.core.get_root()! + return *self.core.get_root()! // Dereference to return a value } - mut current := self.core.get_root()! + mut current := self.core.get_root()! // This is already a reference (&Directory) parts := path.trim_left('/').split('/') for i := 0; i < parts.len; i++ { - found := false - children := current.children(false)! + mut found := false + mut children := current.children(false)! - for child in children { + for mut child in children { if child.metadata.name == parts[i] { match child { ourdb_fs.Directory { @@ -178,7 +177,7 @@ fn (mut self OurDBVFS) get_entry(path string) !ourdb_fs.FSEntry { } else { if i == parts.len - 1 { - return child + return child // `child` is already a value, so return it directly } else { return error('Not a directory: ${parts[i]}') } @@ -192,7 +191,7 @@ fn (mut self OurDBVFS) get_entry(path string) !ourdb_fs.FSEntry { } } - return current + return *current // Dereference to return a value } fn (mut self OurDBVFS) get_directory(path string) !&ourdb_fs.Directory { diff --git a/test_basic.vsh b/test_basic.vsh index 74865b8c..a3e47599 100755 --- a/test_basic.vsh +++ b/test_basic.vsh @@ -30,12 +30,11 @@ fn load_test_cache() TestCache { } } } -fn in_github_actions() bool{ - a:=os.environ()["GITHUB_ACTIONS"] or {return false} +fn in_github_actions() bool { + a := os.environ()['GITHUB_ACTIONS'] or { return false } return true } - // Save the test cache to JSON file fn save_test_cache(cache TestCache) { json_str := json.encode_pretty(cache) @@ -168,6 +167,7 @@ lib/code lib/clients lib/core lib/develop +lib/vfs // lib/crypt ' @@ -183,11 +183,9 @@ data/radixtree clients/livekit ' - - -if in_github_actions(){ - println("**** WE ARE IN GITHUB ACTION") - tests_ignore+="\nosal/tmux\n" +if in_github_actions() { + println('**** WE ARE IN GITHUB ACTION') + tests_ignore += '\nosal/tmux\n' } tests_error := ' @@ -218,7 +216,7 @@ test_files_error := tests_error.split('\n').filter(it.trim_space() != '') mut cache := load_test_cache() println('Test cache loaded from ${cache_file}') -println("tests to ignore") +println('tests to ignore') println(tests_ignore) // Run each test with proper v command flags @@ -239,12 +237,13 @@ for test in test_files { // If directory, run tests for each .v file in it recursively files := os.walk_ext(full_path, '.v') for file in files { - process_test_file(file, norm_dir_of_script, test_files_ignore, test_files_error, mut cache)! + process_test_file(file, norm_dir_of_script, test_files_ignore, test_files_error, mut + cache)! } } else if os.is_file(full_path) { - process_test_file(full_path, norm_dir_of_script, test_files_ignore, test_files_error, mut cache)! + process_test_file(full_path, norm_dir_of_script, test_files_ignore, test_files_error, mut + cache)! } } println('All (non skipped) tests ok') -