(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'Test repository with default ACL' span_id:15))} spids: [13] ) ] ) (C {(umask)} {(077)}) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checking for a working acl setup' span_id:47))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id: Id.Lit_Chars val: '\tif setfacl -m d:m:rwx -m u:root:rwx . &&\n' span_id: 52 ) (Token id:Id.Lit_Chars val:'\t getfacl . | grep user:root:rwx &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t touch should-have-readable-acl &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t getfacl should-have-readable-acl | egrep "mask::?rw-"\n' span_id:55) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\ttest_set_prereq SETFACL\n' span_id:57) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:58) ) } ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$LOGNAME'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGNAME) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:USER span_id:78) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:80) command_list: (command.CommandList children: [(C {(id)} {(-u)} {(-n)})] ) ) } ) ) ) } spids: [75] ) ] ) ] spids: [62 72] ) ] ) (command.ShFunction name: check_perms_and_acl body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {(test)} {(-r)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{(getfacl)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:118) fd: -1 arg_word: {(actual)} ) ] ) (C {(grep)} {(-q)} {(DQ ('user:root:rwx'))} {(actual)}) (C {(grep)} {(-q)} {(DQ ('user:') (${ Id.VSub_Name LOGNAME) (':rwx'))} {(actual)}) (command.Simple words: [{(egrep)} {(DQ ('mask::?r--'))} {(actual)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:163) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:167) fd: 2 arg_word: {(1)} ) ] ) (C {(grep)} {(-q)} {(DQ ('group::---'))} {(actual)}) (C {(false)}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirs_to_set) op: assign_op.Equal rhs: {(DQ ('./ .git/ .git/objects/ .git/objects/pack/'))} spids: [190] ) ] ) (C {(test_expect_success)} {(SETFACL)} {(SQ (Token id:Id.Lit_Chars val:'Setup test repo' span_id:201))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) (Token id: Id.Lit_Chars val: '\tsetfacl -m d:u::rwx,d:g::---,d:o:---,d:m:rwx $dirs_to_set &&\n' span_id: 206 ) (Token id:Id.Lit_Chars val:'\tsetfacl -m m:rwx $dirs_to_set &&\n' span_id:207) (Token id: Id.Lit_Chars val: '\tsetfacl -m u:root:rwx $dirs_to_set &&\n' span_id: 208 ) (Token id:Id.Lit_Chars val:'\tsetfacl -m d:u:"$LOGNAME":rwx $dirs_to_set &&\n' span_id:209) (Token id: Id.Lit_Chars val: '\tsetfacl -m d:u:root:rwx $dirs_to_set &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttouch file.txt &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\tgit add file.txt &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\tgit commit -m "init"\n' span_id:214) ) } ) (C {(test_expect_success)} {(SETFACL)} { (SQ (Token id: Id.Lit_Chars val: 'Objects creation does not break ACLs with restrictive umask' span_id: 223 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) (Token id:Id.Lit_Chars val:'\t# SHA1 for empty blob\n' span_id:228) (Token id: Id.Lit_Chars val: '\tcheck_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391\n' span_id: 229 ) ) } ) (C {(test_expect_success)} {(SETFACL)} { (SQ (Token id: Id.Lit_Chars val: 'git gc does not break ACLs with restrictive umask' span_id: 238 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) (Token id:Id.Lit_Chars val:'\tgit gc &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\tcheck_perms_and_acl .git/objects/pack/*.pack\n' span_id:244) ) } ) (C {(test_done)}) ] )