{"thread":{"id":"2816","subject":"[PATCH] cg-clean test","startedAt":"2005-12-12T20:56:15Z","lastAt":"2005-12-12T20:56:15Z","messageCount":1,"participants":["Pavel Roskin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"13529","messageId":"1134420975.4695.16.camel@dv","threadId":"2816","inReplyTo":null,"subject":"[PATCH] cg-clean test","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2005-12-12T20:56:15Z","receivedAt":"2005-12-12T20:56:15Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"This is a test for cg-clean functionality.\n\nSigned-off-by: Pavel Roskin <proski@gnu.org>\n\ndiff --git a/t/t9400-clean.sh b/t/t9400-clean.sh\nnew file mode 100755\nindex 0000000..76186b6\n--- /dev/null\n+++ b/t/t9400-clean.sh\n@@ -0,0 +1,112 @@\n+#!/usr/bin/env bash\n+#\n+# Copyright (c) 2005 Pvel Roskin\n+#\n+test_description=\"Tests basic cg-clean functionality\n+\n+Create files and directories and check that cg-clean removes them.\"\n+\n+. ./test-lib.sh\n+\n+# Use spaces in names to make sure they are handled properly.\n+echo \"repo file 1\" >\"repo file 1\"\n+mkdir \"repo dir\"\n+echo \"repo file 2\" >\"repo dir/repo file 2\"\n+echo \"*.ign\" >\".gitignore\"\n+echo \"*.ign1\" >\"repo dir/.gitignore\"\n+\n+test_expect_success 'initialize repo' \\\n+\t\"(cg-add -r * .gitignore && \\\n+\t  cg-commit -C -m\\\"Initial commit\\\")\"\n+\n+echo \"extra file 1\" >\"extra file 1\"\n+mkdir \"extra dir 1\"\n+echo \"extra file 2\" >\"repo dir/extra file 2\"\n+mkdir \"repo dir/extra dir 2\"\n+echo \"extra file 3\" >\"extra dir 1/extra file 3\"\n+echo \"ign file 1\" >\"ign file 1.ign\"\n+echo \"ign file 2\" >\"ign file 2.ign1\"\n+echo \"ign file 3\" >\"repo dir/ign file 3.ign\"\n+echo \"ign file 4\" >\"repo dir/ign file 4.ign1\"\n+\n+# Create file lists under .git/temp, exclude .git/ from listings.\n+# Compare lists before and after cg-clean and check if only the expected\n+# files were removed.\n+topdir=\"`pwd`\"\n+mkdir .git/temp\n+list=\"$topdir/.git/temp/list\"\n+\n+mklist()\n+{\n+\tcd \"$topdir\"\n+\tfind . 2>/dev/null |sed -n \"/^.\\/.git\\//d;s/^..//p\" | \\\n+\t\tsort > \"$list-$1\"\n+}\n+\n+check_loss()\n+{\n+\tmklist new\n+\techo \"$loss\" | cat - \"$list-new\" | \\\n+\tgrep -v ^$ | sort >\"$list-combined\"\n+\tdiff -u \"$list-init\" \"$list-combined\" > \"$list.diff\" && \\\n+\tcp -f \"$list-new\" \"$list-init\"\n+}\n+\n+mklist init\n+loss=''\n+test_expect_success 'cg-clean -n in top-level dir' \\\n+\t\"(cg-clean -n && check_loss)\"\n+\n+test_expect_success 'cg-clean -Ddxqn in top-level dir' \\\n+\t\"(cg-clean -Ddxqn && check_loss)\"\n+\n+test_expect_success 'cg-clean -n in subdir' \\\n+\t\"(cd 'repo dir' && cg-clean -n && check_loss)\"\n+\n+loss='repo dir/extra file 2'\n+test_expect_success 'cg-clean in subdir' \\\n+\t\"(cd 'repo dir' && cg-clean && check_loss)\"\n+\n+loss='repo dir/extra dir 2'\n+test_expect_success 'cg-clean -d in subdir' \\\n+\t\"(cd 'repo dir' && cg-clean -d && check_loss)\"\n+\n+loss='repo dir/ign file 3.ign\n+repo dir/ign file 4.ign1'\n+test_expect_success 'cg-clean -x in subdir' \\\n+\t\"(cd 'repo dir' && cg-clean -x && check_loss)\"\n+\n+# Restore extra files in \"repo dir\"\n+echo \"extra file 2\" >\"repo dir/extra file 2\"\n+mkdir \"repo dir/extra dir 2\"\n+echo \"ign file 3\" >\"repo dir/ign file 3.ign\"\n+echo \"ign file 4\" >\"repo dir/ign file 4.ign1\"\n+mklist init\n+\n+# FIXME: cg-clean shouldn't clean unknown directories without \"-d\"\n+loss='extra file 1\n+ign file 2.ign1\n+extra dir 1/extra file 3\n+repo dir/extra file 2'\n+test_expect_success 'cg-clean in top-level dir' \\\n+\t\"(cg-clean && check_loss)\"\n+\n+loss='ign file 1.ign\n+repo dir/ign file 3.ign\n+repo dir/ign file 4.ign1'\n+test_expect_success 'cg-clean -x in top-level dir' \\\n+\t\"(cg-clean -x && check_loss)\"\n+\n+loss='extra dir 1\n+repo dir/extra dir 2'\n+test_expect_success 'cg-clean -d in top-level dir' \\\n+\t\"(cg-clean -d && check_loss)\"\n+\n+mkdir \"extra dir 3\"\n+chmod 000 \"extra dir 3\"\n+mklist init\n+loss='extra dir 3'\n+test_expect_success 'cg-clean -D in top-level dir' \\\n+\t\"(cg-clean -D && check_loss)\"\n+\n+test_done\n\n\n-- \nRegards,\nPavel Roskin\n"}]}