blob: f7c227d09dad6cb176cb66e78c680b894aa04def [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import tempfile
import textwrap
import unittest
from pathlib import Path
from plan import plan
def write_manifest(path: Path, content: str) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(textwrap.dedent(content).strip() + "\n", encoding="utf-8")
class ReleaseRustPlanTest(unittest.TestCase):
def test_fixture_plan_orders_path_dependencies(self):
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
write_manifest(
root / "core" / "core" / "Cargo.toml",
"""
[package]
name = "opendal-core"
version = "0.1.0"
""",
)
write_manifest(
root / "core" / "layers" / "retry" / "Cargo.toml",
"""
[package]
name = "opendal-layer-retry"
version = "0.1.0"
[dependencies]
opendal-core = { path = "../../core", version = "0.1.0" }
""",
)
write_manifest(
root / "core" / "services" / "fs" / "Cargo.toml",
"""
[package]
name = "opendal-service-fs"
version = "0.1.0"
[dependencies]
opendal-core = { path = "../../core", version = "0.1.0" }
""",
)
write_manifest(
root / "core" / "Cargo.toml",
"""
[package]
name = "opendal"
version = "0.1.0"
[dependencies]
opendal-core = { path = "core", version = "0.1.0" }
opendal-layer-retry = { path = "layers/retry", version = "0.1.0" }
[target.'cfg(unix)'.build-dependencies]
opendal-service-fs = { path = "services/fs", version = "0.1.0" }
""",
)
write_manifest(
root / "integrations" / "object_store" / "Cargo.toml",
"""
[package]
name = "object_store_opendal"
version = "0.1.0"
[dependencies]
opendal = { path = "../../core", version = "0.1.0" }
""",
)
write_manifest(
root / "core" / "services" / "private" / "Cargo.toml",
"""
[package]
name = "opendal-service-private"
version = "0.1.0"
publish = false
""",
)
result = plan(root)
self.assertEqual(
result,
[
"core/core",
"core/layers/retry",
"core/services/fs",
"core",
"integrations/object_store",
],
)
def test_repository_plan_excludes_non_release_paths(self):
result = plan()
self.assertIn("core/core", result)
self.assertIn("core", result)
self.assertIn("integrations/object_store", result)
self.assertNotIn("bindings/python", result)
self.assertNotIn("core/testkit", result)
self.assertNotIn("core/examples/basic", result)
def test_repository_plan_orders_core_before_root_and_integrations(self):
result = plan()
self.assertLess(result.index("core/core"), result.index("core"))
self.assertLess(result.index("core"), result.index("integrations/object_store"))
self.assertLess(result.index("core"), result.index("integrations/parquet"))
self.assertLess(result.index("core"), result.index("integrations/unftp-sbe"))
if __name__ == "__main__":
unittest.main()