Skip to content
Snippets Groups Projects
Commit f35b1e88 authored by Brooks Rady's avatar Brooks Rady Committed by Xiangrong Hao
Browse files

Files being moved out of a directory trigger a "delete" event. (#44)

* Add the ability to detect 'MOVED_FROM' events

* Fixed the ability to detect 'MOVED_FROM' events

* Style fix

* Bump Version

* Changed `MOVED_TO` behavior and fixed unit tests.
parent 632035c2
Branches
No related tags found
No related merge requests found
......@@ -41,7 +41,7 @@ defmodule FileSystem.Backends.FSInotify do
end
def known_events do
[:created, :deleted, :renamed, :closed, :modified, :isdir, :attribute, :undefined]
[:created, :deleted, :closed, :modified, :isdir, :attribute, :undefined]
end
defp executable_path do
......@@ -74,8 +74,8 @@ defmodule FileSystem.Backends.FSInotify do
{dirs, rest} ->
format = ["%w", "%e", "%f"] |> Enum.join(@sep_char) |> to_charlist
args = [
'-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'create',
'-e', 'delete', '-e', 'attrib', '--format', format, '--quiet', '-m', '-r'
'-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'moved_from',
'-e', 'create', '-e', 'delete', '-e', 'attrib', '--format', format, '--quiet', '-m', '-r'
| dirs |> Enum.map(&Path.absname/1) |> Enum.map(&to_charlist/1)
]
parse_options(rest, args)
......@@ -149,12 +149,13 @@ defmodule FileSystem.Backends.FSInotify do
end
defp convert_flag("CREATE"), do: :created
defp convert_flag("MOVED_TO"), do: :created
defp convert_flag("DELETE"), do: :deleted
defp convert_flag("MOVED_FROM"), do: :deleted
defp convert_flag("ISDIR"), do: :isdir
defp convert_flag("MODIFY"), do: :modified
defp convert_flag("CLOSE_WRITE"), do: :modified
defp convert_flag("CLOSE"), do: :closed
defp convert_flag("MOVED_TO"), do: :renamed
defp convert_flag("ATTRIB"), do: :attribute
defp convert_flag(_), do: :undefined
end
......@@ -3,7 +3,7 @@ defmodule FileSystem.Mixfile do
def project do
[ app: :file_system,
version: "0.2.2",
version: "0.2.3",
elixir: "~> 1.3",
deps: deps(),
description: "A file system change watcher wrapper based on [fs](https://github.com/synrc/fs)",
......
......@@ -9,20 +9,20 @@ defmodule FileSystem.Backends.FSInotifyTest do
end
test "supported options" do
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'create', '-e',
'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'moved_from', '-e', 'create',
'-e', 'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
'--quiet', '-m', '-r', '/tmp']} ==
parse_options(dirs: ["/tmp"], recursive: true)
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'create', '-e',
'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'moved_from', '-e', 'create',
'-e', 'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
'--quiet', '-m', '/tmp']} ==
parse_options(dirs: ["/tmp"], recursive: false)
end
test "ignore unsupported options" do
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'create', '-e',
'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
assert {:ok, ['-e', 'modify', '-e', 'close_write', '-e', 'moved_to', '-e', 'moved_from', '-e', 'create',
'-e', 'delete', '-e', 'attrib', '--format', [37, 119, 1, 37, 101, 1, 37, 102],
'--quiet', '-m', '/tmp']} ==
parse_options(dirs: ["/tmp"], recursive: false, unsupported: :options)
end
......@@ -42,7 +42,7 @@ defmodule FileSystem.Backends.FSInotifyTest do
end
test "dir moved to" do
assert {"/one/two/file", [:renamed]} ==
assert {"/one/two/file", [:created]} ==
~w|/one/two/ MOVED_TO file| |> to_port_line |> parse_line
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment