gout

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

repo_index_tests.c (1655B)


      1 #include "writer/html/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(html_repo_index, basic) {
     12   char* buf = NULL;
     13   size_t size = 0;
     14   FILE* out = open_memstream(&buf, &size);
     15 
     16   HtmlRepoIndex* index = html_repoindex_create(out);
     17   ASSERT_NE(NULL, index);
     18   html_repoindex_set_me_url(index, "https://me.example.com");
     19 
     20   GitRepo r1 = {
     21       .short_name = "repo1",
     22       .description = "Desc 1",
     23       .owner = "Owner 1",
     24       .last_commit_time = 1702031400,
     25   };
     26 
     27   html_repoindex_begin(index);
     28   html_repoindex_add_repo(index, &r1);
     29   html_repoindex_end(index);
     30   html_repoindex_free(index);
     31   fclose(out);
     32 
     33   ASSERT_NE(NULL, buf);
     34 
     35   /* Verify Header/Metadata */
     36   EXPECT_STR_SEQUENCE(buf, "Repositories", "rel=\"me\"",
     37                       "https://me.example.com");
     38 
     39   /* Verify Repo Row */
     40   EXPECT_STR_SEQUENCE(buf, "repo1/log.html", "repo1", "Desc 1", "Owner 1",
     41                       "2023-12-08 10:30");
     42 
     43   free(buf);
     44 }
     45 
     46 UTEST(html_repo_index, multiple) {
     47   char* buf = NULL;
     48   size_t size = 0;
     49   FILE* out = open_memstream(&buf, &size);
     50 
     51   HtmlRepoIndex* index = html_repoindex_create(out);
     52 
     53   GitRepo r1 = {.short_name = "a", .description = "d1", .owner = "o1"};
     54   GitRepo r2 = {.short_name = "b", .description = "d2", .owner = "o2"};
     55 
     56   html_repoindex_begin(index);
     57   html_repoindex_add_repo(index, &r1);
     58   html_repoindex_add_repo(index, &r2);
     59   html_repoindex_end(index);
     60   html_repoindex_free(index);
     61   fclose(out);
     62 
     63   ASSERT_NE(NULL, buf);
     64   EXPECT_STR_SEQUENCE(buf, "a/log.html", "d1", "o1", "b/log.html", "d2", "o2");
     65 
     66   free(buf);
     67 }