(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)})
  ]
)