• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2024 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from __future__ import annotations
6
7import abc
8import pathlib
9
10from crossbench.browsers.firefox.downloader import (FirefoxDownloader,
11                                                    FirefoxDownloaderLinux,
12                                                    FirefoxDownloaderMacOS,
13                                                    FirefoxDownloaderWin)
14from tests import test_helper
15from tests.crossbench.browsers.downloader_helper import \
16    AbstractDownloaderTestCase
17
18
19class AbstractFirefoxDownloaderTestCase(
20    AbstractDownloaderTestCase, metaclass=abc.ABCMeta):
21  __test__ = False
22
23  def test_wrong_versions(self) -> None:
24    with self.assertRaises(ValueError):
25      FirefoxDownloader.load("", self.platform)
26    with self.assertRaises(ValueError):
27      FirefoxDownloader.load("ff", self.platform)
28    with self.assertRaises(ValueError):
29      FirefoxDownloader.load("firefox", self.platform)
30    with self.assertRaises(ValueError):
31      FirefoxDownloader.load("124-0.2", self.platform)
32    with self.assertRaises(ValueError):
33      FirefoxDownloader.load("124-0.2", self.platform)
34    with self.assertRaises(ValueError):
35      FirefoxDownloader.load("124.0ab2", self.platform)
36    with self.assertRaises(ValueError):
37      FirefoxDownloader.load("124.0.2.3.5", self.platform)
38
39  def test_valid_versions_stable(self):
40    self.assertFalse(FirefoxDownloader.is_valid("124.0.2", self.platform))
41    self.assertTrue(FirefoxDownloader.is_valid("ff-124.0.2", self.platform))
42    self.assertTrue(
43        FirefoxDownloader.is_valid("firefox-124.0.2", self.platform))
44
45  def test_valid_versions_beta(self):
46    self.assertTrue(FirefoxDownloader.is_valid("104.0b9", self.platform))
47    self.assertTrue(FirefoxDownloader.is_valid("ff-104.0b9", self.platform))
48    self.assertTrue(
49        FirefoxDownloader.is_valid("firefox-104.0b9", self.platform))
50
51    self.assertFalse(FirefoxDownloader.is_valid("104.0ab9", self.platform))
52    self.assertFalse(FirefoxDownloader.is_valid("ff-104.0ab9", self.platform))
53    self.assertFalse(
54        FirefoxDownloader.is_valid("firefox-104.0ab9", self.platform))
55
56  def test_valid_versions_esr(self):
57    self.assertTrue(FirefoxDownloader.is_valid("115.0.3esr", self.platform))
58    self.assertTrue(FirefoxDownloader.is_valid("ff-115.0.3esr", self.platform))
59    self.assertTrue(
60        FirefoxDownloader.is_valid("firefox-115.0.3esr", self.platform))
61
62    self.assertFalse(FirefoxDownloader.is_valid("115.0a3esr", self.platform))
63    self.assertFalse(FirefoxDownloader.is_valid("ff-115.0a3esr", self.platform))
64    self.assertFalse(
65        FirefoxDownloader.is_valid("firefox-115.0a3esr", self.platform))
66
67  def test_empty_path(self) -> None:
68    with self.assertRaises(ValueError):
69      FirefoxDownloader.load(pathlib.Path("custom"), self.platform)
70
71
72class BasicFirefoxDownloaderLinuxTestCase(AbstractFirefoxDownloaderTestCase):
73  __test__ = True
74
75  def setUp(self) -> None:
76    super().setUp()
77    self.platform.is_linux = True
78
79  def test_is_valid_archive(self) -> None:
80    path = pathlib.Path("download/archive.tar.bz2")
81    self.fs.create_file(path)
82    self.assertTrue(FirefoxDownloader.is_valid(path, self.platform))
83    self.assertTrue(FirefoxDownloaderLinux.is_valid(path, self.platform))
84    self.assertFalse(FirefoxDownloaderMacOS.is_valid(path, self.platform))
85    self.assertFalse(FirefoxDownloaderWin.is_valid(path, self.platform))
86
87
88class BasicFirefoxDownloaderMacOSTestCase(AbstractFirefoxDownloaderTestCase):
89  __test__ = True
90
91  def setUp(self) -> None:
92    super().setUp()
93    self.platform.is_macos = True
94
95  def test_is_valid_archive(self) -> None:
96    path = pathlib.Path("download/archive.dmg")
97    self.fs.create_file(path)
98    self.assertTrue(FirefoxDownloader.is_valid(path, self.platform))
99    self.assertFalse(FirefoxDownloaderLinux.is_valid(path, self.platform))
100    self.assertTrue(FirefoxDownloaderMacOS.is_valid(path, self.platform))
101    self.assertFalse(FirefoxDownloaderWin.is_valid(path, self.platform))
102
103
104if __name__ == "__main__":
105  test_helper.run_pytest(__file__)
106