Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions GEMINI.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,13 @@ This document outlines foundational mandates, architectural patterns, and projec

### 6. Project Dependencies
- **Common Module:** When using `Clock` or other core utilities in a new or separate module (like `load-testing`), ensure `implementation project(':common')` is added to the module's `build.gradle`.
- **Updating Dependencies:** When updating third-party dependencies, you must follow this exact sequence:
- **Updating Dependencies:** When updating third-party dependencies, you MUST follow this exact, non-negotiable sequence. NEVER run the update script without first verifying the lockfiles locally.
1. Modify `dependencies.gradle`.
2. Run `./gradlew dependencies --write-locks` to regenerate the Gradle lockfiles locally. This is much faster than running the full update script blindly.
3. Verify the build succeeds (e.g., `./gradlew :core:build -x test` or `./gradlew build`) to ensure there are no resolution or compilation errors.
4. ONLY after the lockfiles are generated and the build is verified, execute the internal script `/google/src/head/depot/google3/domain/registry/tools/update_dependency.sh` to push the new dependencies to the private Maven repository.
2. Run `./gradlew dependencies --write-locks --update-locks '*:*'` to regenerate all Gradle lockfiles locally to resolve new versions.
3. Run `./gradlew clean build` to exhaustively compile and run all tests against the new transitive dependency tree. If there are compilation or test errors due to breaking API changes or output formatting changes in the new dependency version, your primary goal is to **fix our codebase** to be compliant with the new dependency version. Only revert the dependency bump or cap the version if the required code changes are prohibitively complex or outside the scope of the current task.
4. Only once the build passes and `git status` shows modified lockfiles, commit the `dependencies.gradle` and lockfile changes.
5. ONLY after the local changes are committed and verified, execute the internal script `/google/src/head/depot/google3/domain/registry/tools/update_dependency.sh`. This ensures you don't corrupt the upstream remote artifact cache with broken or missing lockfiles.
6. **Crucial Final Verification:** The `update_dependency.sh` script runs its own internal Blaze resolution and often modifies or drops additional `buildscript-gradle.lockfile` files. After the script finishes successfully, run `git status`. If there are any untracked or modified `*.lockfile` files, stage them and run `git commit --amend --no-edit` to ensure your commit perfectly reflects the final state deployed to the SSO repository.

### 7. Search and Discovery
- **No CodeSearch:** This project is hosted on GitHub, not Google3. Do NOT use `mcp_Coding_search_for_files_codesearch` or other internal Google3 search tools.
Expand Down
12 changes: 6 additions & 6 deletions common/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ org.jacoco:org.jacoco.core:0.8.14=jacocoAnt
org.jacoco:org.jacoco.report:0.8.14=jacocoAnt
org.javassist:javassist:3.28.0-GA=checkstyle
org.jspecify:jspecify:1.0.0=annotationProcessor,checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath
org.junit.jupiter:junit-jupiter-api:5.14.4=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:5.14.4=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.14.4=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-engine:1.14.4=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.14.4=testCompileClasspath,testRuntimeClasspath
org.junit:junit-bom:5.14.4=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:6.1.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:6.1.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:6.1.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-engine:6.1.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-launcher:6.1.0=testCompileClasspath,testRuntimeClasspath
org.junit:junit-bom:6.1.0=testCompileClasspath,testRuntimeClasspath
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testRuntimeClasspath
org.ow2.asm:asm-commons:9.9=jacocoAnt
org.ow2.asm:asm-tree:9.9=jacocoAnt
Expand Down
10 changes: 4 additions & 6 deletions core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ dependencies {
testImplementation deps['org.junit-pioneer:junit-pioneer']
testImplementation deps['org.junit.platform:junit-platform-runner']
testImplementation deps['org.junit.platform:junit-platform-suite-api']
testImplementation deps['org.junit.platform:junit-platform-suite']
testImplementation deps['org.mockito:mockito-core']
testImplementation deps['org.mockito:mockito-junit-jupiter']

Expand Down Expand Up @@ -694,10 +695,7 @@ task fragileTest(type: FilteringTest) {

// Dedicated test suite for schema-dependent tests.
task sqlIntegrationTest(type: FilteringTest) {
// TestSuite still requires a JUnit 4 runner, which knows how to handle JUnit 5 tests.
// Here we need to override parent's choice of JUnit 5. If changing this, remember to
// change :integration:sqlIntegrationTest too.
useJUnit()
useJUnitPlatform()
excludeTestCases = false
tests = ['google/registry/schema/integration/SqlIntegrationTestSuite.*']

Expand Down Expand Up @@ -744,9 +742,9 @@ test {
// Don't run any tests from this task, all testing gets done in the
// FilteringTest tasks.
exclude "**"
}.dependsOn(standardTest, registryToolIntegrationTest)
}.dependsOn(standardTest, registryToolIntegrationTest, sqlIntegrationTest)

// When we override tests, we also break the cleanTest command.
cleanTest.dependsOn(cleanStandardTest, cleanRegistryToolIntegrationTest)
cleanTest.dependsOn(cleanStandardTest, cleanRegistryToolIntegrationTest, cleanSqlIntegrationTest)

project.build.dependsOn devtool
Loading
Loading