Git fork
at reftables-rust 391 lines 12 kB view raw
1#!/bin/sh 2# 3# Copyright (c) 2007 David D. Kilzer 4 5test_description='git svn info' 6 7. ./lib-git-svn.sh 8 9# Tested with: svn, version 1.4.4 (r25188) 10# Tested with: svn, version 1.6.[12345689] 11v=$(svn_cmd --version | sed -n -e 's/^svn, version \(1\.[0-9]*\.[0-9]*\).*$/\1/p') 12case $v in 131.[456].*) 14 ;; 15*) 16 skip_all="skipping svn-info test (SVN version: $v not supported)" 17 test_done 18 ;; 19esac 20 21# On the "Text Last Updated" line, "git svn info" does not return the 22# same value as "svn info" (i.e. the commit timestamp that touched the 23# path most recently); do not expect that field to match. 24test_cmp_info () { 25 sed -e '/^Text Last Updated:/d' "$1" >tmp.expect && 26 sed -e '/^Text Last Updated:/d' "$2" >tmp.actual && 27 test_cmp tmp.expect tmp.actual && 28 rm -f tmp.expect tmp.actual 29} 30 31quoted_svnrepo="$(echo $svnrepo | test_uri_escape)" 32 33test_expect_success 'setup repository and import' ' 34 mkdir info && 35 ( 36 cd info && 37 echo FIRST >A && 38 echo one >file && 39 ln -s file symlink-file && 40 mkdir directory && 41 touch directory/.placeholder && 42 ln -s directory symlink-directory && 43 svn_cmd import -m "initial" . "$svnrepo" 44 ) && 45 svn_cmd co "$svnrepo" svnwc && 46 ( 47 cd svnwc && 48 echo foo >foo && 49 svn_cmd add foo && 50 svn_cmd commit -m "change outside directory" && 51 svn_cmd update 52 ) && 53 mkdir gitwc && 54 ( 55 cd gitwc && 56 git svn init "$svnrepo" && 57 git svn fetch 58 ) 59 ' 60 61test_expect_success 'info' " 62 (cd svnwc && svn info) > expected.info && 63 (cd gitwc && git svn info) > actual.info && 64 test_cmp_info expected.info actual.info 65 " 66 67test_expect_success 'info --url' ' 68 test "$(cd gitwc && git svn info --url)" = "$quoted_svnrepo" 69 ' 70 71test_expect_success 'info .' " 72 (cd svnwc && svn info .) > expected.info-dot && 73 (cd gitwc && git svn info .) > actual.info-dot && 74 test_cmp_info expected.info-dot actual.info-dot 75 " 76 77test_expect_success 'info $(pwd)' ' 78 (cd svnwc && svn info "$(pwd)") >expected.info-pwd && 79 (cd gitwc && git svn info "$(pwd)") >actual.info-pwd && 80 grep -v ^Path: <expected.info-pwd >expected.info-np && 81 grep -v ^Path: <actual.info-pwd >actual.info-np && 82 test_cmp_info expected.info-np actual.info-np && 83 test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ 84 "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" 85 ' 86 87test_expect_success 'info $(pwd)/../___wc' ' 88 (cd svnwc && svn info "$(pwd)/../svnwc") >expected.info-pwd && 89 (cd gitwc && git svn info "$(pwd)/../gitwc") >actual.info-pwd && 90 grep -v ^Path: <expected.info-pwd >expected.info-np && 91 grep -v ^Path: <actual.info-pwd >actual.info-np && 92 test_cmp_info expected.info-np actual.info-np && 93 test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ 94 "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" 95 ' 96 97test_expect_success 'info $(pwd)/../___wc//file' ' 98 (cd svnwc && svn info "$(pwd)/../svnwc//file") >expected.info-pwd && 99 (cd gitwc && git svn info "$(pwd)/../gitwc//file") >actual.info-pwd && 100 grep -v ^Path: <expected.info-pwd >expected.info-np && 101 grep -v ^Path: <actual.info-pwd >actual.info-np && 102 test_cmp_info expected.info-np actual.info-np && 103 test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ 104 "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" 105 ' 106 107test_expect_success 'info --url .' ' 108 test "$(cd gitwc && git svn info --url .)" = "$quoted_svnrepo" 109 ' 110 111test_expect_success 'info file' " 112 (cd svnwc && svn info file) > expected.info-file && 113 (cd gitwc && git svn info file) > actual.info-file && 114 test_cmp_info expected.info-file actual.info-file 115 " 116 117test_expect_success 'info --url file' ' 118 test "$(cd gitwc && git svn info --url file)" = "$quoted_svnrepo/file" 119 ' 120 121test_expect_success 'info directory' " 122 (cd svnwc && svn info directory) > expected.info-directory && 123 (cd gitwc && git svn info directory) > actual.info-directory && 124 test_cmp_info expected.info-directory actual.info-directory 125 " 126 127test_expect_success 'info inside directory' " 128 (cd svnwc/directory && svn info) > expected.info-inside-directory && 129 (cd gitwc/directory && git svn info) > actual.info-inside-directory && 130 test_cmp_info expected.info-inside-directory actual.info-inside-directory 131 " 132 133test_expect_success 'info --url directory' ' 134 test "$(cd gitwc && git svn info --url directory)" = "$quoted_svnrepo/directory" 135 ' 136 137test_expect_success 'info symlink-file' " 138 (cd svnwc && svn info symlink-file) > expected.info-symlink-file && 139 (cd gitwc && git svn info symlink-file) > actual.info-symlink-file && 140 test_cmp_info expected.info-symlink-file actual.info-symlink-file 141 " 142 143test_expect_success 'info --url symlink-file' ' 144 test "$(cd gitwc && git svn info --url symlink-file)" \ 145 = "$quoted_svnrepo/symlink-file" 146 ' 147 148test_expect_success 'info symlink-directory' " 149 (cd svnwc && svn info symlink-directory) \ 150 > expected.info-symlink-directory && 151 (cd gitwc && git svn info symlink-directory) \ 152 > actual.info-symlink-directory && 153 test_cmp_info expected.info-symlink-directory actual.info-symlink-directory 154 " 155 156test_expect_success 'info --url symlink-directory' ' 157 test "$(cd gitwc && git svn info --url symlink-directory)" \ 158 = "$quoted_svnrepo/symlink-directory" 159 ' 160 161test_expect_success 'info added-file' " 162 echo two > gitwc/added-file && 163 ( 164 cd gitwc && 165 git add added-file 166 ) && 167 cp gitwc/added-file svnwc/added-file && 168 ( 169 cd svnwc && 170 svn_cmd add added-file > /dev/null 171 ) && 172 (cd svnwc && svn info added-file) > expected.info-added-file && 173 (cd gitwc && git svn info added-file) > actual.info-added-file && 174 test_cmp_info expected.info-added-file actual.info-added-file 175 " 176 177test_expect_success 'info --url added-file' ' 178 test "$(cd gitwc && git svn info --url added-file)" \ 179 = "$quoted_svnrepo/added-file" 180 ' 181 182test_expect_success 'info added-directory' " 183 mkdir gitwc/added-directory svnwc/added-directory && 184 touch gitwc/added-directory/.placeholder && 185 ( 186 cd svnwc && 187 svn_cmd add added-directory > /dev/null 188 ) && 189 ( 190 cd gitwc && 191 git add added-directory 192 ) && 193 (cd svnwc && svn info added-directory) \ 194 > expected.info-added-directory && 195 (cd gitwc && git svn info added-directory) \ 196 > actual.info-added-directory && 197 test_cmp_info expected.info-added-directory actual.info-added-directory 198 " 199 200test_expect_success 'info --url added-directory' ' 201 test "$(cd gitwc && git svn info --url added-directory)" \ 202 = "$quoted_svnrepo/added-directory" 203 ' 204 205test_expect_success 'info added-symlink-file' " 206 ( 207 cd gitwc && 208 ln -s added-file added-symlink-file && 209 git add added-symlink-file 210 ) && 211 ( 212 cd svnwc && 213 ln -s added-file added-symlink-file && 214 svn_cmd add added-symlink-file > /dev/null 215 ) && 216 (cd svnwc && svn info added-symlink-file) \ 217 > expected.info-added-symlink-file && 218 (cd gitwc && git svn info added-symlink-file) \ 219 > actual.info-added-symlink-file && 220 test_cmp_info expected.info-added-symlink-file \ 221 actual.info-added-symlink-file 222 " 223 224test_expect_success 'info --url added-symlink-file' ' 225 test "$(cd gitwc && git svn info --url added-symlink-file)" \ 226 = "$quoted_svnrepo/added-symlink-file" 227 ' 228 229test_expect_success 'info added-symlink-directory' " 230 ( 231 cd gitwc && 232 ln -s added-directory added-symlink-directory && 233 git add added-symlink-directory 234 ) && 235 ( 236 cd svnwc && 237 ln -s added-directory added-symlink-directory && 238 svn_cmd add added-symlink-directory > /dev/null 239 ) && 240 (cd svnwc && svn info added-symlink-directory) \ 241 > expected.info-added-symlink-directory && 242 (cd gitwc && git svn info added-symlink-directory) \ 243 > actual.info-added-symlink-directory && 244 test_cmp_info expected.info-added-symlink-directory \ 245 actual.info-added-symlink-directory 246 " 247 248test_expect_success 'info --url added-symlink-directory' ' 249 test "$(cd gitwc && git svn info --url added-symlink-directory)" \ 250 = "$quoted_svnrepo/added-symlink-directory" 251 ' 252 253test_expect_success 'info deleted-file' " 254 ( 255 cd gitwc && 256 git rm -f file > /dev/null 257 ) && 258 ( 259 cd svnwc && 260 svn_cmd rm --force file > /dev/null 261 ) && 262 (cd svnwc && svn info file) >expected.info-deleted-file && 263 (cd gitwc && git svn info file) >actual.info-deleted-file && 264 test_cmp_info expected.info-deleted-file actual.info-deleted-file 265 " 266 267test_expect_success 'info --url file (deleted)' ' 268 test "$(cd gitwc && git svn info --url file)" \ 269 = "$quoted_svnrepo/file" 270 ' 271 272test_expect_success 'info deleted-directory' " 273 ( 274 cd gitwc && 275 git rm -r -f directory > /dev/null 276 ) && 277 ( 278 cd svnwc && 279 svn_cmd rm --force directory > /dev/null 280 ) && 281 (cd svnwc && svn info directory) >expected.info-deleted-directory && 282 (cd gitwc && git svn info directory) >actual.info-deleted-directory && 283 test_cmp_info expected.info-deleted-directory actual.info-deleted-directory 284 " 285 286test_expect_success 'info --url directory (deleted)' ' 287 test "$(cd gitwc && git svn info --url directory)" \ 288 = "$quoted_svnrepo/directory" 289 ' 290 291test_expect_success 'info deleted-symlink-file' " 292 ( 293 cd gitwc && 294 git rm -f symlink-file > /dev/null 295 ) && 296 ( 297 cd svnwc && 298 svn_cmd rm --force symlink-file > /dev/null 299 ) && 300 (cd svnwc && svn info symlink-file) >expected.info-deleted-symlink-file && 301 (cd gitwc && git svn info symlink-file) >actual.info-deleted-symlink-file && 302 test_cmp_info expected.info-deleted-symlink-file actual.info-deleted-symlink-file 303 " 304 305test_expect_success 'info --url symlink-file (deleted)' ' 306 test "$(cd gitwc && git svn info --url symlink-file)" \ 307 = "$quoted_svnrepo/symlink-file" 308 ' 309 310test_expect_success 'info deleted-symlink-directory' " 311 ( 312 cd gitwc && 313 git rm -f symlink-directory > /dev/null 314 ) && 315 ( 316 cd svnwc && 317 svn_cmd rm --force symlink-directory > /dev/null 318 ) && 319 (cd svnwc && svn info symlink-directory) >expected.info-deleted-symlink-directory && 320 (cd gitwc && git svn info symlink-directory) >actual.info-deleted-symlink-directory && 321 test_cmp_info expected.info-deleted-symlink-directory actual.info-deleted-symlink-directory 322 " 323 324test_expect_success 'info --url symlink-directory (deleted)' ' 325 test "$(cd gitwc && git svn info --url symlink-directory)" \ 326 = "$quoted_svnrepo/symlink-directory" 327 ' 328 329# NOTE: git does not have the concept of replaced objects, 330# so we can't test for files in that state. 331 332test_expect_success 'info unknown-file' " 333 echo two > gitwc/unknown-file && 334 (cd gitwc && test_must_fail git svn info unknown-file) \ 335 2> actual.info-unknown-file && 336 grep unknown-file actual.info-unknown-file 337 " 338 339test_expect_success 'info --url unknown-file' ' 340 echo two > gitwc/unknown-file && 341 (cd gitwc && test_must_fail git svn info --url unknown-file) \ 342 2> actual.info-url-unknown-file && 343 grep unknown-file actual.info-url-unknown-file 344 ' 345 346test_expect_success 'info unknown-directory' " 347 mkdir gitwc/unknown-directory svnwc/unknown-directory && 348 (cd gitwc && test_must_fail git svn info unknown-directory) \ 349 2> actual.info-unknown-directory && 350 grep unknown-directory actual.info-unknown-directory 351 " 352 353test_expect_success 'info --url unknown-directory' ' 354 (cd gitwc && test_must_fail git svn info --url unknown-directory) \ 355 2> actual.info-url-unknown-directory && 356 grep unknown-directory actual.info-url-unknown-directory 357 ' 358 359test_expect_success 'info unknown-symlink-file' " 360 ( 361 cd gitwc && 362 ln -s unknown-file unknown-symlink-file 363 ) && 364 (cd gitwc && test_must_fail git svn info unknown-symlink-file) \ 365 2> actual.info-unknown-symlink-file && 366 grep unknown-symlink-file actual.info-unknown-symlink-file 367 " 368 369test_expect_success 'info --url unknown-symlink-file' ' 370 (cd gitwc && test_must_fail git svn info --url unknown-symlink-file) \ 371 2> actual.info-url-unknown-symlink-file && 372 grep unknown-symlink-file actual.info-url-unknown-symlink-file 373 ' 374 375test_expect_success 'info unknown-symlink-directory' " 376 ( 377 cd gitwc && 378 ln -s unknown-directory unknown-symlink-directory 379 ) && 380 (cd gitwc && test_must_fail git svn info unknown-symlink-directory) \ 381 2> actual.info-unknown-symlink-directory && 382 grep unknown-symlink-directory actual.info-unknown-symlink-directory 383 " 384 385test_expect_success 'info --url unknown-symlink-directory' ' 386 (cd gitwc && test_must_fail git svn info --url unknown-symlink-directory) \ 387 2> actual.info-url-unknown-symlink-directory && 388 grep unknown-symlink-directory actual.info-url-unknown-symlink-directory 389 ' 390 391test_done