Skip to content

Commit 4db87bb

Browse files
committed
Apply changes from commit f47955f
Original commit by Carol Jung: fix: CG-17050: skip codebase init if repo operator is none (codegen-sh#999) # Motivation <!-- Why is this change necessary? --> # Content <!-- Please include a summary of the change --> # Testing <!-- How was the change tested? --> # Please check the following before marking your PR as ready for review - [ ] I have added tests for my changes - [ ] I have updated the documentation or added new documentation as needed
1 parent 2626732 commit 4db87bb

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

src/codegen/sdk/core/codebase.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from codegen.configs.models.codebase import CodebaseConfig, PinkMode
2626
from codegen.configs.models.secrets import SecretsConfig
2727
from codegen.git.repo_operator.repo_operator import RepoOperator
28-
from codegen.git.schemas.enums import CheckoutResult, SetupOption
28+
from codegen.git.schemas.enums import CheckoutResult
2929
from codegen.git.schemas.repo_config import RepoConfig
3030
from codegen.git.utils.pr_review import CodegenPR
3131
from codegen.sdk._proxy import proxy_property
@@ -1337,7 +1337,6 @@ def from_repo(
13371337
language: Literal["python", "typescript"] | ProgrammingLanguage | None = None,
13381338
config: CodebaseConfig | None = None,
13391339
secrets: SecretsConfig | None = None,
1340-
setup_option: SetupOption | None = None,
13411340
full_history: bool = False,
13421341
) -> "Codebase":
13431342
"""Fetches a codebase from GitHub and returns a Codebase instance.
@@ -1382,6 +1381,11 @@ def from_repo(
13821381
else:
13831382
# Ensure the operator can handle remote operations
13841383
repo_operator = RepoOperator.create_from_commit(repo_path=repo_path, commit=commit, url=repo_url, full_name=repo_full_name, access_token=access_token)
1384+
1385+
if repo_operator is None:
1386+
logger.error("Failed to clone repository")
1387+
return None
1388+
13851389
logger.info("Clone completed successfully")
13861390

13871391
# Initialize and return codebase with proper context

tests/integration/codegen/git/codebase/conftest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
import pytest
44

5-
from codegen.git.schemas.enums import SetupOption
65
from codegen.sdk.core.codebase import Codebase
76

87

98
@pytest.fixture
109
def codebase(tmpdir):
1110
os.chdir(tmpdir)
12-
codebase = Codebase.from_repo(repo_full_name="codegen-sh/Kevin-s-Adventure-Game", tmp_dir=tmpdir, language="python", setup_option=SetupOption.PULL_OR_CLONE)
11+
codebase = Codebase.from_repo(repo_full_name="codegen-sh/Kevin-s-Adventure-Game", tmp_dir=tmpdir, language="python")
1312
yield codebase

tests/unit/codegen/sdk/core/test_codebase.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import pytest
44

5+
from codegen.configs.models.secrets import SecretsConfig
56
from codegen.sdk.codebase.codebase_context import CodebaseContext
67
from codegen.sdk.codebase.factory.get_session import get_codebase_session
8+
from codegen.sdk.core.codebase import Codebase
79

810

911
@pytest.fixture(autouse=True)
@@ -39,3 +41,9 @@ def test_codeowners_property(context_mock, codebase):
3941
assert len(codebase.codeowners) == 1
4042
assert callable(codebase.codeowners[0].files_source)
4143
assert codebase.codeowners[0].files_source() == codebase.files.return_value
44+
45+
46+
def test_from_codebase_non_existent_repo(context_mock, tmpdir):
47+
with get_codebase_session(tmpdir=tmpdir, files={"src/main.py": "print('Hello, world!')"}, verify_output=False) as codebase:
48+
codebase = Codebase.from_repo("some-org/non-existent-repo", tmp_dir=tmpdir, secrets=SecretsConfig(github_token="some-token"))
49+
assert codebase is None

0 commit comments

Comments
 (0)