# Copyright 2024 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from __future__ import annotations import abc import pathlib from crossbench.browsers.firefox.downloader import (FirefoxDownloader, FirefoxDownloaderLinux, FirefoxDownloaderMacOS, FirefoxDownloaderWin) from tests import test_helper from tests.crossbench.browsers.downloader_helper import \ AbstractDownloaderTestCase class AbstractFirefoxDownloaderTestCase( AbstractDownloaderTestCase, metaclass=abc.ABCMeta): __test__ = False def test_wrong_versions(self) -> None: with self.assertRaises(ValueError): FirefoxDownloader.load("", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("ff", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("firefox", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("124-0.2", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("124-0.2", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("124.0ab2", self.platform) with self.assertRaises(ValueError): FirefoxDownloader.load("124.0.2.3.5", self.platform) def test_valid_versions_stable(self): self.assertFalse(FirefoxDownloader.is_valid("124.0.2", self.platform)) self.assertTrue(FirefoxDownloader.is_valid("ff-124.0.2", self.platform)) self.assertTrue( FirefoxDownloader.is_valid("firefox-124.0.2", self.platform)) def test_valid_versions_beta(self): self.assertTrue(FirefoxDownloader.is_valid("104.0b9", self.platform)) self.assertTrue(FirefoxDownloader.is_valid("ff-104.0b9", self.platform)) self.assertTrue( FirefoxDownloader.is_valid("firefox-104.0b9", self.platform)) self.assertFalse(FirefoxDownloader.is_valid("104.0ab9", self.platform)) self.assertFalse(FirefoxDownloader.is_valid("ff-104.0ab9", self.platform)) self.assertFalse( FirefoxDownloader.is_valid("firefox-104.0ab9", self.platform)) def test_valid_versions_esr(self): self.assertTrue(FirefoxDownloader.is_valid("115.0.3esr", self.platform)) self.assertTrue(FirefoxDownloader.is_valid("ff-115.0.3esr", self.platform)) self.assertTrue( FirefoxDownloader.is_valid("firefox-115.0.3esr", self.platform)) self.assertFalse(FirefoxDownloader.is_valid("115.0a3esr", self.platform)) self.assertFalse(FirefoxDownloader.is_valid("ff-115.0a3esr", self.platform)) self.assertFalse( FirefoxDownloader.is_valid("firefox-115.0a3esr", self.platform)) def test_empty_path(self) -> None: with self.assertRaises(ValueError): FirefoxDownloader.load(pathlib.Path("custom"), self.platform) class BasicFirefoxDownloaderLinuxTestCase(AbstractFirefoxDownloaderTestCase): __test__ = True def setUp(self) -> None: super().setUp() self.platform.is_linux = True def test_is_valid_archive(self) -> None: path = pathlib.Path("download/archive.tar.bz2") self.fs.create_file(path) self.assertTrue(FirefoxDownloader.is_valid(path, self.platform)) self.assertTrue(FirefoxDownloaderLinux.is_valid(path, self.platform)) self.assertFalse(FirefoxDownloaderMacOS.is_valid(path, self.platform)) self.assertFalse(FirefoxDownloaderWin.is_valid(path, self.platform)) class BasicFirefoxDownloaderMacOSTestCase(AbstractFirefoxDownloaderTestCase): __test__ = True def setUp(self) -> None: super().setUp() self.platform.is_macos = True def test_is_valid_archive(self) -> None: path = pathlib.Path("download/archive.dmg") self.fs.create_file(path) self.assertTrue(FirefoxDownloader.is_valid(path, self.platform)) self.assertFalse(FirefoxDownloaderLinux.is_valid(path, self.platform)) self.assertTrue(FirefoxDownloaderMacOS.is_valid(path, self.platform)) self.assertFalse(FirefoxDownloaderWin.is_valid(path, self.platform)) if __name__ == "__main__": test_helper.run_pytest(__file__)