From 4f49b16079b27d7ce633619e4cddfdf2bffbc952 Mon Sep 17 00:00:00 2001 From: cashmere Date: Fri, 4 Sep 2026 09:05:24 +0200 Subject: initial commit --- test/unversioned.test | 478 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 478 insertions(+) create mode 100644 test/unversioned.test (limited to 'test/unversioned.test') 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 -- cgit v1.3.1