blob: 5d7d8cae2b2092d7956daf50d53af294b9a53fb6 [file] [log] [blame] [edit]
# Copyright 2022 The ChromiumOS Authors.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for generate_cs_path.py."""
import pytest
from chromite.contrib import generate_cs_path
DATA = [
# public path and public CS - external link to source.chromium.org
(
['--show', '--public', '../src/platform2/shill/shill_main.cc'],
{},
'src/platform2',
'shill/shill_main.cc',
('https://source.chromium.org/chromiumos/chromiumos/codesearch/+'
'/HEAD:src/platform2/shill/shill_main.cc')
),
# public path and corp CS - link to cs/chromeos_public
(
['--show', '--internal', '../src/platform2/shill/shill_main.cc'],
{},
'src/platform2',
'shill/shill_main.cc',
'http://cs/chromeos_public/src/platform2/shill/shill_main.cc'
),
# public path and Gitiles - external link to chromium.googlesource.com
(
['--show', '--gitiles', '../src/platform2/shill/shill_main.cc'],
{
'push_url': ('https://chromium.googlesource.com/chromiumos'
'/platform2'),
'sha' : '560999fd91b1508d4844e5f3e449f3399f543c68'
},
'src/platform2',
'shill/shill_main.cc',
('https://chromium.googlesource.com/chromiumos/platform2/+'
'/560999fd91b1508d4844e5f3e449f3399f543c68'
'/shill/shill_main.cc')
),
# private path and public CS - link to cs/chromeos_internal
# (public CS is not available)
(
['--show', '--public', '../src/project/module/hello_world.f'],
{
'remote_alias': 'cros-internal'
},
'src/project',
'module/hello_world.f',
'http://cs/chromeos_internal/src/project/module/hello_world.f'
),
# private path and corp CS - link to cs/chromeos_internal
(
['--show', '--internal', '../src/project/module/hello_world.f'],
{
'remote_alias': 'cros-internal'
},
'src/project',
'module/hello_world.f',
'http://cs/chromeos_internal/src/project/module/hello_world.f'
),
# private path and Gitiles - link to chrome-internal.googlesource.com
(
['--show', '--gitiles', '../src/project/module/hello_world.f'],
{
'push_url': 'https://chrome-internal.googlesource.com/src/project',
'sha': '123456'
},
'src/project',
'module/hello_world.f',
('https://chrome-internal.googlesource.com/src/project/+/123456'
'/module/hello_world.f')
),
]
@pytest.mark.parametrize(
'argv,attrs,checkout_path,relative_path,expected_link',
DATA
)
def testGenerateLink(argv, attrs, checkout_path, relative_path, expected_link):
"""Test generating CS links links"""
opts = generate_cs_path.ParseArguments(argv)
link = generate_cs_path.GenerateLink(attrs,
opts,
checkout_path,
relative_path)
assert link == expected_link