1
0
Эх сурвалжийг харах

fix(lint+test): remove unused imports, fix bare except, update delete button tests

Ruff fixes:
- Remove unused imports: Response, atexit, Tuple, Dict, Any, Union (main.py)
- Remove unused Tuple import (png_cache_manager.py)
- Remove unused Signal import (pattern_model.py, playlist_model.py)
- Replace bare except with except Exception (dune-weaver-touch/main.py)

Test fixes:
- Update playlist delete button selectors to match Trash2 lucide icon
  (component switched from material-icons to lucide-react Trash2)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
tuanchris 5 өдөр өмнө
parent
commit
49ee730824

+ 1 - 1
dune-weaver-touch/main.py

@@ -93,7 +93,7 @@ def is_pi5():
         with open('/proc/device-tree/model', 'r') as f:
         with open('/proc/device-tree/model', 'r') as f:
             model = f.read()
             model = f.read()
             return 'Pi 5' in model
             return 'Pi 5' in model
-    except:
+    except Exception:
         return False
         return False
 
 
 def main():
 def main():

+ 1 - 1
dune-weaver-touch/models/pattern_model.py

@@ -1,4 +1,4 @@
-from PySide6.QtCore import QAbstractListModel, Qt, Slot, Signal
+from PySide6.QtCore import QAbstractListModel, Qt, Slot
 from PySide6.QtQml import QmlElement
 from PySide6.QtQml import QmlElement
 from pathlib import Path
 from pathlib import Path
 
 

+ 1 - 1
dune-weaver-touch/models/playlist_model.py

@@ -1,4 +1,4 @@
-from PySide6.QtCore import QAbstractListModel, Qt, Slot, Signal
+from PySide6.QtCore import QAbstractListModel, Qt, Slot
 from PySide6.QtQml import QmlElement
 from PySide6.QtQml import QmlElement
 from pathlib import Path
 from pathlib import Path
 import json
 import json

+ 1 - 1
dune-weaver-touch/png_cache_manager.py

@@ -7,7 +7,7 @@ import asyncio
 import os
 import os
 import logging
 import logging
 from pathlib import Path
 from pathlib import Path
-from typing import List, Tuple
+from typing import List
 try:
 try:
     from PIL import Image
     from PIL import Image
 except ImportError:
 except ImportError:

+ 2 - 2
frontend/src/__tests__/integration/playlistFlow.test.tsx

@@ -192,10 +192,10 @@ describe('Playlist Flow Integration', () => {
       const parentDiv = playlistItem.closest('[class*="group"]')
       const parentDiv = playlistItem.closest('[class*="group"]')
       expect(parentDiv).toBeTruthy()
       expect(parentDiv).toBeTruthy()
 
 
-      // Find delete button within the same row
+      // Find delete button within the same row (uses Trash2 lucide icon with text-destructive class)
       const deleteButtons = parentDiv!.querySelectorAll('button')
       const deleteButtons = parentDiv!.querySelectorAll('button')
       const deleteButton = Array.from(deleteButtons).find(btn =>
       const deleteButton = Array.from(deleteButtons).find(btn =>
-        btn.querySelector('.material-icons-outlined')?.textContent === 'delete'
+        btn.classList.contains('text-destructive') || btn.className.includes('text-destructive')
       )
       )
 
 
       expect(deleteButton).toBeTruthy()
       expect(deleteButton).toBeTruthy()

+ 2 - 2
frontend/src/__tests__/pages/PlaylistsPage.test.tsx

@@ -172,9 +172,9 @@ describe('PlaylistsPage', () => {
         expect(screen.getByText('geometric')).toBeInTheDocument()
         expect(screen.getByText('geometric')).toBeInTheDocument()
       })
       })
 
 
-      // Find delete buttons (trash icons) - each playlist item should have one
+      // Find delete buttons (Trash2 icon) - each playlist item should have one
       const deleteButtons = screen.getAllByRole('button').filter(btn =>
       const deleteButtons = screen.getAllByRole('button').filter(btn =>
-        btn.querySelector('.material-icons-outlined')?.textContent?.includes('delete')
+        btn.classList.contains('text-destructive') || btn.className.includes('text-destructive')
       )
       )
 
 
       // Should have at least one delete button (for each playlist)
       // Should have at least one delete button (for each playlist)

+ 2 - 3
main.py

@@ -1,11 +1,10 @@
 from fastapi import FastAPI, UploadFile, File, HTTPException, BackgroundTasks, WebSocket, WebSocketDisconnect, Request
 from fastapi import FastAPI, UploadFile, File, HTTPException, BackgroundTasks, WebSocket, WebSocketDisconnect, Request
-from fastapi.responses import JSONResponse, FileResponse, Response
+from fastapi.responses import JSONResponse, FileResponse
 from fastapi.staticfiles import StaticFiles
 from fastapi.staticfiles import StaticFiles
 from fastapi.middleware.cors import CORSMiddleware
 from fastapi.middleware.cors import CORSMiddleware
 from fastapi.templating import Jinja2Templates
 from fastapi.templating import Jinja2Templates
 from pydantic import BaseModel
 from pydantic import BaseModel
-from typing import List, Optional, Tuple, Dict, Any, Union
-import atexit
+from typing import List, Optional
 import os
 import os
 import logging
 import logging
 from datetime import datetime, time
 from datetime import datetime, time