#!/usr/bin/env python3 # # Copyright 2013 The Flutter Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Usage: python3 create_updated_flutter_deps_tests.py # # Unit tests for create_updated_flutter_deps.py script. import unittest from create_updated_flutter_deps import ( DART_SDK_ROOT, ComputeDartDeps, PrettifySourcePathForDEPS, ) class TestPrettifySourcePathForDEPS(unittest.TestCase): def test_PrettifySourcePathForDEPS_unversioned(self): with self.assertRaises(ValueError): PrettifySourcePathForDEPS(flutter_vars={}, dep_path="a", source="b") def test_PrettifySourcePathForDEPS_all_cases(self): a_git = "https://a.googlesource.com" b_git = "https://b.googlesource.com" flutter_vars = { "a_git": a_git, "dart_dep2_tag": "xyz", "dart_dep3_rev": "def", } deps = { "/no_repo_var/dep1": f"{b_git}/repos/dep1@whatever", "/no_repo_var/dep2": f"{b_git}/repos/dep2@whatever", "/no_repo_var/dep2/src": f"{b_git}/repos/dep2@whatever", "/no_repo_var/dep3": f"{b_git}/repos/dep3@whatever", "/no_repo_var/dep3/src": f"{b_git}/repos/dep3@whatever", "/a_git_repo/dep1": f"{a_git}/repos/dep1@whatever", "/a_git_repo/dep2": f"{a_git}/repos/dep2@whatever", "/a_git_repo/dep2/src": f"{a_git}/repos/dep2@whatever", "/a_git_repo/dep3": f"{a_git}/repos/dep3@whatever", "/a_git_repo/dep3/src": f"{a_git}/repos/dep3@whatever", } expected = { "/no_repo_var/dep1": f"'{b_git}/repos/dep1@whatever'", "/no_repo_var/dep2": f"'{b_git}/repos/dep2' + '@' + Var('dart_dep2_tag')", "/no_repo_var/dep2/src": f"'{b_git}/repos/dep2' + '@' + Var('dart_dep2_tag')", "/no_repo_var/dep3": f"'{b_git}/repos/dep3' + '@' + Var('dart_dep3_rev')", "/no_repo_var/dep3/src": f"'{b_git}/repos/dep3' + '@' + Var('dart_dep3_rev')", "/a_git_repo/dep1": "Var('a_git') + '/repos/dep1@whatever'", "/a_git_repo/dep2": "Var('a_git') + '/repos/dep2' + '@' + Var('dart_dep2_tag')", "/a_git_repo/dep2/src": "Var('a_git') + '/repos/dep2' + '@' + Var('dart_dep2_tag')", "/a_git_repo/dep3": "Var('a_git') + '/repos/dep3' + '@' + Var('dart_dep3_rev')", "/a_git_repo/dep3/src": "Var('a_git') + '/repos/dep3' + '@' + Var('dart_dep3_rev')", } for dep_path, source_path in deps.items(): self.assertEqual( PrettifySourcePathForDEPS(flutter_vars, dep_path, source_path), expected[dep_path], ) class TestComputeDartDeps(unittest.TestCase): def test_ComputeDartDeps_nothing_to_do(self): # Note: DART_SDK_ROOT dependency itself should be simply ignored. self.assertEqual( ComputeDartDeps( flutter_vars={}, flutter_deps={ DART_SDK_ROOT: "whatever", }, dart_deps={ "sdk": "xyz", }, ), {}, ) def test_ComputeDartDeps_unused_dep(self): a_git = "https://a.googlesource.com" self.assertEqual( ComputeDartDeps( flutter_vars={ "a_git": a_git, }, flutter_deps={ f"{DART_SDK_ROOT}/third_party/dep": f"{a_git}/repos/dep@version", }, dart_deps={}, ), {}, ) def test_ComputeDartDeps_used_dep(self): a_git = "https://a.googlesource.com" self.assertEqual( ComputeDartDeps( flutter_vars={ "a_git": a_git, }, flutter_deps={ f"{DART_SDK_ROOT}/third_party/dep": "whatever", }, dart_deps={"sdk/third_party/dep": f"{a_git}/repos/dep@version"}, ), { f"{DART_SDK_ROOT}/third_party/dep": "Var('a_git') + '/repos/dep@version'", }, ) if __name__ == "__main__": unittest.main()