From dcd767e5f9a1f13a533c5ab304e9354dd6ae47da Mon Sep 17 00:00:00 2001 From: John Alanbrook Date: Tue, 18 Feb 2025 19:38:24 -0600 Subject: [PATCH] all files now have an implicit empty actor, even if there is no actor statement present --- .github/workflows/build.yml | 15 ++++++++++++++- meson.build | 2 +- source/prosperon.c | 27 +++++++++++++++------------ 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 043671c3..0917b1d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -125,7 +125,20 @@ jobs: run: | meson setup build -Dbuildtype=release -Db_lto=true -Db_ndebug=true --cross-file mingw32.cross meson compile -C build - + + - name: Test Prosperon + env: + TRACY_NO_INVARIANT_CHECK: 1 + run: | + meson test --print-errorlogs -C build + + - name: Upload Test Log + if: ${{ always() }} + uses: actions/upload-artifact@v3 + with: + name: testlog-linux + path: build/meson-logs/testlog.txt + - name: Create package folder run: | mkdir _pack diff --git a/meson.build b/meson.build index bd195229..bb9e2d8c 100644 --- a/meson.build +++ b/meson.build @@ -207,6 +207,6 @@ tests = [ ] foreach file : tests - test(file, prosperon, args:['tests/' + file + '.js'], depends:copy_tests) + test(file, prosperon_raw, args:['tests/' + file + '.js'], depends:copy_tests) endforeach diff --git a/source/prosperon.c b/source/prosperon.c index 0c923f6c..0e45ae47 100644 --- a/source/prosperon.c +++ b/source/prosperon.c @@ -14,22 +14,22 @@ void free_zip(void) zip_buffer_global = NULL; } -void prosperon_mount_core() +int prosperon_mount_core() { size_t size; FILE *f = fopen(prosperon, "rb"); -if (!f) { perror("fopen"); return; } -if (fseek(f, 0, SEEK_END) != 0) { perror("fseek"); fclose(f); return; } +if (!f) { perror("fopen"); return 0; } +if (fseek(f, 0, SEEK_END) != 0) { perror("fseek"); fclose(f); return 0; } size = ftell(f); -if (size < 0) { perror("ftell"); fclose(f); return; } +if (size < 0) { perror("ftell"); fclose(f); return 0; } zip_buffer_global = malloc(size); -if (!zip_buffer_global) { perror("malloc"); fclose(f); return; } +if (!zip_buffer_global) { perror("malloc"); fclose(f); return 0; } rewind(f); if (fread(zip_buffer_global, 1, size, f) != (size_t)size) { perror("fread"); free(zip_buffer_global); fclose(f); - return; + return 0; } fclose(f); // Search backwards for the EOCD signature "PK\x05\x06". @@ -49,7 +49,7 @@ fclose(f); if (eocd_pos < 0) { fprintf(stderr, "EOCD not found\n"); free(zip_buffer_global); - return; + return 0; } // Parse the EOCD record. @@ -79,15 +79,17 @@ fclose(f); if (zip_offset < 0 || zip_offset >= size) { fprintf(stderr, "Invalid zip offset computed: %ld\n", zip_offset); free(zip_buffer_global); - return; + return 0; } int ret = PHYSFS_mountMemory(zip_buffer_global + zip_offset, appended_zip_size, free_zip, "core.zip", NULL, 0); if (!ret) { printf("COULD NOT MOUNT! Reason: %s\n", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); - return; + return 0; } + + return 1; } int main(int argc, char **argv) { @@ -98,13 +100,14 @@ int main(int argc, char **argv) { PHYSFS_setWriteDir(base); PHYSFS_mount(base, "/", 0); - prosperon_mount_core(); -/* int mounted = PHYSFS_mount("core.zip", NULL, 0); + int mounted = prosperon_mount_core(); + if (!mounted) + mounted = PHYSFS_mount("core.zip", NULL, 0); if (!mounted) { printf("Could not mount core. Reason: %s\n", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); return 1; } -*/ + script_startup(argc, argv); // runs engine.js return 0; }