gout

A static git page generator
git clone https://git.bracken.jp/gout.git
Log | Files | Refs | README | LICENSE

fileblob_tests.c (1158B)


      1 #include "writer/gemini/fileblob.h"
      2 
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 #include <string.h>
      6 
      7 #include "fs_inmemory.h"
      8 #include "git/file.h"
      9 #include "git/repo.h"
     10 #include "test_utils.h"
     11 #include "utest.h"
     12 
     13 struct gemini_fileblob {
     14   int dummy;
     15 };
     16 
     17 UTEST_F_SETUP(gemini_fileblob) {
     18   inmemory_fs_clear();
     19 }
     20 
     21 UTEST_F_TEARDOWN(gemini_fileblob) {}
     22 
     23 UTEST_F(gemini_fileblob, basic) {
     24   GitRepo repo = {.short_name = "test-repo"};
     25   GeminiFileBlob* blob_writer =
     26       gemini_fileblob_create(&repo, g_fs_inmemory, "src/main.c");
     27   ASSERT_NE(NULL, blob_writer);
     28 
     29   const char* content = "int main() {\n  return 0;\n}\n";
     30   GitFile file = {
     31       .repo_path = "src/main.c",
     32       .content = (char*)content,
     33       .size_bytes = strlen(content),
     34       .size_lines = 3,
     35   };
     36 
     37   gemini_fileblob_begin(blob_writer);
     38   gemini_fileblob_add_file(blob_writer, &file);
     39   gemini_fileblob_end(blob_writer);
     40   gemini_fileblob_free(blob_writer);
     41 
     42   const char* buf = inmemory_fs_get_buffer("file/src/main.c.gmi");
     43   ASSERT_NE(NULL, buf);
     44 
     45   EXPECT_STR_SEQUENCE(buf, "File: main.c", "```", "     1 int main()",
     46                       "     2   return 0;", "     3 }", "```");
     47 }