(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"credential-store tests">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-credential.sh)}) (C {(helper_test)} {(store)}) (C {(test_expect_success)} {(SQ <"when xdg file does not exist, xdg file not created">)} { (SQ <"\n"> <"\ttest_path_is_missing \"$HOME/.config/git/credentials\" &&\n"> <"\ttest -s \"$HOME/.git-credentials\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup xdg file">)} { (SQ <"\n"> <"\trm -f \"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> <"\t>\"$HOME/.config/git/credentials\"\n"> ) } ) (C {(helper_test)} {(store)}) (C {(test_expect_success)} {(SQ <"when xdg file exists, home file not created">)} { (SQ <"\n"> <"\ttest -s \"$HOME/.config/git/credentials\" &&\n"> <"\ttest_path_is_missing \"$HOME/.git-credentials\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup custom xdg file">)} { (SQ <"\n"> <"\trm -f \"$HOME/.git-credentials\" &&\n"> <"\trm -f \"$HOME/.config/git/credentials\" &&\n"> <"\tmkdir -p \"$HOME/xdg/git\" &&\n"> <"\t>\"$HOME/xdg/git/credentials\"\n"> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XDG_CONFIG_HOME) op: Equal rhs: {(DQ ($ VSub_Name "$HOME") (/xdg))} spids: [86] ) ] spids: [86] ) (C {(export)} {(XDG_CONFIG_HOME)}) (C {(helper_test)} {(store)}) (C {(unset)} {(XDG_CONFIG_HOME)}) (C {(test_expect_success)} {(SQ <"if custom xdg file exists, home and xdg files not created">)} { (SQ <"\n"> <"\ttest_when_finished \"rm -f $HOME/xdg/git/credentials\" &&\n"> <"\ttest -s \"$HOME/xdg/git/credentials\" &&\n"> <"\ttest_path_is_missing \"$HOME/.git-credentials\" &&\n"> <"\ttest_path_is_missing \"$HOME/.config/git/credentials\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"get: use home file if both home and xdg files have matches">)} { (SQ <"\n"> <"\techo \"https://home-user:home-pass@example.com\" >\"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> < "\techo \"https://xdg-user:xdg-pass@example.com\" >\"$HOME/.config/git/credentials\" &&\n" > <"\tcheck fill store <<-\\EOF\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\t--\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\tusername=home-user\n"> <"\tpassword=home-pass\n"> <"\t--\n"> <"\tEOF\n"> ) } ) (C {(test_expect_success)} {(SQ <"get: use xdg file if home file has no matches">)} { (SQ <"\n"> <"\t>\"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> < "\techo \"https://xdg-user:xdg-pass@example.com\" >\"$HOME/.config/git/credentials\" &&\n" > <"\tcheck fill store <<-\\EOF\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\t--\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\tusername=xdg-user\n"> <"\tpassword=xdg-pass\n"> <"\t--\n"> <"\tEOF\n"> ) } ) (C {(test_expect_success)} {(POSIXPERM) (Lit_Comma ",") (SANITY)} {(SQ <"get: use xdg file if home file is unreadable">)} { (SQ <"\n"> <"\techo \"https://home-user:home-pass@example.com\" >\"$HOME/.git-credentials\" &&\n"> <"\tchmod -r \"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> < "\techo \"https://xdg-user:xdg-pass@example.com\" >\"$HOME/.config/git/credentials\" &&\n" > <"\tcheck fill store <<-\\EOF\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\t--\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\tusername=xdg-user\n"> <"\tpassword=xdg-pass\n"> <"\t--\n"> <"\tEOF\n"> ) } ) (C {(test_expect_success)} {(SQ <"store: if both xdg and home files exist, only store in home file">)} { (SQ <"\n"> <"\t>\"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> <"\t>\"$HOME/.config/git/credentials\" &&\n"> <"\tcheck approve store <<-\\EOF &&\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\tusername=store-user\n"> <"\tpassword=store-pass\n"> <"\tEOF\n"> <"\techo \"https://store-user:store-pass@example.com\" >expected &&\n"> <"\ttest_cmp expected \"$HOME/.git-credentials\" &&\n"> <"\ttest_must_be_empty \"$HOME/.config/git/credentials\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"erase: erase matching credentials from both xdg and home files">)} { (SQ <"\n"> <"\techo \"https://home-user:home-pass@example.com\" >\"$HOME/.git-credentials\" &&\n"> <"\tmkdir -p \"$HOME/.config/git\" &&\n"> < "\techo \"https://xdg-user:xdg-pass@example.com\" >\"$HOME/.config/git/credentials\" &&\n" > <"\tcheck reject store <<-\\EOF &&\n"> <"\tprotocol=https\n"> <"\thost=example.com\n"> <"\tEOF\n"> <"\ttest_must_be_empty \"$HOME/.git-credentials\" &&\n"> <"\ttest_must_be_empty \"$HOME/.config/git/credentials\"\n"> ) } ) (C {(test_done)}) ] )