Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch test-fixes-2.24 Excluding Merge-Ins
This is equivalent to a diff from 88871c02 to 3b37f7d9
2024-01-04
| ||
09:58 | Test fixes for 2.24 as discussed in forum post 8d774bc3610fe8de. ... (check-in: 271a978d user: preben tags: trunk) | |
2023-11-26
| ||
19:07 | Fix previous commit: Just fixing amend breaks subsequent tests. As tests should not need input, move the code to the test/tester.tcl. ... (Closed-Leaf check-in: 3b37f7d9 user: preben tags: test-fixes-2.24) | |
18:18 | The amend tests may fail on narrow terminals on systems where the terminal size can be determined when tclsh is running (for me, all but Windows). Closing stdin causes fossil not to wrap output. To avoid fossil complaining about file descriptor zero (which is now used on some systems), temproarily open the script readonly. ... (check-in: 1cb0d57d user: preben tags: test-fixes-2.24) | |
2023-11-10
| ||
14:14 | Add the x= query parameter to /timeline. Satisfies ticket [208e3fc206af9b61]. ... (check-in: cad7c10b user: drh tags: trunk) | |
2023-11-05
| ||
12:25 | Fix merge1.test: changed merge conflict warnings. (NOTE: this check-in contains files with merge conflict warnings.) ... (check-in: 4f9cfebf user: florian tags: test-fixes-2.24) | |
2023-11-02
| ||
19:40 | Improvements to "fossil sync" help text. ... (check-in: 88871c02 user: drh tags: trunk) | |
19:37 | For the "fossil sync" command if the -v option is repeated, then the HTTP_VERBOSE flag is set on the http_exchange() call, resulting in additional debugging output for the wire protocol. ... (check-in: 80896224 user: drh tags: trunk) | |
Changes to test/amend.test.
︙ | ︙ | |||
304 305 306 307 308 309 310 | set t5exp "*" foreach tag $tagt { lappend tags -tag $tag lappend cancels -cancel $tag } foreach res $result { append t1exp ", $res" | < > > > | 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 | set t5exp "*" foreach tag $tagt { lappend tags -tag $tag lappend cancels -cancel $tag } foreach res $result { append t1exp ", $res" append t3exp "Add*tag*\"$res\".*" append t5exp "Cancel*tag*\"$res\".*" } foreach res [lsort -nocase $result] { append t2exp "sym-$res*" } eval fossil amend $HASH $tags test amend-tag-$tc.1 {[string match "*hash:*$HASH*tags:*$t1exp*" $RESULT]} fossil tag ls --raw $HASH test amend-tag-$tc.2 {[string match $t2exp $RESULT]} fossil timeline -n 1 test amend-tag-$tc.3 {[string match $t3exp $RESULT]} |
︙ | ︙ |
Changes to test/json.test.
︙ | ︙ | |||
274 275 276 277 278 279 280 | test_json_payload json-login-a {authToken name capabilities loginCookieName} {} set AuthAnon [dict get $JR payload] proc test_hascaps {testname need caps} { foreach n [split $need {}] { test $testname-$n {[string first $n $caps] >= 0} } } | | | 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | test_json_payload json-login-a {authToken name capabilities loginCookieName} {} set AuthAnon [dict get $JR payload] proc test_hascaps {testname need caps} { foreach n [split $need {}] { test $testname-$n {[string first $n $caps] >= 0} } } test_hascaps json-login-c "hz" [dict get $AuthAnon capabilities] fossil user new U1 User-1 Uone fossil user capabilities U1 s write_file u1 { { "command":"login", "payload":{ |
︙ | ︙ |
Changes to test/merge1.test.
︙ | ︙ | |||
71 72 73 74 75 76 77 | 111 - This is line one OF the demo program - 1111 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t23 { | | | | | | | | | | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | 111 - This is line one OF the demo program - 1111 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t23 { <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 1) 111 - This is line ONE of the demo program - 1111 ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 1) 111 - This is line one of the demo program - 1111 ======= MERGED IN content follows =============================== (line 1) 111 - This is line one OF the demo program - 1111 >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t32 { <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 1) 111 - This is line one OF the demo program - 1111 ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 1) 111 - This is line one of the demo program - 1111 ======= MERGED IN content follows =============================== (line 1) 111 - This is line ONE of the demo program - 1111 >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } fossil 3-way-merge t1 t3 t2 a32 test merge1-2.1 {[same_file t32 a32]} |
︙ | ︙ | |||
156 157 158 159 160 161 162 | write_file_indented t3 { 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t32 { | | | | | | | | | | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | write_file_indented t3 { 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t32 { <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 1) ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 1) 111 - This is line one of the demo program - 1111 ======= MERGED IN content follows =============================== (line 1) 000 - Zero lines added to the beginning of - 0000 111 - This is line one of the demo program - 1111 >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } write_file_indented t23 { <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 1) 000 - Zero lines added to the beginning of - 0000 111 - This is line one of the demo program - 1111 ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 1) 111 - This is line one of the demo program - 1111 ======= MERGED IN content follows =============================== (line 1) >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 222 - The second line program line in code - 2222 333 - This is a test of the merging algohm - 3333 444 - If all goes well, we will be pleased - 4444 555 - we think it well and other stuff too - 5555 } fossil 3-way-merge t1 t3 t2 a32 test merge1-4.1 {[same_file t32 a32]} |
︙ | ︙ | |||
295 296 297 298 299 300 301 | KLMN OPQR STUV XYZ. } write_file_indented t23 { abcd | | | | | | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | KLMN OPQR STUV XYZ. } write_file_indented t23 { abcd <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 2) efgh 2 ijkl 2 mnop 2 qrst uvwx yzAB 2 CDEF 2 GHIJ 2 ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 2) efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ ======= MERGED IN content follows =============================== (line 2) efgh ijkl mnop 3 qrst 3 uvwx 3 yzAB 3 CDEF GHIJ >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> KLMN OPQR STUV XYZ. } fossil 3-way-merge t1 t2 t3 a23 test merge1-7.1 {[same_file t23 a23]} |
︙ | ︙ | |||
363 364 365 366 367 368 369 | KLMN OPQR STUV XYZ. } write_file_indented t23 { abcd | | | | | | 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | KLMN OPQR STUV XYZ. } write_file_indented t23 { abcd <<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<< (line 2) efgh 2 ijkl 2 mnop qrst uvwx yzAB 2 CDEF 2 GHIJ 2 ||||||| COMMON ANCESTOR content follows ||||||||||||||||||||||||| (line 2) efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ ======= MERGED IN content follows =============================== (line 2) efgh ijkl mnop 3 qrst 3 uvwx 3 yzAB 3 CDEF GHIJ >>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> KLMN OPQR STUV XYZ. } fossil 3-way-merge t1 t2 t3 a23 test merge1-7.2 {[same_file t23 a23]} ############################################################################### test_cleanup |
Changes to test/merge3.test.
︙ | ︙ | |||
22 23 24 25 26 27 28 | proc merge-test {testid basis v1 v2 result} { write_file t1 [join [string trim $basis] \n]\n write_file t2 [join [string trim $v1] \n]\n write_file t3 [join [string trim $v2] \n]\n fossil 3-way-merge t1 t2 t3 t4 set x [read_file t4] | > | | > | > > | > > | > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | proc merge-test {testid basis v1 v2 result} { write_file t1 [join [string trim $basis] \n]\n write_file t2 [join [string trim $v1] \n]\n write_file t3 [join [string trim $v2] \n]\n fossil 3-way-merge t1 t2 t3 t4 set x [read_file t4] regsub -all \ {<<<<<<< BEGIN MERGE CONFLICT: local copy shown first <+ \(line \d+\)} \ $x {MINE:} x regsub -all \ {\|\|\|\|\|\|\| COMMON ANCESTOR content follows \|+ \(line \d+\)} \ $x {COM:} x regsub -all \ {======= MERGED IN content follows =+ \(line \d+\)} \ $x {YOURS:} x regsub -all \ {>>>>>>> END MERGE CONFLICT >+} \ $x {END} x set x [split [string trim $x] \n] set result [string trim $result] if {$x!=$result} { protOut " Expected \[$result\]" protOut " Got \[$x\]" test merge3-$testid 0 } else { |
︙ | ︙ |
Changes to test/merge4.test.
︙ | ︙ | |||
23 24 25 26 27 28 29 | proc merge-test {testid basis v1 v2 result1 result2} { write_file t1 [join [string trim $basis] \n]\n write_file t2 [join [string trim $v1] \n]\n write_file t3 [join [string trim $v2] \n]\n fossil 3-way-merge t1 t2 t3 t4 fossil 3-way-merge t1 t3 t2 t5 set x [read_file t4] | | | | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | proc merge-test {testid basis v1 v2 result1 result2} { write_file t1 [join [string trim $basis] \n]\n write_file t2 [join [string trim $v1] \n]\n write_file t3 [join [string trim $v2] \n]\n fossil 3-way-merge t1 t2 t3 t4 fossil 3-way-merge t1 t3 t2 t5 set x [read_file t4] regsub -all {<<<<<<< BEGIN MERGE CONFLICT.*<< \(line \d+\)} $x {>} x regsub -all {\|\|\|\|\|\|\|.*======= \(line \d+\)} $x {=} x regsub -all {>>>>>>> END MERGE CONFLICT.*>>>>} $x {<} x set x [split [string trim $x] \n] set y [read_file t5] regsub -all {<<<<<<< BEGIN MERGE CONFLICT.*<< \(line \d+\)} $y {>} y regsub -all {\|\|\|\|\|\|\|.*======= \(line \d+\)} $y {=} y regsub -all {>>>>>>> END MERGE CONFLICT.*>>>>} $y {<} y set y [split [string trim $y] \n] set result1 [string trim $result1] if {$x!=$result1} { protOut " Expected \[$result1\]" protOut " Got \[$x\]" test merge4-$testid 0 |
︙ | ︙ |
Changes to test/merge_renames.test.
︙ | ︙ | |||
262 263 264 265 266 267 268 | fossil add f1 fossil commit -b b2 -m "add f1" fossil update trunk fossil merge b1 fossil merge b2 test_status_list merge_renames-8-1 $RESULT { | > | > | | 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 | fossil add f1 fossil commit -b b2 -m "add f1" fossil update trunk fossil merge b1 fossil merge b2 test_status_list merge_renames-8-1 $RESULT { MERGE f1 WARNING: 1 merge conflicts } fossil revert fossil merge --integrate b1 fossil merge b2 test_status_list merge_renames-8-2 $RESULT { MERGE f1 WARNING: 1 merge conflicts } ############################################# # Test 9 # # Merging a delete/rename/add combination # ############################################# |
︙ | ︙ | |||
306 307 308 309 310 311 312 | ADDED f1 } test_status_list merge_renames-9-1 $RESULT $expectedMerge fossil changes test_status_list merge_renames-9-2 $RESULT " MERGED_WITH [commit_id b] ADDED_BY_MERGE f1 | | | | 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | ADDED f1 } test_status_list merge_renames-9-1 $RESULT $expectedMerge fossil changes test_status_list merge_renames-9-2 $RESULT " MERGED_WITH [commit_id b] ADDED_BY_MERGE f1 RENAMED f1 -> f2 DELETED f2 -> f2 (overwritten by rename) " test_file_contents merge_renames-9-3 f1 "f1.1" test_file_contents merge_renames-9-4 f2 "f1" # Undo and ensure a dry run merge results in no changes fossil undo test_status_list merge_renames-9-5 $RESULT { |
︙ | ︙ | |||
366 367 368 369 370 371 372 | test_status_list merge_renames-10-4 $RESULT { RENAME f1 -> f2 RENAME f2 -> f1 } test_file_contents merge_renames-10-5 f1 "f1" test_file_contents merge_renames-10-6 f2 "f2" test_status_list merge_renames-10-7 [fossil changes] " | | | | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 | test_status_list merge_renames-10-4 $RESULT { RENAME f1 -> f2 RENAME f2 -> f1 } test_file_contents merge_renames-10-5 f1 "f1" test_file_contents merge_renames-10-6 f2 "f2" test_status_list merge_renames-10-7 [fossil changes] " RENAMED f1 -> f2 RENAMED f2 -> f1 BACKOUT [commit_id trunk] " fossil commit -m "swap back" ;# V fossil merge b test_status_list merge_renames-10-8 $RESULT { UPDATE f1 |
︙ | ︙ | |||
493 494 495 496 497 498 499 | ADD f2 } fossil merge trunk fossil commit -m "merge trunk" --tag c4 fossil mv --hard f2 f2n test_status_list merge_renames-13-3 $RESULT " RENAME f2 f2n | | | 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 | ADD f2 } fossil merge trunk fossil commit -m "merge trunk" --tag c4 fossil mv --hard f2 f2n test_status_list merge_renames-13-3 $RESULT " RENAME f2 f2n MOVED_FILE [file normalize $repoDir]/f2 " fossil commit -m "renamed f2->f2n" --tag c5 fossil update trunk fossil merge b test_status_list merge_renames-13-4 $RESULT {ADDED f2n} fossil commit -m "merge f2n" --tag m1 --tag c6 |
︙ | ︙ |
Changes to test/merge_warn.test.
︙ | ︙ | |||
40 41 42 43 44 45 46 | fossil commit -m "add f4" fossil update trunk write_file f1 "f1.1" write_file f3 "f3.1" fossil merge --integrate mrg test_status_list merge_warn-1 $RESULT { | > | | | | < | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | fossil commit -m "add f4" fossil update trunk write_file f1 "f1.1" write_file f3 "f3.1" fossil merge --integrate mrg test_status_list merge_warn-1 $RESULT { WARNING: 1 unmanaged files were overwritten WARNING: 2 merge conflicts DELETE f1 MERGE f2 ADDED f3 (overwrites an unmanaged file), original copy backed up locally WARNING: local edits lost for f1 } test merge_warn-2 { [string first "ignoring --integrate: mrg is not a leaf" $RESULT]>=0 } ############################################################################### |
︙ | ︙ |
Changes to test/revert.test.
︙ | ︙ | |||
96 97 98 99 100 101 102 | # Test with a single filename argument # revert-test 1-2 f0 { UNMANAGE f0 } -changes { DELETED f1 EDITED f2 | | | | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # Test with a single filename argument # revert-test 1-2 f0 { UNMANAGE f0 } -changes { DELETED f1 EDITED f2 RENAMED f3 -> f3n } -addremove { ADDED f0 } -exists {f0 f2 f3n} -notexists f3 revert-test 1-3 f1 { REVERT f1 } -changes { ADDED f0 EDITED f2 RENAMED f3 -> f3n } -exists {f0 f1 f2 f3n} -notexists f3 revert-test 1-4 f2 { REVERT f2 } -changes { ADDED f0 DELETED f1 RENAMED f3 -> f3n } -exists {f0 f2 f3n} -notexists {f1 f3} # Both files involved in a rename are reverted regardless of which filename # is used as an argument to 'fossil revert' # revert-test 1-5 f3 { REVERT f3 |
︙ | ︙ |
Changes to test/settings-repo.test.
︙ | ︙ | |||
240 241 242 243 244 245 246 | [regexp -- [string map [list %name% $name] $pattern(5)] $data] } fossil test-th-eval --open-config "setting $name" set data [normalize_result] test settings-set-check2-versionable-$name { | | | 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | [regexp -- [string map [list %name% $name] $pattern(5)] $data] } fossil test-th-eval --open-config "setting $name" set data [normalize_result] test settings-set-check2-versionable-$name { $data eq "" } file delete $fileName fossil settings $name --exact set data [normalize_result] |
︙ | ︙ |
Changes to test/stash.test.
︙ | ︙ | |||
183 184 185 186 187 188 189 | UPDATE f2 UPDATE f3n ADDED f0 } -changes { ADDED f0 MISSING f1 EDITED f2 | | | 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | UPDATE f2 UPDATE f3n ADDED f0 } -changes { ADDED f0 MISSING f1 EDITED f2 RENAMED f3 -> f3n } -addremove { DELETED f1 } -exists {f0 f2 f3n} -notexists {f1 f3} # Confirm there is no longer a stash saved fossil stash list test stash-2-list {[first_data_line] eq "empty stash"} |
︙ | ︙ | |||
290 291 292 293 294 295 296 | fossil commit -m "baseline" fossil mv --hard f2 f2n test_result_state stash-3-2-mv "mv --hard f2 f2n" [concat { RENAME f2 f2n MOVED_FILE} [file normalize f2] { }] -changes { | | | | 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | fossil commit -m "baseline" fossil mv --hard f2 f2n test_result_state stash-3-2-mv "mv --hard f2 f2n" [concat { RENAME f2 f2n MOVED_FILE} [file normalize f2] { }] -changes { RENAMED f2 -> f2n } -addremove { } -exists {f1 f2n} -notexists {f2} stash-test 3-2 {save -m f2n} { REVERT f2 DELETE f2n } -exists {f1 f2} -notexists {f2n} -knownbugs {-result} fossil stash show test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug test stash-3-2-show-2 {[regexp {\sf2n} $RESULT]} stash-test 3-2-pop {pop} { UPDATE f1 UPDATE f2n } -changes { RENAMED f2 -> f2n } -addremove { } -exists {f1 f2n} -notexists {f2} ######## # fossil stash snapshot ?-m|--comment COMMENT? ?FILES...? |
︙ | ︙ | |||
366 367 368 369 370 371 372 | file rename -force f3 f3n fossil mv f3 f3n stash-test 4-3 {snapshot -m "snap 3"} { } -changes { ADDED f0 DELETED f1 EDITED f2 | | | 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | file rename -force f3 f3n fossil mv f3 f3n stash-test 4-3 {snapshot -m "snap 3"} { } -changes { ADDED f0 DELETED f1 EDITED f2 RENAMED f3 -> f3n } -addremove { } -exists {f0 f2 f3n} -notexists {f1 f3} fossil stash diff test stash-4-3-diff-CODE {!$::CODE} knownBug fossil stash show test stash-4-3-show-1 {[regexp {DELETE f1} $RESULT]} test stash-4-3-show-2 {[regexp {CHANGED f2} $RESULT]} |
︙ | ︙ |
Changes to test/symlinks.test.
︙ | ︙ | |||
33 34 35 36 37 38 39 40 41 42 43 44 45 46 | } require_no_open_checkout ############################################################################### test_setup; set rootDir [file normalize [pwd]] fossil test-th-eval --open-config {repository} set repository [normalize_result] if {[string length $repository] == 0} { puts "Detection of the open repository file failed." test_cleanup_then_return | > > > | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | } require_no_open_checkout ############################################################################### test_setup; set rootDir [file normalize [pwd]] # Using tempHomePath, allow-symlinks will always be off at this point. fossil set allow-symlinks on fossil test-th-eval --open-config {repository} set repository [normalize_result] if {[string length $repository] == 0} { puts "Detection of the open repository file failed." test_cleanup_then_return |
︙ | ︙ | |||
60 61 62 63 64 65 66 67 68 69 70 71 | test symlinks-dir-1 {[file exists [file join $rootDir subdirA f1.txt]] eq 1} test symlinks-dir-2 {[file exists [file join $rootDir symdirA f1.txt]] eq 1} test symlinks-dir-3 {[file exists [file join $rootDir subdirA f2.txt]] eq 1} test symlinks-dir-4 {[file exists [file join $rootDir symdirA f2.txt]] eq 1} fossil add [file join $rootDir symdirA f1.txt] fossil commit -m "c1" ############################################################################### fossil ls | > > > > > > | > > > | | | | | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | test symlinks-dir-1 {[file exists [file join $rootDir subdirA f1.txt]] eq 1} test symlinks-dir-2 {[file exists [file join $rootDir symdirA f1.txt]] eq 1} test symlinks-dir-3 {[file exists [file join $rootDir subdirA f2.txt]] eq 1} test symlinks-dir-4 {[file exists [file join $rootDir symdirA f2.txt]] eq 1} fossil add [file join $rootDir symdirA f1.txt] test symlinks-skip-dir-traversal {[normalize_result] eq \ "SKIP symdirA/f1.txt"} fossil commit -m "c1" test symlinks-empty-commit {[normalize_result] eq \ "nothing has changed; use --allow-empty to override"} ############################################################################### fossil ls test symlinks-dir-5 {[normalize_result] eq ""} ############################################################################### fossil set allow puts $RESULT fossil extras test symlinks-dir-6 {[normalize_result] eq \ "subdirA/f1.txt\nsubdirA/f2.txt\nsymdirA"} ############################################################################### fossil close file delete [file join $rootDir subdirA f1.txt] test symlinks-dir-7 {[file exists [file join $rootDir subdirA f1.txt]] eq 0} test symlinks-dir-8 {[file exists [file join $rootDir symdirA f1.txt]] eq 0} test symlinks-dir-9 {[file exists [file join $rootDir subdirA f2.txt]] eq 1} test symlinks-dir-10 {[file exists [file join $rootDir symdirA f2.txt]] eq 1} ############################################################################### fossil open --force $repository set code [catch {file readlink [file join $rootDir symdirA]} result] test symlinks-dir-11 {$code == 0} test symlinks-dir-12 {$result eq [file join $rootDir subdirA]} test symlinks-dir-13 {[file exists [file join $rootDir subdirA f1.txt]] eq 0} test symlinks-dir-14 {[file exists [file join $rootDir symdirA f1.txt]] eq 0} test symlinks-dir-15 {[file exists [file join $rootDir subdirA f2.txt]] eq 1} test symlinks-dir-16 {[file exists [file join $rootDir symdirA f2.txt]] eq 1} ############################################################################### # # TODO: Add tests for symbolic links as files here, including tests with the # "allow-symlinks" setting on and off. # ############################################################################### test_cleanup |
Changes to test/tester.tcl.
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # This is the main test script. To run a regression test, do this: # # tclsh ../test/tester.tcl ../bld/fossil # # Where ../test/tester.tcl is the name of this file and ../bld/fossil # is the name of the executable to be tested. # # We use some things introduced in 8.6 such as lmap. auto.def should # have found us a suitable Tcl installation. package require Tcl 8.6 set testfiledir [file normalize [file dirname [info script]]] set testrundir [pwd] | > > > > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # This is the main test script. To run a regression test, do this: # # tclsh ../test/tester.tcl ../bld/fossil # # Where ../test/tester.tcl is the name of this file and ../bld/fossil # is the name of the executable to be tested. # # To run a subset of tests (i.e. only one or more of the test/*.test # scripts), append the script base names as arguments: # # tclsh ../test/tester.tcl ../bld/fossil <script-basename>... # # We use some things introduced in 8.6 such as lmap. auto.def should # have found us a suitable Tcl installation. package require Tcl 8.6 set testfiledir [file normalize [file dirname [info script]]] set testrundir [pwd] |
︙ | ︙ | |||
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 | # set result [list \ access-log \ admin-log \ allow-symlinks \ auto-captcha \ auto-hyperlink \ auto-shun \ autosync \ autosync-tries \ backoffice-disable \ backoffice-logfile \ backoffice-nodelay \ binary-glob \ case-sensitive \ chat-alert-sound \ chat-initial-history \ chat-inline-images \ chat-keep-count \ chat-keep-days \ chat-poll-timeout \ clean-glob \ clearsign \ comment-format \ crlf-glob \ crnl-glob \ default-csp \ default-perms \ diff-binary \ diff-command \ dont-push \ dotfiles \ editor \ email-admin \ email-renew-interval \ email-self \ email-send-command \ email-send-db \ email-send-dir \ email-send-method \ email-send-relayhost \ email-subname \ email-url \ empty-dirs \ encoding-glob \ exec-rel-paths \ fileedit-glob \ forbid-delta-manifests \ gdiff-command \ gmerge-command \ hash-digits \ hooks \ http-port \ https-login \ ignore-glob \ keep-glob \ localauth \ lock-timeout \ main-branch \ mainmenu \ manifest \ max-cache-entry \ max-loadavg \ max-upload \ mimetypes \ mtime-changes \ pgp-command \ preferred-diff-type \ proxy \ redirect-to-https \ relative-paths \ repo-cksum \ repolist-skin \ safe-html \ self-register \ sitemap-extra \ ssh-command \ ssl-ca-location \ ssl-identity \ tclsh \ th1-setup \ | > > > > > > > > > | 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 | # set result [list \ access-log \ admin-log \ allow-symlinks \ auto-captcha \ auto-hyperlink \ auto-hyperlink-delay \ auto-hyperlink-mouseover \ auto-shun \ autosync \ autosync-tries \ backoffice-disable \ backoffice-logfile \ backoffice-nodelay \ binary-glob \ case-sensitive \ chat-alert-sound \ chat-initial-history \ chat-inline-images \ chat-keep-count \ chat-keep-days \ chat-poll-timeout \ chat-timeline-user \ clean-glob \ clearsign \ comment-format \ crlf-glob \ crnl-glob \ default-csp \ default-perms \ diff-binary \ diff-command \ dont-commit \ dont-push \ dotfiles \ editor \ email-admin \ email-listid \ email-renew-interval \ email-self \ email-send-command \ email-send-db \ email-send-dir \ email-send-method \ email-send-relayhost \ email-subname \ email-url \ empty-dirs \ encoding-glob \ exec-rel-paths \ fileedit-glob \ forbid-delta-manifests \ forum-close-policy \ gdiff-command \ gmerge-command \ hash-digits \ hooks \ http-port \ https-login \ ignore-glob \ keep-glob \ large-file-size \ localauth \ lock-timeout \ main-branch \ mainmenu \ manifest \ max-cache-entry \ max-loadavg \ max-upload \ mimetypes \ mtime-changes \ mv-rm-files \ pgp-command \ preferred-diff-type \ proxy \ redirect-to-https \ relative-paths \ repo-cksum \ repolist-skin \ safe-html \ self-pw-reset \ self-register \ sitemap-extra \ ssh-command \ ssl-ca-location \ ssl-identity \ tclsh \ th1-setup \ |
︙ | ︙ | |||
1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 | } error] != 0} { error "Could not write file \"$tempFile\" in directory \"$tempPath\",\ please set TEMP variable in environment, error: $error" } set tempHomePath [file join $tempPath home_[pid]] if {[catch { file mkdir $tempHomePath } error] != 0} { error "Could not make directory \"$tempHomePath\",\ please set TEMP variable in environment, error: $error" } | > > > > > > > > > | 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 | } error] != 0} { error "Could not write file \"$tempFile\" in directory \"$tempPath\",\ please set TEMP variable in environment, error: $error" } set tempHomePath [file join $tempPath home_[pid]] # Close stdin to avoid errors on wrapped text for narrow terminals. # Closing stdin means that terminal detection returns 0 width, in turn # causing the relvant strings to be printed on a single line. # However, closing stdin makes file descriptor 0 avaailable on some systems # and/or TCL implementations, which triggers fossil to complain about opening # databases using fd 0. Avoid this by opening the script, consuming fd 0. close stdin set possibly_fd0 [open [info script] r] if {[catch { file mkdir $tempHomePath } error] != 0} { error "Could not make directory \"$tempHomePath\",\ please set TEMP variable in environment, error: $error" } |
︙ | ︙ | |||
1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 | protOutDict $testopts" } else { test test-framework-$testfile 1 } protOut "***** End of $testfile: [llength $bad_test] errors so far ******" } unset ::tempKeepHome; delete_temporary_home set nErr [llength $bad_test] if {$nErr>0 || !$::QUIET} { protOut "***** Final results: $nErr errors out of $test_count tests" 1 } if {$nErr>0} { protOut "***** Considered failures: $bad_test" 1 } | > > > > | 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 | protOutDict $testopts" } else { test test-framework-$testfile 1 } protOut "***** End of $testfile: [llength $bad_test] errors so far ******" } unset ::tempKeepHome; delete_temporary_home # Clean up the file descriptor close $possibly_fd0 set nErr [llength $bad_test] if {$nErr>0 || !$::QUIET} { protOut "***** Final results: $nErr errors out of $test_count tests" 1 } if {$nErr>0} { protOut "***** Considered failures: $bad_test" 1 } |
︙ | ︙ |
Changes to test/th1-tcl.test.
︙ | ︙ | |||
75 76 77 78 79 80 81 | } ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl3.txt]] | | | | | | | | | | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | } ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl3.txt]] test th1-tcl-3 {$RESULT eq {<hr><p class="thmainError">ERROR:\ invalid command name "bad_command"</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl4.txt]] test th1-tcl-4 {$RESULT eq {<hr><p class="thmainError">ERROR:\ divide by zero</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl5.txt]] test th1-tcl-5 {$RESULT eq {<hr><p class="thmainError">ERROR:\ Tcl command not found: bad_command</p>} || $RESULT eq {<hr><p\ class="thmainError">ERROR: invalid command name "bad_command"</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl6.txt]] test th1-tcl-6 {$RESULT eq {<hr><p class="thmainError">ERROR:\ no such command: bad_command</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl7.txt]] test th1-tcl-7 {$RESULT eq {<hr><p class="thmainError">ERROR:\ syntax error in expression: "2**0"</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl8.txt]] test th1-tcl-8 {$RESULT eq {<hr><p class="thmainError">ERROR:\ cannot invoke Tcl command: tailcall</p>} || $RESULT eq {<hr><p\ class="thmainError">ERROR: tailcall can only be called from a proc or\ lambda</p>} || $RESULT eq {<hr><p class="thmainError">ERROR: This test\ requires Tcl 8.6 or higher.</p>}} ############################################################################### fossil test-th-render --open-config \ [file nativename [file join $path th1-tcl9.txt]] |
︙ | ︙ |
Changes to test/th1.test.
︙ | ︙ | |||
737 738 739 740 741 742 743 | regsub -- {\n/\*\*\*\*\* Subprocess \d+ exit\(\d+\) \*\*\*\*\*/} \ $normalized_result {} normalized_result if {$th1Hooks} { test th1-trace-2 {$normalized_result eq \ {------------------ BEGIN TRACE LOG ------------------ | | | | | | | | > > | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 | regsub -- {\n/\*\*\*\*\* Subprocess \d+ exit\(\d+\) \*\*\*\*\*/} \ $normalized_result {} normalized_result if {$th1Hooks} { test th1-trace-2 {$normalized_result eq \ {------------------ BEGIN TRACE LOG ------------------ th1-init 0x0 => 0x0<br> ------------------- END TRACE LOG -------------------}} } else { test th1-trace-2 {$normalized_result eq \ {------------------ BEGIN TRACE LOG ------------------ th1-init 0x0 => 0x0<br> th1-setup {} => TH_OK<br> ------------------- END TRACE LOG -------------------}} } ############################################################################### fossil test-th-eval "trace {this is a trace message.}" test th1-trace-3 {$RESULT eq {}} ############################################################################### fossil test-th-eval --th-trace "trace {this is a trace message.}" set normalized_result [normalize_result] regsub -- {\n/\*\*\*\*\* Subprocess \d+ exit\(\d+\) \*\*\*\*\*/} \ $normalized_result {} normalized_result if {$th1Hooks} { test th1-trace-4 {$normalized_result eq \ {------------------ BEGIN TRACE LOG ------------------ th1-init 0x0 => 0x0<br> this is a trace message. ------------------- END TRACE LOG -------------------}} } else { test th1-trace-4 {$normalized_result eq \ {------------------ BEGIN TRACE LOG ------------------ th1-init 0x0 => 0x0<br> th1-setup {} => TH_OK<br> this is a trace message. ------------------- END TRACE LOG -------------------}} } ############################################################################### fossil test-th-eval "defHeader {Page Title Here}" test th1-defHeader-1 {$RESULT eq \ {TH_ERROR: wrong # args: should be "defHeader"}} ############################################################################### fossil test-th-eval "defHeader" test th1-defHeader-2 {[string match *<body> [normalize_result]] || \ [string match "*<body class=\"\$current_feature\ rpage-\$requested_page\ cpage-\$canonical_page\">" [normalize_result]]} ############################################################################### fossil test-th-eval "styleHeader {Page Title Here}" test th1-header-1 {$RESULT eq {TH_ERROR: repository unavailable}} ############################################################################### |
︙ | ︙ | |||
1060 1061 1062 1063 1064 1065 1066 | set sorted_result [lsort $RESULT] protOut "Sorted: $sorted_result" set base_commands {anoncap anycap array artifact break breakpoint \ builtin_request_js capexpr captureTh1 catch cgiHeaderLine checkout \ combobox continue copybtn date decorate defHeader dir enable_htmlify \ enable_output encode64 error expr for foreach getParameter glob_match \ globalState hascap hasfeature html htmlize http httpize if info \ | | | | | | 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 | set sorted_result [lsort $RESULT] protOut "Sorted: $sorted_result" set base_commands {anoncap anycap array artifact break breakpoint \ builtin_request_js capexpr captureTh1 catch cgiHeaderLine checkout \ combobox continue copybtn date decorate defHeader dir enable_htmlify \ enable_output encode64 error expr for foreach getParameter glob_match \ globalState hascap hasfeature html htmlize http httpize if info \ insertCsrf lappend lindex linecount list llength lsearch markdown nonce \ proc puts query randhex redirect regexp reinitialize rename render \ repository return searchable set setParameter setting stime string \ styleFooter styleHeader styleScript submenu tclReady trace unset \ unversioned uplevel upvar utime verifyCsrf verifyLogin wiki} set tcl_commands {tclEval tclExpr tclInvoke tclIsSafe tclMakeSafe} if {$th1Tcl} { test th1-info-commands-1 {$sorted_result eq [lsort "$base_commands $tcl_commands"]} } else { test th1-info-commands-1 {$sorted_result eq [lsort "$base_commands"]} } |
︙ | ︙ |
Changes to test/unversioned.test.
︙ | ︙ | |||
341 342 343 344 345 346 347 | fossil_maybe_answer y unversioned sync $remote test unversioned-46 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 2 | | | 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | fossil_maybe_answer y unversioned sync $remote test unversioned-46 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 2 \n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \ [normalize_result]]} ############################################################################### fossil unversioned ls test unversioned-47 {[normalize_result] eq {unversioned2.txt unversioned5.txt}} |
︙ | ︙ | |||
387 388 389 390 391 392 393 | fossil_maybe_answer y unversioned revert $remote test unversioned-52 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 2 | | | 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 | fossil_maybe_answer y unversioned revert $remote test unversioned-52 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 0 received: 2 \n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \ [normalize_result]]} ############################################################################### fossil unversioned list test unversioned-53 {[regexp \ {^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\ |
︙ | ︙ | |||
412 413 414 415 416 417 418 | fossil_maybe_answer y unversioned sync $remote test unversioned-55 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 1 received: 0 Round-trips: 2 Artifacts sent: 1 received: 0 | | | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | fossil_maybe_answer y unversioned sync $remote test unversioned-55 {[regexp \ {Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 1 Artifacts sent: 0 received: 0 Round-trips: 2 Artifacts sent: 1 received: 0 Round-trips: 2 Artifacts sent: 1 received: 0 \n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \ [normalize_result]]} ############################################################################### fossil close test unversioned-56 {[normalize_result] eq {}} |
︙ | ︙ |