#!/usr/bin/python3 -OO # Copyright 2007-2020 The SABnzbd-Team # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. """ tests.test_misc - Testing functions in filesystem.py """ import sabnzbd.filesystem as filesystem from tests.testhelper import * class TestFileFolderNameSanitizer: def test_empty(self): assert filesystem.sanitize_filename(None) is None assert filesystem.sanitize_foldername(None) is None @set_platform("win32") def test_colon_handling_windows(self): assert filesystem.sanitize_filename("test:aftertest") == "test-aftertest" # They should act the same assert filesystem.sanitize_filename("test:aftertest") == filesystem.sanitize_foldername("test:aftertest") # TODO: Add a lot more tests here! @set_platform("darwin") def test_colon_handling_darwin(self): assert filesystem.sanitize_filename("test:aftertest") == "aftertest" @set_platform("linux") def test_colon_handling_other(self): assert filesystem.sanitize_filename("test:aftertest") == "test:aftertest" @set_platform("win32") def test_win_devices_on_win(self): assert filesystem.sanitize_filename(None) is None assert filesystem.sanitize_filename("aux.txt") == "_aux.txt" assert filesystem.sanitize_filename("txt.aux") == "txt.aux" assert filesystem.sanitize_filename("$mft") == "Smft" assert filesystem.sanitize_filename("a$mft") == "a$mft" @set_platform("linux") def test_win_devices_not_win(self): # Linux and Darwin are the same for this assert filesystem.sanitize_filename(None) is None assert filesystem.sanitize_filename("aux.txt") == "aux.txt" assert filesystem.sanitize_filename("txt.aux") == "txt.aux" assert filesystem.sanitize_filename("$mft") == "$mft" assert filesystem.sanitize_filename("a$mft") == "a$mft" class TestSameFile: def test_nothing_in_common(self): assert 0 == filesystem.same_file("C:\\", "D:\\") assert 0 == filesystem.same_file("C:\\", "/home/test") assert 0 == filesystem.same_file("/home/", "/data/test") assert 0 == filesystem.same_file("/test/home/test", "/home/") def test_same(self): assert 1 == filesystem.same_file("/home/123", "/home/123") assert 1 == filesystem.same_file("D:\\", "D:\\") def test_subfolder(self): assert 2 == filesystem.same_file("\\\\?\\C:\\", "\\\\?\\C:\\Users\\") assert 2 == filesystem.same_file("/home/test123", "/home/test123/sub") @set_platform("win32") def test_capitalization(self): # Only matters on Windows/macOS assert 1 == filesystem.same_file("/HOME/123", "/home/123") assert 1 == filesystem.same_file("D:\\", "d:\\") assert 2 == filesystem.same_file("\\\\?\\c:\\", "\\\\?\\C:\\Users\\") assert 2 == filesystem.same_file("/HOME/test123", "/home/test123/sub")