summaryrefslogtreecommitdiff
path: root/test/unversioned.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/unversioned.test')
-rw-r--r--test/unversioned.test478
1 files changed, 478 insertions, 0 deletions
diff --git a/test/unversioned.test b/test/unversioned.test
new file mode 100644
index 0000000..16e12be
--- /dev/null
+++ b/test/unversioned.test
@@ -0,0 +1,478 @@
+#
+# Copyright (c) 2016 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/
+#
+############################################################################
+#
+# The "unversioned" command.
+#
+
+set path [file dirname [info script]]
+
+if {[catch {package require sha1}] != 0} {
+ puts "The \"sha1\" package is not available."
+ test_cleanup_then_return
+}
+
+require_no_open_checkout
+
+test_setup; set rootDir [file normalize [pwd]]
+
+# Avoid delays from the backoffice.
+fossil set backoffice-disable 1
+
+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
+}
+
+write_file unversioned1.txt "This is unversioned file #1."
+write_file unversioned2.txt " This is unversioned file #2. "
+write_file "unversioned space.txt" "\nThis is unversioned file #3.\n"
+write_file unversioned4.txt "This is unversioned file #4."
+write_file unversioned5.txt "This is unversioned file #5."
+
+set env(VISUAL) [appendArgs \
+ [info nameofexecutable] " " [file join $path fake-editor.tcl]]
+
+###############################################################################
+
+# Under cygwin, the printed name with Usage: strips the extension
+if { $::is_cygwin && [file extension $fossilexe] eq ".exe" } {
+ set fossilexeref [string range $fossilexe 0 end-4]
+} else {
+ set fossilexeref $fossilexe
+}
+
+fossil unversioned -expectError
+test unversioned-1 {[normalize_result] eq \
+[string map [list %fossil% [file nativename $fossilexeref]] {Usage: %fossil%\
+unversioned add|cat|edit|export|list|revert|remove|sync|touch}]}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-2 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat not-found.txt
+test unversioned-3 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned1.txt
+test unversioned-4 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned add unversioned1.txt
+test unversioned-5 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned1.txt
+test unversioned-6 {[normalize_result] eq {This is unversioned file #1.}}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-7 {[regexp \
+{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
+unversioned1\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned ls
+test unversioned-8 {[normalize_result] eq {unversioned1.txt}}
+
+###############################################################################
+
+fossil unversioned remove unversioned1.txt
+test unversioned-9 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-10 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned ls
+test unversioned-11 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list --all
+test unversioned-12 {[regexp \
+{^\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
+unversioned1\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned ls --all
+test unversioned-13 {[normalize_result] eq {unversioned1.txt}}
+
+###############################################################################
+
+fossil unversioned add "unversioned space.txt" -expectError
+test unversioned-14 {[normalize_result] eq \
+{unversioned filenames may not contain whitespace: 'unversioned space.txt'}}
+
+###############################################################################
+
+fossil unversioned add "unversioned space.txt" --as unversioned3.txt
+test unversioned-15 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-16 {[regexp \
+{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
+unversioned3\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned ls --l
+test unversioned-17 {[regexp \
+{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
+unversioned3\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned ls
+test unversioned-18 {[normalize_result] eq {unversioned3.txt}}
+
+###############################################################################
+
+fossil unversioned add unversioned2.txt --mtime 2016-10-01
+test unversioned-19 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-20 {[regexp \
+{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\
+unversioned2\.txt
+[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
+unversioned3\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned ls
+test unversioned-21 {[normalize_result] eq {unversioned2.txt
+unversioned3.txt}}
+
+###############################################################################
+
+fossil unversioned cat unversioned1.txt
+test unversioned-22 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned2.txt
+test unversioned-23 {[::sha1::sha1 $RESULT] eq \
+{962f96ebd613e4fdd9aa2d20bd9fe21a64e925f2}}
+
+###############################################################################
+
+fossil unversioned cat unversioned3.txt -keepNewline
+test unversioned-24 {[::sha1::sha1 $RESULT] eq \
+{c6b95509120d9703cc4fbe5cdfcb435b5912b3e4}}
+
+###############################################################################
+
+fossil unversioned rm unversioned3.txt
+test unversioned-25 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned add unversioned4.txt
+test unversioned-26 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned4.txt
+set hash(before) [::sha1::sha1 $RESULT]
+test unversioned-27 {$hash(before) eq \
+{b48ba8e2d0b498321dfd13de84867effda399af5}}
+
+###############################################################################
+
+fossil unversioned edit unversioned4.txt
+test unversioned-28 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned4.txt
+set hash(after) [::sha1::sha1 $RESULT]
+test unversioned-29 {$hash(after) ne $hash(before)}
+test unversioned-30 {[regexp { \d+ (?:-)?\d+$} $RESULT]}
+
+###############################################################################
+
+fossil unversioned edit unversioned4.txt --mtime 2016-10-01
+test unversioned-31 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned cat unversioned4.txt
+test unversioned-32 {[regexp { \d+ (?:-)?\d+ \d+ (?:-)?\d+$} $RESULT]}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-33 {[regexp \
+{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\
+unversioned2\.txt
+[0-9a-f]{12} 2016-10-01 00:00:00 \d+ \d+\
+unversioned4\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned export unversioned2.txt unversioned2-ex.txt
+test unversioned-34 {[normalize_result] eq {}}
+test unversioned-35 {[::sha1::sha1 -hex -filename unversioned2-ex.txt] eq \
+{962f96ebd613e4fdd9aa2d20bd9fe21a64e925f2}}
+
+###############################################################################
+
+fossil unversioned hash
+test unversioned-36 {[regexp {^[0-9a-f]{40,64}$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned hash --debug
+test unversioned-37 {[regexp \
+{^unversioned2\.txt 2016-10-01 00:00:00 [0-9a-f]{40,64}
+unversioned4\.txt 2016-10-01 00:00:00 [0-9a-f]{40,64}
+[0-9a-f]{40,64}$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned remove unversioned4.txt --mtime "2016-10-02 13:47:29"
+test unversioned-38 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list --all
+test unversioned-39 {[regexp \
+{^\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
+unversioned1\.txt
+[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
+ \(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
+unversioned3\.txt
+ \(deleted\) 2016-10-02 13:47:29 0 0 unversioned4\.txt$} \
+[normalize_result]]}
+
+###############################################################################
+
+fossil unversioned touch unversioned1.txt --mtime "2016-10-03 23:01:44"
+test unversioned-40 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list --all
+test unversioned-41 {[regexp \
+{^\(deleted\) 2016-10-03 23:01:44 0 0\
+unversioned1\.txt
+[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
+ \(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
+unversioned3\.txt
+ \(deleted\) 2016-10-02 13:47:29 0 0 unversioned4\.txt$} \
+[normalize_result]]}
+
+###############################################################################
+
+fossil unversioned add unversioned5.txt
+test unversioned-42 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned touch unversioned5.txt
+test unversioned-43 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-44 {[regexp \
+{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
+[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
+unversioned5\.txt$} [normalize_result]]}
+
+###############################################################################
+
+set password [string trim [clock seconds] -]
+
+fossil user new uvtester "Unversioned Test User" $password
+fossil user capabilities uvtester oy
+
+###############################################################################
+
+foreach {pid port outTmpFile} [test_start_server $repository stopArg] {}
+if {! $::QUIET} {
+ puts [appendArgs "Started Fossil server, pid \"" $pid \" ", port \"" $port \".]
+}
+set remote [appendArgs http://uvtester: $password @localhost: $port /]
+
+###############################################################################
+
+set clientDir [file join $tempPath [appendArgs \
+ uvtest_ [string trim [clock seconds] -] _ [getSeqNo]]]
+
+set savedPwd [pwd]
+file mkdir $clientDir; cd $clientDir
+if {! $::QUIET} {
+ puts [appendArgs "Now in client directory \"" [pwd] \".]
+}
+write_file unversioned-client1.txt "This is unversioned client file #1."
+
+###############################################################################
+
+fossil clone --save-http-password $remote uvrepo.fossil
+fossil open -f uvrepo.fossil
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-45 {[normalize_result] eq {}}
+
+###############################################################################
+
+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}}
+
+###############################################################################
+
+set env(FAKE_EDITOR_SCRIPT) "append data this_is_a_test"; # deterministic
+
+fossil unversioned edit unversioned2.txt
+test unversioned-48 {[normalize_result] eq {}}
+
+unset env(FAKE_EDITOR_SCRIPT)
+
+###############################################################################
+
+fossil unversioned cat unversioned2.txt
+test unversioned-49 {[::sha1::sha1 $RESULT] eq \
+{e15d4b576fc04e3bb5e44a33d44d104dd5b19428}}
+
+###############################################################################
+
+fossil unversioned remove unversioned5.txt
+test unversioned-50 {[normalize_result] eq {}}
+
+###############################################################################
+
+fossil unversioned list --all
+test unversioned-51 {[regexp \
+{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 44 44\
+unversioned2\.txt
+ \(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
+unversioned5\.txt$} [normalize_result]]}
+
+###############################################################################
+
+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\
+unversioned2\.txt
+[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
+unversioned5\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned add unversioned-client1.txt
+test unversioned-54 {[normalize_result] eq {}}
+
+###############################################################################
+
+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 {}}
+
+###############################################################################
+
+cd $savedPwd; unset savedPwd
+file delete -force $clientDir
+if {! $::QUIET} {
+ puts [appendArgs "Now in server directory \"" [pwd] \".]
+}
+
+###############################################################################
+
+set stopped [test_stop_server $stopArg $pid $outTmpFile]
+
+if {! $::QUIET} {
+ puts [appendArgs \
+ [expr {$stopped ? "Stopped" : "Could not stop"}] \
+ " Fossil server, pid \"" $pid "\", using argument \"" \
+ $stopArg \".]
+}
+
+###############################################################################
+
+fossil unversioned list
+test unversioned-57 {[regexp \
+{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 35 35\
+unversioned-client1\.txt
+[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
+[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
+unversioned5\.txt$} [normalize_result]]}
+
+###############################################################################
+
+fossil unversioned cat unversioned-client1.txt
+test unversioned-58 {[::sha1::sha1 $RESULT] eq \
+{a34606f714afe309bb531fba6051eaf25201e8a2}}
+
+###############################################################################
+
+test_cleanup