Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Create basic tests for fossil stash with a new file, an edited file, a renamed file and an untouched file. Use fossil stash subcommands to confirm that the right information got stored, and tests borrowed from revert.test to verify that the file system also has the expected content. Note that this does not currently cover the edge case created by fossil mv --soft, let alone the apparent assertion failure reported on list related to stash and fossil mv --soft. These tests pass on my Windows configuration as of [92877364]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
3f3eada10014f184bc272f539383f7ad |
User & Date: | rberteig 2016-02-10 23:36:07.135 |
Context
2016-02-11
| ||
14:41 | Fix column sorting on ticket reports. ... (check-in: 0e555dee user: drh tags: trunk) | |
2016-02-10
| ||
23:36 | Create basic tests for fossil stash with a new file, an edited file, a renamed file and an untouched file. Use fossil stash subcommands to confirm that the right information got stored, and tests borrowed from revert.test to verify that the file system also has the expected content. Note that this does not currently cover the edge case created by fossil mv --soft, let alone the apparent assertion failure reported on list related to stash and fossil mv --soft. These tests pass on my Windows configuration as of [92877364]. ... (check-in: 3f3eada1 user: rberteig tags: trunk) | |
21:19 | Add /usr/local/opt/openssl to the list of directories for which OpenSSL is searched (as this is the directory into which brew installs OpenSSL on macs.) ... (check-in: 92877364 user: drh tags: trunk) | |
Changes
Added test/stash.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 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 190 191 192 193 194 195 196 197 198 199 200 201 202 | # # Copyright (c) 2013 D. Richard Hipp # # This program is free software; you can redistribute it and/or # modify it under the terms of the Simplified BSD License (also # known as the "2-Clause License" or "FreeBSD License".) # # This program is distributed in the hope that it will be useful, # but without any warranty; without even the implied warranty of # merchantability or fitness for a particular purpose. # # Author contact information: # drh@hwaci.com # http://www.hwaci.com/drh/ # ############################################################################ # # # Tests for 'fossil stash' # # # Test 'fossil stash' against expected results from 'fossil changes' and # 'fossil addremove -n', as well as by verifying the existence of files # on the file system. 'fossil undo' is called after each test # proc stash-test {testid stashArgs expectedStashOutput args} { global RESULT set passed 1 set args [dict merge { -changes {} -addremove {} -exists {} -notexists {} } $args] set result [fossil stash {*}$stashArgs] test_status_list stash-$testid $result $expectedStashOutput set statusListTests [list -changes changes -addremove {addremove -n}] foreach {key fossilArgs} $statusListTests { set expected [dict get $args $key] set result [fossil {*}$fossilArgs] test_status_list stash-$testid$key $result $expected } set fileExistsTests [list -exists 1 does -notexists 0 should] foreach {key expected verb} $fileExistsTests { foreach path [dict get $args $key] { if {[file exists $path] != $expected} { set passed 0 protOut " Failure: File $verb not exist: $path" } } test stash-$testid$key $passed } #fossil undo } catch {exec $::fossilexe info} res if {![regexp {use --repository} $res]} { puts stderr "Cannot run this test within an open checkout" return } repo_init # Prepare first commit # write_file f1 "f1" write_file f2 "f2" write_file f3 "f3" fossil add f1 f2 f3 fossil commit -m "c1" --tag c1 ######## # fossil stash # fossil stash save ?-m|--comment COMMENT? ?FILES...? # Make simple changes to stash # Add f0, remove f1, edit f2, rename f3 to f3n write_file f0 "f0" fossil add f0 file delete f1 fossil rm f1 write_file f2 "f2.1" file rename -force f3 f3n fossil mv f3 f3n # Stash these changes and confirm stash-test 1 {save -m "stash 1"} { UNMANAGE f0 REVERT f1 REVERT f2 REVERT f3 DELETE f3n } -addremove { ADDED f0 } -exists {f0 f1 f2 f3} -notexists {f3n} ######## # fossil stash list|ls ?-v|--verbose? ?-W|--width <num>? # Confirm there is a stash saved fossil stash list #protOut "{[normalize_result]}" #{1: [21bc64cff8c702] on 2016-02-10 19:48:44 # stash 1} test stash-1-list-1 {[regexp {^1: \[[0-9a-z]+\] on } [first_data_line]]} test stash-1-list-2 {[regexp {^\s+stash 1\s*$} [second_data_line]]} set diff_stash_1 {DELETE f1 Index: f1 ================================================================== --- f1 +++ f1 @@ -1,1 +0,0 @@ -f1 CHANGED f2 --- f2 +++ f2 @@ -1,1 +1,1 @@ -f2 +f2.1 CHANGED f3n --- f3n +++ f3n ADDED f0 Index: f0 ================================================================== --- f0 +++ f0 @@ -0,0 +1,1 @@ +f0} ######## # fossil stash show|cat ?STASHID? ?DIFF-OPTIONS? # fossil stash [g]diff ?STASHID? ?DIFF-OPTIONS? fossil stash show test stash-1-show {[normalize_result] eq $diff_stash_1} fossil stash diff test stash-1-diff {[normalize_result] eq $diff_stash_1} ######## # fossil stash pop stash-test 2 pop { DELETE f1 UPDATE f2 UPDATE f3n ADDED f0 } -changes { ADDED f0 MISSING f1 EDITED f2 MISSING f3 } -addremove { ADDED f3n DELETED f1 DELETED f3 } -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"} if {false} { # skip this test, what should stash actually do with a # soft rename? # Test stashed mv without touching the file system fossil checkout --force c1 fossil clean fossil mv --soft f1 f1new #no such file: c:/Users/Ross/Documents/tmp/ftest/stash/f1b stash-test x1 {save -m "B 2016-02-09"} { REVERT f1 DELETE f1new } -changes { } -addremove { } -exists {f1 f2 f3} -notexists {f1new} # Issue reported by email to fossil-users # from Warren Young, dated Tue, 9 Feb 2016 01:22:54 -0700 # with checkin [b8c7af5bd9] plus a local patch on CentOS 5 # 64 bit intel, 8-byte pointer, 4-byte integer # Stashed renamed file said: # fossil: ./src/delta.c:231: checksum: Assertion '...' failed. # Should be triggered by the above stash-x1 test. } # fossil stash snapshot ?-m|--comment COMMENT? ?FILES...? # fossil stash apply ?STASHID? # fossil stash goto ?STASHID? # fossil stash rm|drop ?STASHID? ?-a|--all? #fossil checkout --force c1 #fossil clean |