summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2013-11-06 14:27:08 +0000
committerBen Brown <ben.brown@codethink.co.uk>2013-11-06 14:27:08 +0000
commit057bee132cf0bde4db35a6c6e7c4724e9331ce03 (patch)
tree19d33be6f8288ed21888fd69fb208ead12f0a871
parent7804883ce512a7cacb911cdea3a4896ecb79b22b (diff)
parentdaddec13b84ca2729a1d9e09d9df260663557ba8 (diff)
downloadtbdiff-057bee132cf0bde4db35a6c6e7c4724e9331ce03.tar.gz
Merge branch 'benbrown/S9451/convert-directory-tests'
-rw-r--r--Makefile.am2
-rwxr-xr-xtests/dir_add_remove.sh.disabled (renamed from tests/07_dir_add_remove.sh)0
-rwxr-xr-xtests/dir_diff.sh.disabled (renamed from tests/06_dir_diff.sh)0
-rwxr-xr-xtests/fifo_add_remove.sh.disabled (renamed from tests/03_fifo_add_remove.sh)0
-rwxr-xr-xtests/fifo_diff.sh.disabled (renamed from tests/02_fifo_diff.sh)0
-rwxr-xr-xtests/regular_file_add_remove.sh.disabled (renamed from tests/01_regular_file_add_remove.sh)0
-rwxr-xr-xtests/regular_file_diff.sh.disabled (renamed from tests/00_regular_file_diff.sh)0
-rwxr-xr-xtests/symlink_add_remove.sh.disabled (renamed from tests/05_symlink_add_remove.sh)0
-rwxr-xr-xtests/symlink_diff.sh.disabled (renamed from tests/04_symlink_diff.sh)0
-rw-r--r--yarns/README15
-rw-r--r--yarns/create-deploy.yarn343
11 files changed, 218 insertions, 142 deletions
diff --git a/Makefile.am b/Makefile.am
index 5bd51c8..d0b5fb3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -35,5 +35,5 @@ dist-hook: ChangeLog
TESTS = yarns/run_yarns.sh
-check_PROGRAMS = symtime
+noinst_PROGRAMS = symtime
symtime_SOURCES = yarns/symtime.c
diff --git a/tests/07_dir_add_remove.sh b/tests/dir_add_remove.sh.disabled
index 295b0f9..295b0f9 100755
--- a/tests/07_dir_add_remove.sh
+++ b/tests/dir_add_remove.sh.disabled
diff --git a/tests/06_dir_diff.sh b/tests/dir_diff.sh.disabled
index f9f56dd..f9f56dd 100755
--- a/tests/06_dir_diff.sh
+++ b/tests/dir_diff.sh.disabled
diff --git a/tests/03_fifo_add_remove.sh b/tests/fifo_add_remove.sh.disabled
index 9db6d12..9db6d12 100755
--- a/tests/03_fifo_add_remove.sh
+++ b/tests/fifo_add_remove.sh.disabled
diff --git a/tests/02_fifo_diff.sh b/tests/fifo_diff.sh.disabled
index f256414..f256414 100755
--- a/tests/02_fifo_diff.sh
+++ b/tests/fifo_diff.sh.disabled
diff --git a/tests/01_regular_file_add_remove.sh b/tests/regular_file_add_remove.sh.disabled
index 66b5bc8..66b5bc8 100755
--- a/tests/01_regular_file_add_remove.sh
+++ b/tests/regular_file_add_remove.sh.disabled
diff --git a/tests/00_regular_file_diff.sh b/tests/regular_file_diff.sh.disabled
index 0e12454..0e12454 100755
--- a/tests/00_regular_file_diff.sh
+++ b/tests/regular_file_diff.sh.disabled
diff --git a/tests/05_symlink_add_remove.sh b/tests/symlink_add_remove.sh.disabled
index badf199..badf199 100755
--- a/tests/05_symlink_add_remove.sh
+++ b/tests/symlink_add_remove.sh.disabled
diff --git a/tests/04_symlink_diff.sh b/tests/symlink_diff.sh.disabled
index d975191..d975191 100755
--- a/tests/04_symlink_diff.sh
+++ b/tests/symlink_diff.sh.disabled
diff --git a/yarns/README b/yarns/README
index 8b3434d..b1a254a 100644
--- a/yarns/README
+++ b/yarns/README
@@ -3,18 +3,3 @@ Running the test suite
Change to the top-level directory of the tbdiff source tree and run:
$ make check
-
-this will run the yarns after all the old tests have passed.
-
-
-If however, you would rather not sit and wait for old tests to be run,
-compile 'yarns/symtime.c' using:
-
-$ gcc symtime -o yarns/symtime.c
-
-followed by:
-
-$ ./yarns/run_yarns.sh
-
-to run the yarns (note that the compiling of 'yarns/symtime.c' is not
-required if `make check` has run at least once successfully).
diff --git a/yarns/create-deploy.yarn b/yarns/create-deploy.yarn
index abf8681..f2fcef0 100644
--- a/yarns/create-deploy.yarn
+++ b/yarns/create-deploy.yarn
@@ -8,10 +8,10 @@ appropriate binary delta created by tbdiff-create.
Changing of a file's content
----------------------------
-This simple test checks that file content is as expected, if the content of
-the two text files are different, the test will fail.
+The simple tests that follow check that file content is as expected; if the
+content of the given files are different, the test will fail.
- SCENARIO Changing a regular file's content works
+ SCENARIO Changing the content of a regular file works
GIVEN a directory exists named 'A_dir'
AND the directory 'A_dir' contains a regular file named 'foo_file' with '1' in it
AND a directory exists named 'B_dir'
@@ -20,107 +20,148 @@ the two text files are different, the test will fail.
AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
THEN the files 'A_dir/foo_file' and 'B_dir/foo_file' have the same contents
+ SCENARIO Changing the content of a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND the directory 'A_dir/1_dir' contains a regular file named 'foo_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the directory 'B_dir/1_dir' contains a regular file named 'bar_file'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the files 'A_dir/1_dir' and 'B_dir/1_dir' have the same contents
+
Changing of a file's ownership
------------------------------
Trebuchet also takes into account POSIX metadata such as ownership, these
scenarios are written to test that functionality.
- SCENARIO Changing a regular file's group ownership works
- GIVEN a directory exists named 'C_dir'
- AND the directory 'C_dir' contains a regular file named 'foo_file'
- AND a directory exists named 'D_dir'
- AND the directory 'D_dir' contains a regular file named 'foo_file'
- AND the file 'D_dir/foo_file' is owned by the group '893'
- WHEN tbdiff-create creates a binary delta named 'CD.tbdiff' from 'C_dir' to 'D_dir'
- AND tbdiff-deploy applies the delta 'CD.tbdiff' to 'C_dir'
- THEN the file 'C_dir/foo_file' is owned by the group '893'
-
- SCENARIO Changing a named pipe's group ownership works
- GIVEN a directory exists named 'E_dir'
- AND the directory 'E_dir' contains the named pipe 'bar_pipe'
- AND a directory exists named 'F_dir'
- AND the directory 'F_dir' contains the named pipe 'bar_pipe'
- AND the file 'F_dir/bar_pipe' is owned by the group '594'
- WHEN tbdiff-create creates a binary delta named 'EF.tbdiff' from 'E_dir' to 'F_dir'
- AND tbdiff-deploy applies the delta 'EF.tbdiff' to 'E_dir'
- THEN the file 'E_dir/bar_pipe' is owned by the group '594'
-
- SCENARIO Changing a symbolic link's group ownership works
- GIVEN a directory exists named 'G_dir'
- AND the directory 'G_dir' contains a regular file named 'foo_file'
- AND the directory 'G_dir' contains the symbolic link 'link_to_foo_file' referring to 'G_dir/foo_file'
- AND a directory exists named 'H_dir'
- AND the directory 'H_dir' contains a regular file named 'foo_file'
- AND the directory 'H_dir' contains the symbolic link 'link_to_foo_file' referring to 'H_dir/foo_file'
- AND the symbolic link 'H_dir/link_to_foo_file' is owned by the group '608'
- WHEN tbdiff-create creates a binary delta named 'GH.tbdiff' from 'G_dir' to 'H_dir'
- AND tbdiff-deploy applies the delta 'GH.tbdiff' to 'G_dir'
- THEN the file 'G_dir/link_to_foo_file' is owned by the group '608'
+ SCENARIO Changing the group that owns a regular file works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file'
+ AND the file 'B_dir/foo_file' is owned by the group '893'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/foo_file' is owned by the group '893'
+
+ SCENARIO Changing the group that owns a named pipe works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains the named pipe 'bar_pipe'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains the named pipe 'bar_pipe'
+ AND the file 'B_dir/bar_pipe' is owned by the group '594'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/bar_pipe' is owned by the group '594'
+
+ SCENARIO Changing the group that owns a symbolic link works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file'
+ AND the directory 'A_dir' contains the symbolic link 'link_to_foo_file' referring to 'A_dir/foo_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file'
+ AND the directory 'B_dir' contains the symbolic link 'link_to_foo_file' referring to 'B_dir/foo_file'
+ AND the symbolic link 'B_dir/link_to_foo_file' is owned by the group '608'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/link_to_foo_file' is owned by the group '608'
+
+ SCENARIO Changing the group that owns a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the file 'B_dir/1_dir' is owned by the group '675'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/1_dir' is owned by the group '675'
Changing of a file's permissions
--------------------------------
-These scenarios test that file permissions are successfully changed after
-the deployment of a binary delta.
+These scenarios test that file permissions are correctly changed upon the
+deployment of a binary delta.
- SCENARIO Changing a file's permissions works
- GIVEN a directory exists named 'I_dir'
- AND the directory 'I_dir' contains a regular file named 'foo_file'
- AND a directory exists named 'J_dir'
- AND the directory 'J_dir' contains a regular file named 'foo_file'
- AND the file 'J_dir/foo_file' has the permissions 'ugo=rw'
- WHEN tbdiff-create creates a binary delta named 'IJ.tbdiff' from 'I_dir' to 'J_dir'
- AND tbdiff-deploy applies the delta 'IJ.tbdiff' to 'I_dir'
- THEN the file 'I_dir/foo_file' has the permissions '-rw-rw-rw-'
+ SCENARIO Changing a regular file's permissions works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file'
+ AND the file 'B_dir/foo_file' has its permissions set to 'ugo=rw'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/foo_file' has the permissions '-rw-rw-rw-'
SCENARIO Changing a named pipe's permissions works
- GIVEN a directory exists named 'K_dir'
- AND the directory 'K_dir' contains the named pipe 'bar_pipe'
- AND a directory exists named 'L_dir'
- AND the directory 'L_dir' contains the named pipe 'bar_pipe'
- AND the file 'L_dir/bar_pipe' has the permissions 'ug=rw,o=r'
- WHEN tbdiff-create creates a binary delta named 'KL.tbdiff' from 'K_dir' to 'L_dir'
- AND tbdiff-deploy applies the delta 'KL.tbdiff' to 'K_dir'
- THEN the file 'K_dir/bar_pipe' has the permissions 'prw-rw-r--'
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains the named pipe 'bar_pipe'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains the named pipe 'bar_pipe'
+ AND the file 'B_dir/bar_pipe' has its permissions set to 'ug=rw,o=r'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/bar_pipe' has the permissions 'prw-rw-r--'
+
+ SCENARIO Changing the permissions of a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the file 'B_dir/1_dir' has its permissions set to 'g=,uo=rwx'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/1_dir' has the permissions 'drwx---rwx'
Adding and removing of files
----------------------------
-The following scenarios check that the deploying of a binary delta
+The following scenarios check that the deployment of a binary delta
successfully removes and creates the appropriate files.
SCENARIO Adding and removing of regular files works
- GIVEN a directory exists named 'M_dir'
- AND the directory 'M_dir' contains a regular file named 'minus_file'
- AND a directory exists named 'N_dir'
- AND the directory 'N_dir' contains a regular file named 'plus_file'
- WHEN tbdiff-create creates a binary delta named 'MN.tbdiff' from 'M_dir' to 'N_dir'
- AND tbdiff-deploy applies the delta 'MN.tbdiff' to 'M_dir'
- THEN the file 'M_dir/minus_file' no longer exists
- AND the directory 'M_dir' contains a file named 'plus_file'
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'minus_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'plus_file'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/minus_file' no longer exists
+ AND the directory 'A_dir' contains a file named 'plus_file'
SCENARIO Adding and removing of named pipes works
- GIVEN a directory exists named 'O_dir'
- AND the directory 'O_dir' contains the named pipe 'minus_pipe'
- AND a directory exists named 'P_dir'
- AND the directory 'P_dir' contains the named pipe 'plus_pipe'
- WHEN tbdiff-create creates a binary delta named 'OP.tbdiff' from 'O_dir' to 'P_dir'
- AND tbdiff-deploy applies the delta 'OP.tbdiff' to 'O_dir'
- THEN the file 'O_dir/minus_pipe' no longer exists
- AND the directory 'O_dir' contains the named pipe 'plus_pipe'
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains the named pipe 'minus_pipe'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains the named pipe 'plus_pipe'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/minus_pipe' no longer exists
+ AND the directory 'A_dir' contains the named pipe 'plus_pipe'
SCENARIO Adding and removing of symbolic links works
- GIVEN a directory exists named 'Q_dir'
- AND the directory 'Q_dir' contains a regular file named 'minus_file'
- AND the directory 'Q_dir' contains the symbolic link 'link_to_minus_file' referring to 'Q_dir/minus_file'
- AND a directory exists named 'R_dir'
- AND the directory 'R_dir' contains a regular file named 'plus_file'
- AND the directory 'R_dir' contains the symbolic link 'link_to_plus_file' referring to 'R_dir/plus_file'
- WHEN tbdiff-create creates a binary delta named 'QR.tbdiff' from 'Q_dir' to 'R_dir'
- AND tbdiff-deploy applies the delta 'QR.tbdiff' to 'Q_dir'
- THEN the file 'Q_dir/link_to_minus_file' no longer exists
- AND the directory 'Q_dir' contains the symbolic link 'link_to_plus_file'
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'minus_file'
+ AND the directory 'A_dir' contains the symbolic link 'link_to_minus_file' referring to 'A_dir/minus_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'plus_file'
+ AND the directory 'B_dir' contains the symbolic link 'link_to_plus_file' referring to 'B_dir/plus_file'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/link_to_minus_file' no longer exists
+ AND the directory 'A_dir' contains the symbolic link 'link_to_plus_file'
+
+ SCENARIO Adding and removing of directories works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named 'minus_dir'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named 'plus_dir'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the file 'A_dir/minus_dir' no longer exists
+ THEN the directory 'A_dir' contains the directory 'plus_dir'
Changing modification time of a file
------------------------------------
@@ -128,57 +169,95 @@ Changing modification time of a file
In the following scenarios we check that modification times are correctly
changed, if modification times are not identical, the test fails.
- SCENARIO Changing a file's modification time works
- GIVEN a directory exists named 'S_dir'
- AND the directory 'S_dir' contains a regular file named 'foo_file' with '1' in it
- AND the file 'S_dir/foo_file' has its modification time set to '@1381758015'
- AND a directory exists named 'T_dir'
- AND the directory 'T_dir' contains a regular file named 'foo_file' with '1' in it
- AND the file 'T_dir/foo_file' has its modification time set to '@683074800'
- WHEN tbdiff-create creates a binary delta named 'ST.tbdiff' from 'S_dir' to 'T_dir'
- AND tbdiff-deploy applies the delta 'ST.tbdiff' to 'S_dir'
- THEN the files 'S_dir/foo_file' and 'T_dir/foo_file' have the same modification time
-
- SCENARIO Changing a named pipe's modification time works
- GIVEN a directory exists named 'U_dir'
- AND the directory 'U_dir' contains the named pipe 'bar_pipe'
- AND the file 'U_dir/bar_pipe' has its modification time set to '@1381758015'
- AND a directory exists named 'V_dir'
- AND the directory 'V_dir' contains the named pipe 'bar_pipe'
- AND the file 'V_dir/bar_pipe' has its modification time set to '@683074800'
- WHEN tbdiff-create creates a binary delta named 'UV.tbdiff' from 'U_dir' to 'V_dir'
- AND tbdiff-deploy applies the delta 'UV.tbdiff' to 'U_dir'
- THEN the files 'U_dir/bar_pipe' and 'V_dir/bar_pipe' have the same modification time
-
- SCENARIO Changing a symbolic links modification time works
- GIVEN a directory exists named 'W_dir'
- AND the directory 'W_dir' contains a regular file named 'foo_file'
- AND the directory 'W_dir' contains the symbolic link 'link_to_foo_file' referring to 'W_dir/foo_file'
- AND the symbolic link 'W_dir/link_to_foo_file' has its modification time set to '1381758015'
- AND a directory exists named 'X_dir'
- AND the directory 'X_dir' contains a regular file named 'foo_file'
- AND the directory 'X_dir' contains the symbolic link 'link_to_foo_file' referring to 'X_dir/foo_file'
- AND the symbolic link 'X_dir/link_to_foo_file' has its modification time set to '683074800'
- WHEN tbdiff-create creates a binary delta named 'WX.tbdiff' from 'W_dir' to 'X_dir'
- AND tbdiff-deploy applies the delta 'WX.tbdiff' to 'W_dir'
- THEN the files 'W_dir/link_to_foo_file' and 'X_dir/link_to_foo_file' have the same modification time
+ SCENARIO Changing the modification time of a regular file works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file' with '1' in it
+ AND the file 'A_dir/foo_file' has its modification time set to '@1381758015'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file' with '1' in it
+ AND the file 'B_dir/foo_file' has its modification time set to '@683074800'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the files 'A_dir/foo_file' and 'B_dir/foo_file' have the same modification time
+
+ SCENARIO Changing the modification time of a named pipe works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains the named pipe 'bar_pipe'
+ AND the file 'A_dir/bar_pipe' has its modification time set to '@1381758015'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains the named pipe 'bar_pipe'
+ AND the file 'B_dir/bar_pipe' has its modification time set to '@683074800'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the files 'A_dir/bar_pipe' and 'B_dir/bar_pipe' have the same modification time
+
+ SCENARIO Changing the modification time of a symbolic link works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file'
+ AND the directory 'A_dir' contains the symbolic link 'link_to_foo_file' referring to 'A_dir/foo_file'
+ AND the symbolic link 'A_dir/link_to_foo_file' has its modification time set to '1381758015'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file'
+ AND the directory 'B_dir' contains the symbolic link 'link_to_foo_file' referring to 'B_dir/foo_file'
+ AND the symbolic link 'B_dir/link_to_foo_file' has its modification time set to '683074800'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the files 'A_dir/link_to_foo_file' and 'B_dir/link_to_foo_file' have the same modification time
+
+ SCENARIO Changing the modification time of a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND the file 'A_dir/1_dir' has its modification time set to '@1381758015'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the file 'B_dir/1_dir' has its modification time set to '@683074800'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the files 'A_dir/1_dir' and 'B_dir/1_dir' have the same modification time
Changing what a symbolic link refers to
---------------------------------------
-This scenario checks that referenced files of symbolic links are correctly
-transformed.
+Here we check that referenced files of symbolic links are correctly transformed.
SCENARIO Changing what a symbolic link refers to works
- GIVEN a directory exists named 'Y_dir'
- AND the directory 'Y_dir' contains a regular file named 'foo_file'
- AND the directory 'Y_dir' contains the symbolic link 'link_to_foo_file' referring to 'Y_dir/foo_file'
- AND a directory exists named 'Z_dir'
- AND the directory 'Z_dir' contains a regular file named 'foo_file'
- AND the directory 'Z_dir' contains the symbolic link 'link_to_foo_file' referring to 'Z_dir/foo_file'
- WHEN tbdiff-create creates a binary delta named 'YZ.tbdiff' from 'Y_dir' to 'Z_dir'
- AND tbdiff-deploy applies the delta 'YZ.tbdiff' to 'Y_dir'
- THEN the symbolic links 'Y_dir/link_to_foo_file' and 'Z_dir/link_to_foo_file' refer to the same thing
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a regular file named 'foo_file'
+ AND the directory 'A_dir' contains the symbolic link 'link_to_foo_file' referring to 'A_dir/foo_file'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a regular file named 'foo_file'
+ AND the directory 'B_dir' contains the symbolic link 'link_to_foo_file' referring to 'B_dir/foo_file'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the symbolic links 'A_dir/link_to_foo_file' and 'B_dir/link_to_foo_file' refer to the same thing
+
+Setting special file permissions for directories
+------------------------------------------------
+
+This scenario checks that the sticky bit of a directory has been changed
+appropriately upon the deployment of a binary delta.
+
+ SCENARIO Setting the sticky bit of a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the file 'B_dir/1_dir' has its permissions set to '+t'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the directory 'A_dir/1_dir' has its sticky bit set
+
+And this scenario checks that the setgid bit of a directory is set accordingly.
+
+ SCENARIO Setting the setgid bit of a directory works
+ GIVEN a directory exists named 'A_dir'
+ AND the directory 'A_dir' contains a directory named '1_dir'
+ AND a directory exists named 'B_dir'
+ AND the directory 'B_dir' contains a directory named '1_dir'
+ AND the file 'B_dir/1_dir' has its permissions set to 'g+s'
+ WHEN tbdiff-create creates a binary delta named 'AB.tbdiff' from 'A_dir' to 'B_dir'
+ AND tbdiff-deploy applies the delta 'AB.tbdiff' to 'A_dir'
+ THEN the directory 'A_dir/1_dir' has its setgid bit set
IMPLEMENTS
==========
@@ -201,7 +280,7 @@ Implementations for the creating and deploying of binary deltas
IMPLEMENTS GIVEN the symbolic link '([^']+)' is owned by the group '([^']+)'
chgrp -h "$MATCH_2" "$DATADIR/$MATCH_1"
- IMPLEMENTS GIVEN the file '([^']+)' has the permissions '([^']+)'
+ IMPLEMENTS GIVEN the file '([^']+)' has its permissions set to '([^']+)'
chmod "$MATCH_2" "$DATADIR/$MATCH_1"
IMPLEMENTS GIVEN the file '([^']+)' has its modification time set to '([^']+)'
@@ -216,6 +295,9 @@ Implementations for the creating and deploying of binary deltas
IMPLEMENTS GIVEN the directory '([^']+)' contains the symbolic link '([^']+)' referring to '([^']+)'
ln -s "$DATADIR/$MATCH_3" "$DATADIR/$MATCH_1/$MATCH_2"
+ IMPLEMENTS GIVEN the directory '([^']+)' contains a directory named '([^']+)'
+ mkdir "$DATADIR/$MATCH_1/$MATCH_2"
+
IMPLEMENTS WHEN tbdiff-create creates a binary delta named '([^']+)' from '([^']+)' to '([^']+)'
"$SRCDIR/tbdiff-create/tbdiff-create" "$DATADIR/$MATCH_1" "$DATADIR/$MATCH_2" "$DATADIR/$MATCH_3"
@@ -249,3 +331,12 @@ Implementations for the creating and deploying of binary deltas
IMPLEMENTS THEN the symbolic links '([^']+)' and '([^']+)' refer to the same thing
test "$(readlink "$DATADIR/$MATCH_1")" = "$(readlink "$DATADIR/$MATCH_2")"
+
+ IMPLEMENTS THEN the directory '([^']+)' contains the directory '([^']+)'
+ test -d "$DATADIR/$MATCH_1/$MATCH_2"
+
+ IMPLEMENTS THEN the directory '([^']+)' has its sticky bit set
+ test -k "$DATADIR/$MATCH_1"
+
+ IMPLEMENTS THEN the directory '([^']+)' has its setgid bit set
+ test -g "$DATADIR/$MATCH_1"