(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git svn dcommit can commit renames of files with ugly names'>)}
          spids: [11]
        )
      ]
    )
    (C {<.>} {<'./lib-git-svn.sh'>})
    (C {<test_expect_success>} {(SQ <'load repository with strange names'>)} 
      {(SQ <'\n'> <'\tsvnadmin load -q "$rawsvnrepo" <"$TEST_DIRECTORY"/t9115/funky-names.dump\n'>)}
    )
    (C {<maybe_start_httpd>} {<gtk> <Id.Lit_Other '+'>})
    (C {<test_expect_success>} {(SQ <'init and fetch repository'>)} 
      {
        (SQ <'\n'> <'\tgit svn init "$svnrepo" &&\n'> <'\tgit svn fetch &&\n'> 
          <'\tgit reset --hard git-svn\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'create file in existing ugly and empty dir'>)} 
      {
        (SQ <'\n'> <'\tmkdir -p "#{bad_directory_name}" &&\n'> 
          <'\techo hi > "#{bad_directory_name}/ foo" &&\n'> <'\tgit update-index --add "#{bad_directory_name}/ foo" &&\n'> 
          <'\tgit commit -m "new file in ugly parent" &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'rename ugly file'>)} 
      {
        (SQ <'\n'> <'\tgit mv "#{bad_directory_name}/ foo" "file name with feces" &&\n'> 
          <'\tgit commit -m "rename ugly file" &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'rename pretty file'>)} 
      {
        (SQ <'\n'> <'\techo :x > pretty &&\n'> <'\tgit update-index --add pretty &&\n'> 
          <'\tgit commit -m "pretty :x" &&\n'> <'\tgit svn dcommit &&\n'> <'\tmkdir -p regular_dir_name &&\n'> 
          <'\tgit mv pretty regular_dir_name/pretty &&\n'> <'\tgit commit -m "moved pretty file" &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'rename pretty file into ugly one'>)} 
      {
        (SQ <'\n'> <'\tgit mv regular_dir_name/pretty "#{bad_directory_name}/ booboo" &&\n'> 
          <'\tgit commit -m booboo &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'add a file with plus signs'>)} 
      {
        (SQ <'\n'> <'\techo .. > +_+ &&\n'> <'\tgit update-index --add +_+ &&\n'> 
          <'\tgit commit -m plus &&\n'> <'\tmkdir gtk+ &&\n'> <'\tgit mv +_+ gtk+/_+_ &&\n'> <'\tgit commit -m plus_dir &&\n'> 
          <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'clone the repository to test rebase'>)} 
      {
        (SQ <'\n'> <'\tgit svn clone "$svnrepo" test-rebase &&\n'> <'\t(\n'> <'\t\tcd test-rebase &&\n'> 
          <'\t\techo test-rebase >test-rebase &&\n'> <'\t\tgit add test-rebase &&\n'> <'\t\tgit commit -m test-rebase\n'> <'\t)\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'make a commit to test rebase'>)} 
      {
        (SQ <'\n'> <'\t\techo test-rebase-main > test-rebase-main &&\n'> 
          <'\t\tgit add test-rebase-main &&\n'> <'\t\tgit commit -m test-rebase-main &&\n'> <'\t\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'git svn rebase works inside a fresh-cloned repository'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd test-rebase &&\n'> <'\t\tgit svn rebase &&\n'> 
          <'\t\ttest -e test-rebase-main &&\n'> <'\t\ttest -e test-rebase\n'> <'\t)'>
        )
      }
    )
    (C {<prepare_a_utf8_locale>})
    (C {<test_expect_success>} 
      {<UTF8> <Id.Lit_Comma ','> <Id.KW_Bang '!'> <MINGW> <Id.Lit_Comma ','> <Id.KW_Bang '!'> 
        <UTF8_NFD_TO_NFC>
      } {(SQ <'svn.pathnameencoding=cp932 new file on dcommit'>)} 
      {
        (SQ <'\n'> <'\tLC_ALL=$a_utf8_locale &&\n'> <'\texport LC_ALL &&\n'> 
          <'\tneq=$(printf "\\201\\202") &&\n'> <'\tgit config svn.pathnameencoding cp932 &&\n'> <'\techo neq >"$neq" &&\n'> <'\tgit add "$neq" &&\n'> 
          <'\tgit commit -m "neq" &&\n'> <'\tgit svn dcommit\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {<Id.KW_Bang '!'> <MINGW> <Id.Lit_Comma ','> <Id.KW_Bang '!'> <UTF8_NFD_TO_NFC>} {(SQ <'svn.pathnameencoding=cp932 rename on dcommit'>)} 
      {
        (SQ <'\n'> <'\tLC_ALL=$a_utf8_locale &&\n'> <'\texport LC_ALL &&\n'> 
          <'\tinf=$(printf "\\201\\207") &&\n'> <'\tgit config svn.pathnameencoding cp932 &&\n'> <'\techo inf >"$inf" &&\n'> <'\tgit add "$inf" &&\n'> 
          <'\tgit commit -m "inf" &&\n'> <'\tgit svn dcommit &&\n'> <'\tgit mv "$inf" inf &&\n'> <'\tgit commit -m "inf rename" &&\n'> 
          <'\tgit svn dcommit\n'>
        )
      }
    )
    (C {<stop_httpd>})
    (C {<test_done>})
  ]
)