diff --git a/dulwich/repo.py b/dulwich/repo.py index d87c93382..b564a0e4c 100644 --- a/dulwich/repo.py +++ b/dulwich/repo.py @@ -1191,7 +1191,7 @@ def __init__( raise UnsupportedVersion(format_version) for extension, _value in config.items((b"extensions",)): - if extension not in (b"worktreeconfig",): + if extension.lower() not in (b"worktreeconfig",): raise UnsupportedExtension(extension) if object_store is None: diff --git a/tests/test_repository.py b/tests/test_repository.py index a063c4576..1eeea3cc3 100644 --- a/tests/test_repository.py +++ b/tests/test_repository.py @@ -1142,6 +1142,22 @@ def test_worktreeconfig_extension(self): cs = r.get_config_stack() self.assertEqual(cs.get(("user",), "name"), b"Jelmer") + def test_worktreeconfig_extension_case(self): + """Test that worktree code does not error for alternate case format.""" + r = self._repo + c = r.get_config() + c.set(("core",), "repositoryformatversion", "1") + # Capitalize "Config" + c.set(("extensions",), "worktreeConfig", True) + c.write_to_path() + c = r.get_worktree_config() + c.set(("user",), "repositoryformatversion", "1") + c.set((b"user",), b"name", b"Jelmer") + c.write_to_path() + # The following line errored before + # https://github.com/jelmer/dulwich/issues/1285 was addressed + Repo(self._repo_dir) + def test_repositoryformatversion_1_extension(self): r = self._repo c = r.get_config()