# python3 # Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import os import unittest from lib import common class TestCommon(unittest.TestCase): def test_crate_name_normalized(self): r = common.crate_name_normalized("foo") self.assertEqual(r, "foo") r = common.crate_name_normalized("foo-bar") self.assertEqual(r, "foo_bar") r = common.crate_name_normalized("foo-bar-baz") self.assertEqual(r, "foo_bar_baz") r = common.crate_name_normalized("foo.bar-baz.blep") self.assertEqual(r, "foo_bar_baz_blep") r = common.crate_name_normalized("foo_bar") self.assertEqual(r, "foo_bar") def test_version_epoch_dots(self): r = common.version_epoch_dots("1.2.3") self.assertEqual(r, "1") r = common.version_epoch_dots("1.2") self.assertEqual(r, "1") r = common.version_epoch_dots("1") self.assertEqual(r, "1") r = common.version_epoch_dots("0.1") self.assertEqual(r, "0.1") r = common.version_epoch_dots("0.0.1") self.assertEqual(r, "0.0.1") def test_version_epoch_normalized(self): r = common.version_epoch_normalized("1.2.3") self.assertEqual(r, "1") r = common.version_epoch_normalized("1.2") self.assertEqual(r, "1") r = common.version_epoch_normalized("1") self.assertEqual(r, "1") r = common.version_epoch_normalized("0.1") self.assertEqual(r, "0_1") r = common.version_epoch_normalized("0.0.1") self.assertEqual(r, "0_0_1") def test_find_chromium_root(self): cwd = os.getcwd() # If run from elsewhere then the test will fail. If the code is broken # then it would fail too =) from_root = common._find_chromium_root(cwd) self.assertEqual(["tools", "crates"], from_root, msg="Run tests from the '//tools/crates/' directory.") root = os.path.split(os.path.split(cwd)[0])[0] from_root = common._find_chromium_root(root) self.assertEqual([], from_root) subdir = os.path.join(root, "foo", "bar", "baz") from_root = common._find_chromium_root(subdir) self.assertEqual(["foo", "bar", "baz"], from_root) def test_gn_third_party_path(self): self.assertEqual(["tools", "crates"], common._PATH_FROM_CHROMIUM_ROOT, msg="Run tests from the '//tools/crates/' directory.") for i in range(2): if i == 0: root = "//tools/crates/third_party/rust" else: # Pretend we're running the tool from the root of src.git. old = common._PATH_FROM_CHROMIUM_ROOT common._PATH_FROM_CHROMIUM_ROOT = [] root = "//third_party/rust" r = common.gn_third_party_path() self.assertEqual(r, root, msg="i == {}".format(i)) # Test relpath. r = common.gn_third_party_path(rel_path=["a", "b"]) self.assertEqual(r, root + "/a/b", msg="i == {}".format(i)) if i != 0: common._PATH_FROM_CHROMIUM_ROOT = old def test_gn_crate_path(self): self.assertEqual(["tools", "crates"], common._PATH_FROM_CHROMIUM_ROOT, msg="Run tests from the '//tools/crates/' directory.") root = "//tools/crates/third_party/rust" # Test crate normalization. r = common.gn_crate_path("foo-bar", "1.2.3") self.assertEqual(r, root + "/foo_bar/v1") # Test partial version. r = common.gn_crate_path("foo-bar", "2.3") self.assertEqual(r, root + "/foo_bar/v2") # Test 0.x version. r = common.gn_crate_path("foo-bar", "0.3") self.assertEqual(r, root + "/foo_bar/v0_3") # Test 0.0.x version. r = common.gn_crate_path("foo-bar", "0.0.4") self.assertEqual(r, root + "/foo_bar/v0_0_4") # Test relpath. r = common.gn_crate_path("foo-bar", "5", rel_path=["a", "b"]) self.assertEqual(r, root + "/foo_bar/v5/a/b") def test_os_crate_name_dir(self): # Test normalization of crate names. r = common.os_crate_name_dir("foo-bar") self.assertEqual(r, os.path.join("third_party", "rust", "foo_bar")) # Test rel_path. r = common.os_crate_name_dir("foo-bar", rel_path=["a", "b"]) self.assertEqual( r, os.path.join("third_party", "rust", "foo_bar", "a", "b")) def test_os_crate_version_dir(self): # Test partial version. r = common.os_crate_version_dir("foo", "2") self.assertEqual(r, os.path.join("third_party", "rust", "foo", "v2")) # Test 0.x version. r = common.os_crate_version_dir("foo", "0.3.1") self.assertEqual(r, os.path.join("third_party", "rust", "foo", "v0_3")) # Test 0.0.x version. r = common.os_crate_version_dir("foo", "0.0.4") self.assertEqual(r, os.path.join("third_party", "rust", "foo", "v0_0_4")) # Test full version. r = common.os_crate_version_dir("foo", "5.3.1") self.assertEqual(r, os.path.join("third_party", "rust", "foo", "v5")) # Test rel_path. r = common.os_crate_version_dir("foo", "6", rel_path=["c.d", "e.f"]) self.assertEqual( r, os.path.join("third_party", "rust", "foo", "v6", "c.d", "e.f")) def test_os_crate_cargo_dir(self): # Test the inner dir is there. r = common.os_crate_cargo_dir("foo-bar", "1.2.3") self.assertEqual( r, os.path.join("third_party", "rust", "foo_bar", "v1", "crate")) # Test rel_path. r = common.os_crate_cargo_dir("foo-bar", "1.2.3", rel_path=["g", "h"]) self.assertEqual( r, os.path.join("third_party", "rust", "foo_bar", "v1", "crate", "g", "h")) def test_crate_download_url(self): r = common.crate_download_url("foo", "1.2.3") self.assertEqual(r, "https://static.crates.io/crates/foo/foo-1.2.3.crate") def test_crate_view_url(self): r = common.crate_view_url("foo") self.assertEqual(r, "https://crates.io/crates/foo")