diff options
| author | Craig Jennings <c@cjennings.net> | 2025-11-14 02:31:16 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-11-14 02:31:16 -0600 |
| commit | 9d55ed149e100b4fb3ef6f5a79d263dcb26ce835 (patch) | |
| tree | b02a77b84849f15b4302fda8f3f8e3942cb253ac /tests/test-music-config--append-track-to-m3u-file.el | |
| parent | 7b982b1984dd37af42a2dfc9f4c3e52b27102860 (diff) | |
checking in modified/removed tests and other misc changes
Diffstat (limited to 'tests/test-music-config--append-track-to-m3u-file.el')
| -rw-r--r-- | tests/test-music-config--append-track-to-m3u-file.el | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/tests/test-music-config--append-track-to-m3u-file.el b/tests/test-music-config--append-track-to-m3u-file.el deleted file mode 100644 index 2bf3e87d..00000000 --- a/tests/test-music-config--append-track-to-m3u-file.el +++ /dev/null @@ -1,187 +0,0 @@ -;;; test-music-config--append-track-to-m3u-file.el --- Tests for appending tracks to M3U files -*- coding: utf-8; lexical-binding: t; -*- -;; -;; Author: Craig Jennings <c@cjennings.net> -;; -;;; Commentary: -;; Unit tests for cj/music--append-track-to-m3u-file function. -;; Tests the pure, deterministic helper that appends track paths to M3U files. -;; -;; Test organization: -;; - Normal Cases: Standard append operations -;; - Boundary Cases: Edge conditions (unicode, long paths, special chars) -;; - Error Cases: File errors (missing, read-only, directory instead of file) -;; -;;; 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--append-track-to-m3u-file-setup () - "Setup test environment." - (cj/create-test-base-dir)) - -(defun test-music-config--append-track-to-m3u-file-teardown () - "Clean up test environment." - (cj/delete-test-base-dir)) - -;;; Normal Cases - -(ert-deftest test-music-config--append-track-to-m3u-file-normal-empty-file-appends-track () - "Append to brand new empty M3U file." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - (track-path "/home/user/music/artist/song.mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) (concat track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-normal-existing-with-newline-appends-track () - "Append to file with existing content ending with newline." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((existing-content "/home/user/music/first.mp3\n") - (m3u-file (cj/create-temp-test-file-with-content existing-content "test-playlist-")) - (track-path "/home/user/music/second.mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) - (concat existing-content track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-normal-existing-without-newline-appends-track () - "Append to file without trailing newline adds leading newline." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((existing-content "/home/user/music/first.mp3") - (m3u-file (cj/create-temp-test-file-with-content existing-content "test-playlist-")) - (track-path "/home/user/music/second.mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) - (concat existing-content "\n" track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-normal-multiple-appends-all-succeed () - "Multiple appends to same file all succeed (allows duplicates)." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - (track1 "/home/user/music/track1.mp3") - (track2 "/home/user/music/track2.mp3") - (track1-duplicate "/home/user/music/track1.mp3")) - (cj/music--append-track-to-m3u-file track1 m3u-file) - (cj/music--append-track-to-m3u-file track2 m3u-file) - (cj/music--append-track-to-m3u-file track1-duplicate m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (let ((content (buffer-string))) - (should (string= content - (concat track1 "\n" track2 "\n" track1-duplicate "\n")))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -;;; Boundary Cases - -(ert-deftest test-music-config--append-track-to-m3u-file-boundary-very-long-path-appends-successfully () - "Append very long track path without truncation." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - ;; Create a path that's ~500 chars long - (track-path (concat "/home/user/music/" - (make-string 450 ?a) - "/song.mp3"))) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) (concat track-path "\n"))) - (should (= (length (buffer-string)) (1+ (length track-path)))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-boundary-path-with-unicode-appends-successfully () - "Append path with unicode characters preserves UTF-8 encoding." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - (track-path "/home/user/music/中文/artist-名前/song🎵.mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) (concat track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-boundary-path-with-spaces-appends-successfully () - "Append path with spaces and special characters." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - (track-path "/home/user/music/Artist Name/Album (2024)/01 - Song's Title [Remix].mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) (concat track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-boundary-m3u-with-comments-appends-after () - "Append to M3U file containing comments and metadata." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((existing-content "#EXTM3U\n#EXTINF:-1,Radio Station\nhttp://stream.url/radio\n") - (m3u-file (cj/create-temp-test-file-with-content existing-content "test-playlist-")) - (track-path "/home/user/music/local-track.mp3")) - (cj/music--append-track-to-m3u-file track-path m3u-file) - (with-temp-buffer - (insert-file-contents m3u-file) - (should (string= (buffer-string) - (concat existing-content track-path "\n"))))) - (test-music-config--append-track-to-m3u-file-teardown))) - -;;; Error Cases - -(ert-deftest test-music-config--append-track-to-m3u-file-error-nonexistent-file-signals-error () - "Signal error when M3U file doesn't exist." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file "/nonexistent/path/to/playlist.m3u") - (track-path "/home/user/music/song.mp3")) - (should-error (cj/music--append-track-to-m3u-file track-path m3u-file) - :type 'error)) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-error-readonly-file-signals-error () - "Signal error when M3U file is read-only." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-file (cj/create-temp-test-file "test-playlist-")) - (track-path "/home/user/music/song.mp3")) - ;; Make file read-only - (set-file-modes m3u-file #o444) - (should-error (cj/music--append-track-to-m3u-file track-path m3u-file) - :type 'error)) - (test-music-config--append-track-to-m3u-file-teardown))) - -(ert-deftest test-music-config--append-track-to-m3u-file-error-directory-not-file-signals-error () - "Signal error when path points to directory instead of file." - (test-music-config--append-track-to-m3u-file-setup) - (unwind-protect - (let* ((m3u-dir (cj/create-test-subdirectory "test-playlist-dir")) - (track-path "/home/user/music/song.mp3")) - (should-error (cj/music--append-track-to-m3u-file track-path m3u-dir) - :type 'error)) - (test-music-config--append-track-to-m3u-file-teardown))) - -(provide 'test-music-config--append-track-to-m3u-file) -;;; test-music-config--append-track-to-m3u-file.el ends here |
