diff options
| author | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
| commit | 4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch) | |
| tree | c296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /test/symlinks.test | |
| download | relic-master.tar.gz | |
Diffstat (limited to 'test/symlinks.test')
| -rw-r--r-- | test/symlinks.test | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/test/symlinks.test b/test/symlinks.test new file mode 100644 index 0000000..446c741 --- /dev/null +++ b/test/symlinks.test @@ -0,0 +1,111 @@ +# +# 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/ +# +############################################################################ +# +# Symbolic link tests. +# + +set path [file dirname [info script]] + +if {$is_windows} { + puts "Symlinks are not supported on Windows." + test_cleanup_then_return +} + +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 +} + +####################################### +# Use symbolic link to a directory... # +####################################### + +file mkdir [file join $rootDir subdirA] +exec ln -s [file join $rootDir subdirA] symdirA + +############################################################################### + +write_file [file join $rootDir subdirA f1.txt] "f1" +write_file [file join $rootDir subdirA f2.txt] "f2" + +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" -expectError + +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 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 |
