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 }