Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 999d8a0

Browse files
authoredOct 23, 2017
Merge pull request #48 from Chris-Robertson/fix-rm-no-args
Fix recursive remove with no arguments deleting entire notes directory
2 parents ca8f33a + ddaba25 commit 999d8a0

File tree

2 files changed

+43
-4
lines changed

2 files changed

+43
-4
lines changed
 

‎notes

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,20 @@ new_note() {
124124
remove_note() {
125125
local rm_args=()
126126
if [[ "$1" == "-r" || "$1" == "--recursive" ]]; then
127-
rm_args+=("--recursive")
127+
# checks for macos, as it doesn't support long arguments for rm
128+
if [[ "$OSTYPE" == "darwin"* ]]; then
129+
rm_args+=("-r")
130+
else
131+
rm_args+=("--recursive")
132+
fi
128133
shift
129134
fi
130135

136+
if [ ! "$#" -gt 0 ]; then
137+
printf "Remove requires a file or folder, but none was provided."
138+
return 1
139+
fi
140+
131141
local note_name="$*"
132142
local to_remove="$notes_dir/$note_name"
133143

@@ -167,7 +177,7 @@ open_note() {
167177
local note_path=$1
168178

169179
if [[ -z "$note_path" ]]; then
170-
open $notes_dir
180+
open "$notes_dir"
171181
return
172182
fi
173183

@@ -270,3 +280,4 @@ main() {
270280
exit $ret
271281
}
272282
main "$@"
283+

‎test/test-rm.bats

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ notes="./notes"
2828
assert_failure
2929
}
3030

31+
@test "Should fail when no file or folder given" {
32+
run $notes rm
33+
34+
assert_failure
35+
}
36+
3137
@test "Should remove note in folder" {
3238
mkdir "$NOTES_DIRECTORY/folder"
3339
touch "$NOTES_DIRECTORY/folder/note.md"
@@ -52,7 +58,18 @@ notes="./notes"
5258

5359
assert_success
5460
refute_exists "$NOTES_DIRECTORY/folder"
55-
refute_exists "$NOTES_DIRECTORY/folder/notes.md"
61+
refute_exists "$NOTES_DIRECTORY/folder/note.md"
62+
}
63+
64+
@test "-r Should fail if no file or folder given" {
65+
mkdir "$NOTES_DIRECTORY/folder"
66+
touch "$NOTES_DIRECTORY/folder/note.md"
67+
run $notes rm -r
68+
69+
assert_failure
70+
assert_line "Remove requires a file or folder, but none was provided."
71+
assert_exists "$NOTES_DIRECTORY/folder"
72+
assert_exists "$NOTES_DIRECTORY/folder/note.md"
5673
}
5774

5875
@test "--recursive Should remove folder recursively" {
@@ -62,7 +79,18 @@ notes="./notes"
6279

6380
assert_success
6481
refute_exists "$NOTES_DIRECTORY/folder"
65-
refute_exists "$NOTES_DIRECTORY/folder/notes.md"
82+
refute_exists "$NOTES_DIRECTORY/folder/note.md"
83+
}
84+
85+
@test "--recursive Should fail if no file or folder given" {
86+
mkdir "$NOTES_DIRECTORY/folder"
87+
touch "$NOTES_DIRECTORY/folder/note.md"
88+
run $notes rm --recursive
89+
90+
assert_failure
91+
assert_line "Remove requires a file or folder, but none was provided."
92+
assert_exists "$NOTES_DIRECTORY/folder"
93+
assert_exists "$NOTES_DIRECTORY/folder/note.md"
6694
}
6795

6896
@test "should delete file if both folder and file exists" {

0 commit comments

Comments
 (0)
Please sign in to comment.