summaryrefslogtreecommitdiff
path: root/tests/test-music-config--get-m3u-files.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-music-config--get-m3u-files.el')
-rw-r--r--tests/test-music-config--get-m3u-files.el150
1 files changed, 0 insertions, 150 deletions
diff --git a/tests/test-music-config--get-m3u-files.el b/tests/test-music-config--get-m3u-files.el
deleted file mode 100644
index 2d31d554..00000000
--- a/tests/test-music-config--get-m3u-files.el
+++ /dev/null
@@ -1,150 +0,0 @@
-;;; test-music-config--get-m3u-files.el --- Tests for M3U file discovery -*- coding: utf-8; lexical-binding: t; -*-
-;;
-;; Author: Craig Jennings <c@cjennings.net>
-;;
-;;; Commentary:
-;; Unit tests for cj/music--get-m3u-files function.
-;; Tests the helper that discovers M3U files in the music directory.
-;;
-;; Test organization:
-;; - Normal Cases: Multiple M3U files, single file
-;; - Boundary Cases: Empty directory, non-M3U files, various filenames
-;; - Error Cases: Nonexistent directory
-;;
-;;; Code:
-
-(require 'ert)
-(require 'testutil-general)
-
-;; Stub missing dependencies before loading music-config
-(defvar-keymap cj/custom-keymap
- :doc "Stub keymap for testing")
-
-;; Load production code
-(require 'music-config)
-
-;;; Setup & Teardown
-
-(defun test-music-config--get-m3u-files-setup ()
- "Setup test environment."
- (cj/create-test-base-dir))
-
-(defun test-music-config--get-m3u-files-teardown ()
- "Clean up test environment."
- (cj/delete-test-base-dir))
-
-;;; Normal Cases
-
-(ert-deftest test-music-config--get-m3u-files-normal-multiple-files-returns-list ()
- "Discover multiple M3U files returns list of (basename . fullpath) conses."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "playlists"))
- (file1 (cj/create-temp-test-file-with-content "" "playlist1.m3u"))
- (file2 (cj/create-temp-test-file-with-content "" "playlist2.m3u"))
- (file3 (cj/create-temp-test-file-with-content "" "playlist3.m3u")))
- ;; Move files to test-dir
- (rename-file file1 (expand-file-name "playlist1.m3u" test-dir))
- (rename-file file2 (expand-file-name "playlist2.m3u" test-dir))
- (rename-file file3 (expand-file-name "playlist3.m3u" test-dir))
-
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (= (length result) 3))
- ;; Check structure: list of (basename . fullpath) conses
- ;; Sort for consistent comparison (directory-files order is filesystem-dependent)
- (let ((basenames (sort (mapcar #'car result) #'string<))
- (fullpaths (sort (mapcar #'cdr result) #'string<)))
- (should (equal basenames '("playlist1.m3u" "playlist2.m3u" "playlist3.m3u")))
- (should (equal fullpaths
- (list (expand-file-name "playlist1.m3u" test-dir)
- (expand-file-name "playlist2.m3u" test-dir)
- (expand-file-name "playlist3.m3u" test-dir))))))))
- (test-music-config--get-m3u-files-teardown)))
-
-(ert-deftest test-music-config--get-m3u-files-normal-single-file-returns-list ()
- "Discover single M3U file returns single-item list."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "playlists"))
- (file1 (cj/create-temp-test-file-with-content "" "myplaylist.m3u")))
- (rename-file file1 (expand-file-name "myplaylist.m3u" test-dir))
-
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (= (length result) 1))
- (should (equal (caar result) "myplaylist.m3u"))
- (should (equal (cdar result) (expand-file-name "myplaylist.m3u" test-dir))))))
- (test-music-config--get-m3u-files-teardown)))
-
-;;; Boundary Cases
-
-(ert-deftest test-music-config--get-m3u-files-boundary-empty-directory-returns-empty ()
- "Discover M3U files in empty directory returns empty list."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "empty-playlists")))
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (null result)))))
- (test-music-config--get-m3u-files-teardown)))
-
-(ert-deftest test-music-config--get-m3u-files-boundary-non-m3u-files-ignored ()
- "Directory with non-M3U files returns empty list."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "mixed-files"))
- (txt-file (cj/create-temp-test-file-with-content "" "readme.txt"))
- (mp3-file (cj/create-temp-test-file-with-content "" "song.mp3"))
- (json-file (cj/create-temp-test-file-with-content "" "data.json")))
- (rename-file txt-file (expand-file-name "readme.txt" test-dir))
- (rename-file mp3-file (expand-file-name "song.mp3" test-dir))
- (rename-file json-file (expand-file-name "data.json" test-dir))
-
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (null result)))))
- (test-music-config--get-m3u-files-teardown)))
-
-(ert-deftest test-music-config--get-m3u-files-boundary-m3u-with-spaces-included ()
- "M3U files with spaces in name are discovered."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "playlists"))
- (file1 (cj/create-temp-test-file-with-content "" "my-playlist.m3u")))
- (rename-file file1 (expand-file-name "My Favorite Songs.m3u" test-dir))
-
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (= (length result) 1))
- (should (equal (caar result) "My Favorite Songs.m3u")))))
- (test-music-config--get-m3u-files-teardown)))
-
-(ert-deftest test-music-config--get-m3u-files-boundary-mixed-m3u-and-other-files ()
- "Directory with both M3U and non-M3U files returns only M3U files."
- (test-music-config--get-m3u-files-setup)
- (unwind-protect
- (let* ((test-dir (cj/create-test-subdirectory "mixed"))
- (m3u-file (cj/create-temp-test-file-with-content "" "playlist.m3u"))
- (txt-file (cj/create-temp-test-file-with-content "" "readme.txt"))
- (mp3-file (cj/create-temp-test-file-with-content "" "song.mp3")))
- (rename-file m3u-file (expand-file-name "playlist.m3u" test-dir))
- (rename-file txt-file (expand-file-name "readme.txt" test-dir))
- (rename-file mp3-file (expand-file-name "song.mp3" test-dir))
-
- (let ((cj/music-m3u-root test-dir))
- (let ((result (cj/music--get-m3u-files)))
- (should (= (length result) 1))
- (should (equal (caar result) "playlist.m3u")))))
- (test-music-config--get-m3u-files-teardown)))
-
-;;; Error Cases
-
-(ert-deftest test-music-config--get-m3u-files-error-nonexistent-directory-signals-error ()
- "Nonexistent directory signals error."
- (let ((cj/music-m3u-root "/nonexistent/directory/path"))
- (should-error (cj/music--get-m3u-files)
- :type 'file-error)))
-
-(provide 'test-music-config--get-m3u-files)
-;;; test-music-config--get-m3u-files.el ends here