gout

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

repo_index_tests.c (1511B)


      1 #include "writer/gemini/repo_index.h"
      2 
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 #include <string.h>
      6 
      7 #include "git/repo.h"
      8 #include "test_utils.h"
      9 #include "utest.h"
     10 
     11 UTEST(gemini_repo_index, basic) {
     12   char* buf = NULL;
     13   size_t size = 0;
     14   FILE* out = open_memstream(&buf, &size);
     15 
     16   GeminiRepoIndex* index = gemini_repoindex_create(out);
     17   ASSERT_NE(NULL, index);
     18 
     19   GitRepo r1 = {
     20       .short_name = "repo1",
     21       .description = "Desc 1",
     22       .owner = "Owner 1",
     23       .last_commit_time = 1702031400,
     24   };
     25 
     26   gemini_repoindex_begin(index);
     27   gemini_repoindex_add_repo(index, &r1);
     28   gemini_repoindex_end(index);
     29   gemini_repoindex_free(index);
     30   fclose(out);
     31 
     32   ASSERT_NE(NULL, buf);
     33 
     34   /* Verify Header */
     35   EXPECT_STR_SEQUENCE(buf, "# Repositories");
     36 
     37   /* Verify Repo Row */
     38   EXPECT_STR_SEQUENCE(buf, "=> repo1/log.gmi repo1", "Desc 1",
     39                       "2023-12-08 10:30");
     40 
     41   free(buf);
     42 }
     43 
     44 UTEST(gemini_repo_index, percent_encoding) {
     45   char* buf = NULL;
     46   size_t size = 0;
     47   FILE* out = open_memstream(&buf, &size);
     48 
     49   GeminiRepoIndex* index = gemini_repoindex_create(out);
     50 
     51   GitRepo r1 = {
     52       .short_name = "repo with spaces",
     53       .description = "Desc",
     54   };
     55 
     56   gemini_repoindex_begin(index);
     57   gemini_repoindex_add_repo(index, &r1);
     58   gemini_repoindex_end(index);
     59   gemini_repoindex_free(index);
     60   fclose(out);
     61 
     62   ASSERT_NE(NULL, buf);
     63   /* "repo with spaces" -> "repo%20with%20spaces" */
     64   EXPECT_STR_SEQUENCE(buf, "=> repo%20with%20spaces/log.gmi repo with spaces");
     65 
     66   free(buf);
     67 }