gout

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

git_tests.c (2541B)


      1 #include <stdlib.h>
      2 #include <sys/stat.h>
      3 #include "git/internal.h"
      4 #include "utest.h"
      5 
      6 UTEST(git_format_filemode, RegularFile) {
      7   char* mode = git_format_filemode(S_IFREG | 0644);
      8   EXPECT_STREQ("-rw-r--r--", mode);
      9   free(mode);
     10 }
     11 
     12 UTEST(git_format_filemode, ExecutableFile) {
     13   char* mode = git_format_filemode(S_IFREG | 0755);
     14   EXPECT_STREQ("-rwxr-xr-x", mode);
     15   free(mode);
     16 }
     17 
     18 UTEST(git_format_filemode, Directory) {
     19   char* mode = git_format_filemode(S_IFDIR | 0755);
     20   EXPECT_STREQ("drwxr-xr-x", mode);
     21   free(mode);
     22 }
     23 
     24 UTEST(git_format_filemode, SymbolicLink) {
     25   char* mode = git_format_filemode(S_IFLNK | 0777);
     26   EXPECT_STREQ("lrwxrwxrwx", mode);
     27   free(mode);
     28 }
     29 
     30 UTEST(git_format_filemode, Setuid) {
     31   char* mode = git_format_filemode(S_IFREG | S_ISUID | 0755);
     32   EXPECT_STREQ("-rwsr-xr-x", mode);
     33   free(mode);
     34 
     35   mode = git_format_filemode(S_IFREG | S_ISUID | 0644);
     36   EXPECT_STREQ("-rwSr--r--", mode);
     37   free(mode);
     38 }
     39 
     40 UTEST(git_format_filemode, Setgid) {
     41   char* mode = git_format_filemode(S_IFREG | S_ISGID | 0755);
     42   EXPECT_STREQ("-rwxr-sr-x", mode);
     43   free(mode);
     44 
     45   mode = git_format_filemode(S_IFREG | S_ISGID | 0644);
     46   EXPECT_STREQ("-rw-r-Sr--", mode);
     47   free(mode);
     48 }
     49 
     50 UTEST(git_format_filemode, StickyBit) {
     51   /* Sticky bit with execute bit set: 't' */
     52   char* mode = git_format_filemode(S_IFDIR | S_ISVTX | 0777);
     53   EXPECT_STREQ("drwxrwxrwt", mode);
     54   free(mode);
     55 
     56   mode = git_format_filemode(S_IFDIR | S_ISVTX | 0755);
     57   EXPECT_STREQ("drwxr-xr-t", mode);
     58   free(mode);
     59 
     60   /* Sticky bit without execute bit set: 'T' */
     61   mode = git_format_filemode(S_IFDIR | S_ISVTX | 0754);
     62   EXPECT_STREQ("drwxr-xr-T", mode);
     63   free(mode);
     64 }
     65 
     66 UTEST(git_format_filemode, OtherTypes) {
     67   /* Block device */
     68   char* mode = git_format_filemode(S_IFBLK | 0600);
     69   EXPECT_EQ('b', mode[0]);
     70   free(mode);
     71 
     72   /* Character device */
     73   mode = git_format_filemode(S_IFCHR | 0600);
     74   EXPECT_EQ('c', mode[0]);
     75   free(mode);
     76 
     77   /* FIFO */
     78   mode = git_format_filemode(S_IFIFO | 0600);
     79   EXPECT_EQ('p', mode[0]);
     80   free(mode);
     81 
     82   /* Socket */
     83   mode = git_format_filemode(S_IFSOCK | 0600);
     84   EXPECT_EQ('s', mode[0]);
     85   free(mode);
     86 }
     87 
     88 UTEST(git_get_filetype, AllTypes) {
     89   EXPECT_EQ('-', git_get_filetype(S_IFREG));
     90   EXPECT_EQ('d', git_get_filetype(S_IFDIR));
     91   EXPECT_EQ('l', git_get_filetype(S_IFLNK));
     92   EXPECT_EQ('b', git_get_filetype(S_IFBLK));
     93   EXPECT_EQ('c', git_get_filetype(S_IFCHR));
     94   EXPECT_EQ('p', git_get_filetype(S_IFIFO));
     95   EXPECT_EQ('s', git_get_filetype(S_IFSOCK));
     96   EXPECT_EQ('?', git_get_filetype(0)); /* Unknown */
     97 }