summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2019-02-04 01:28:34 +0530
committerArun Isaac2019-02-04 01:35:10 +0530
commit8892e1485d2157e0e9be8f337d1d2ff7b1a6c338 (patch)
treec085804c75afe5365d9adb1c09301eac25717bbf
parent3a07dbcb975577734d4abf6d68e1ab83a01951bb (diff)
downloadexiftool.el-8892e1485d2157e0e9be8f337d1d2ff7b1a6c338.tar.gz
exiftool.el-8892e1485d2157e0e9be8f337d1d2ff7b1a6c338.tar.lz
exiftool.el-8892e1485d2157e0e9be8f337d1d2ff7b1a6c338.zip
Signal a file-missing error when file is not found.
* exiftool.el (exiftool--assert-file-exists): New function. (exiftool-read, exiftool-copy, exiftool-write): Assert that file arguments exist before operating on them. * tests/exiftool-tests.el (read-file-not-found-test, copy-file-not-found-test, write-file-not-found-test): New tests.
-rw-r--r--exiftool.el10
-rw-r--r--tests/exiftool-tests.el15
2 files changed, 23 insertions, 2 deletions
diff --git a/exiftool.el b/exiftool.el
index a9495c5..3e5327b 100644
--- a/exiftool.el
+++ b/exiftool.el
@@ -1,7 +1,7 @@
;;; exiftool.el --- Elisp wrapper around ExifTool -*- lexical-binding: t -*-
;; Elisp wrapper around ExifTool
-;; Copyright (C) 2017 by Arun I
+;; Copyright (C) 2017, 2019 by Arun I
;;
;; Author: Arun I <arunisaac@systemreboot.net>
;; Version: 0.3
@@ -77,6 +77,10 @@ exiftool command line application."
"\n-execute\n")
suffix))))))
+(defun exiftool--assert-file-exists (file)
+ (unless (file-exists-p file)
+ (signal 'file-missing file)))
+
(defun exiftool-read (file &rest tags)
"Read TAGS from FILE, return an alist mapping TAGS to values.
@@ -84,6 +88,7 @@ If a tag is not found, return an empty string \"\" as the
value. If no TAGS are specified, read all tags from FILE.
\(fn FILE TAG...)"
+ (exiftool--assert-file-exists file)
(mapcar
(lambda (line)
(string-match "\\([^:]*\\): \\(.*\\)" line)
@@ -105,6 +110,8 @@ value. If no TAGS are specified, read all tags from FILE.
"Copy TAGS from SOURCE file to DESTINATION file.
If no TAGS are specified, copy all tags from SOURCE."
+ (exiftool--assert-file-exists source)
+ (exiftool--assert-file-exists destination)
(apply 'exiftool-command
"-m" "-overwrite_original"
"-tagsFromFile" source
@@ -123,6 +130,7 @@ pairs. Specifying the empty string \"\" for VALUE deletes that
TAG.
\(fn FILE (TAG . VALUE)...)"
+ (exiftool--assert-file-exists file)
(apply 'exiftool-command
"-m" "-overwrite_original"
(append
diff --git a/tests/exiftool-tests.el b/tests/exiftool-tests.el
index 8d040c4..0ef5fa2 100644
--- a/tests/exiftool-tests.el
+++ b/tests/exiftool-tests.el
@@ -1,7 +1,7 @@
;;; exiftool.el --- Elisp wrapper around exiftool ;; -*- lexical-binding: t -*-
;; Elisp wrapper around exiftool
-;; Copyright (C) 2017 by Arun I
+;; Copyright (C) 2017, 2019 by Arun I
;;
;; Author: Arun I <arunisaac@systemreboot.net>
;; Keywords: data
@@ -90,6 +90,19 @@
(equal (apply 'exiftool-read temp-1 some-tags)
(apply 'exiftool-read temp-2 some-tags))))))))
+(ert-deftest read-file-not-found-test ()
+ (should-error (exiftool-read "non-existent-file.png")
+ :type 'file-missing))
+
+(ert-deftest copy-file-not-found-test ()
+ (should-error (exiftool-copy "non-existent-file-1.png"
+ "non-existent-file-2.png")
+ :type 'file-missing))
+
+(ert-deftest write-file-not-found-test ()
+ (should-error (exiftool-write "non-existent-file.png")
+ :type 'file-missing))
+
(provide 'exiftool-tests)
;;; exiftool-tests.el ends here