diff --git a/.uloop/project-runner-pin.json b/.uloop/project-runner-pin.json index d6a77070cc..9bcd8c1482 100644 --- a/.uloop/project-runner-pin.json +++ b/.uloop/project-runner-pin.json @@ -1,8 +1,4 @@ { "projectRunnerVersion": "3.0.0-beta.46", - "minimumDispatcherVersion": "3.0.1-beta.6", - "packageName": "io.github.hatayama.uloopmcp", - "packageVersion": "3.0.0-beta.48", - "requiredProtocolVersion": 3, - "schemaVersion": 1 + "minimumDispatcherVersion": "3.0.1-beta.6" } diff --git a/Assets/Tests/Editor/CliPinSynchronizerTests.cs b/Assets/Tests/Editor/CliPinSynchronizerTests.cs index 08dddbcfe4..413b9cc976 100644 --- a/Assets/Tests/Editor/CliPinSynchronizerTests.cs +++ b/Assets/Tests/Editor/CliPinSynchronizerTests.cs @@ -26,7 +26,7 @@ public void SyncProjectPinFile_WhenDestinationMissing_ShouldCopyPackagePin() Directory.CreateDirectory(projectRoot); File.WriteAllText( Path.Combine(packageRoot, UnityCliLoopConstants.ULOOP_PROJECT_RUNNER_PIN_FILE_NAME), - "{\"schemaVersion\":1}"); + "{\"projectRunnerVersion\":\"3.0.0\",\"minimumDispatcherVersion\":\"3.0.1\"}"); bool changed = CliPinSynchronizer.SyncProjectPinFile(packageRoot, projectRoot); @@ -37,7 +37,7 @@ public void SyncProjectPinFile_WhenDestinationMissing_ShouldCopyPackagePin() projectRoot, UnityCliLoopConstants.ULOOP_DIR, UnityCliLoopConstants.ULOOP_PROJECT_RUNNER_PIN_FILE_NAME)), - Is.EqualTo("{\"schemaVersion\":1}")); + Is.EqualTo("{\"projectRunnerVersion\":\"3.0.0\",\"minimumDispatcherVersion\":\"3.0.1\"}")); } finally { @@ -64,8 +64,8 @@ public void SyncProjectPinFile_WhenDestinationMatches_ShouldSkipWrite() string destinationPath = Path.Combine( projectUloopRoot, UnityCliLoopConstants.ULOOP_PROJECT_RUNNER_PIN_FILE_NAME); - File.WriteAllText(sourcePath, "{\"schemaVersion\":1}"); - File.WriteAllText(destinationPath, "{\"schemaVersion\":1}"); + File.WriteAllText(sourcePath, "{\"projectRunnerVersion\":\"3.0.0\",\"minimumDispatcherVersion\":\"3.0.1\"}"); + File.WriteAllText(destinationPath, "{\"projectRunnerVersion\":\"3.0.0\",\"minimumDispatcherVersion\":\"3.0.1\"}"); DateTime previousWriteTime = File.GetLastWriteTimeUtc(destinationPath); bool changed = CliPinSynchronizer.SyncProjectPinFile(packageRoot, projectRoot); @@ -94,16 +94,16 @@ public void SyncProjectPinFile_WhenPackagePinChanges_ShouldUpdateProjectPin() Directory.CreateDirectory(projectUloopRoot); File.WriteAllText( Path.Combine(packageRoot, UnityCliLoopConstants.ULOOP_PROJECT_RUNNER_PIN_FILE_NAME), - "{\"schemaVersion\":2}"); + "{\"projectRunnerVersion\":\"3.0.1\",\"minimumDispatcherVersion\":\"3.0.1\"}"); string destinationPath = Path.Combine( projectUloopRoot, UnityCliLoopConstants.ULOOP_PROJECT_RUNNER_PIN_FILE_NAME); - File.WriteAllText(destinationPath, "{\"schemaVersion\":1}"); + File.WriteAllText(destinationPath, "{\"projectRunnerVersion\":\"3.0.0\",\"minimumDispatcherVersion\":\"3.0.1\"}"); bool changed = CliPinSynchronizer.SyncProjectPinFile(packageRoot, projectRoot); Assert.That(changed, Is.True); - Assert.That(File.ReadAllText(destinationPath), Is.EqualTo("{\"schemaVersion\":2}")); + Assert.That(File.ReadAllText(destinationPath), Is.EqualTo("{\"projectRunnerVersion\":\"3.0.1\",\"minimumDispatcherVersion\":\"3.0.1\"}")); } finally { diff --git a/Packages/src/project-runner-pin.json b/Packages/src/project-runner-pin.json index d6a77070cc..9bcd8c1482 100644 --- a/Packages/src/project-runner-pin.json +++ b/Packages/src/project-runner-pin.json @@ -1,8 +1,4 @@ { "projectRunnerVersion": "3.0.0-beta.46", - "minimumDispatcherVersion": "3.0.1-beta.6", - "packageName": "io.github.hatayama.uloopmcp", - "packageVersion": "3.0.0-beta.48", - "requiredProtocolVersion": 3, - "schemaVersion": 1 + "minimumDispatcherVersion": "3.0.1-beta.6" } diff --git a/cli/common/clicontract/protocol_version_consistency_test.go b/cli/common/clicontract/protocol_version_consistency_test.go index 299485e7bc..161da97591 100644 --- a/cli/common/clicontract/protocol_version_consistency_test.go +++ b/cli/common/clicontract/protocol_version_consistency_test.go @@ -13,7 +13,6 @@ import ( // Unity package accepts. It is relative to this package directory (cli/common/clicontract). const ( unityProtocolConstantPath = "../../../Packages/src/Editor/Domain/CliConstants.cs" - unityPackageManifestPath = "../../../Packages/src/package.json" unityPackageCliPinPath = "../../../Packages/src/project-runner-pin.json" unityProjectCliPinPath = "../../../.uloop/project-runner-pin.json" ) @@ -23,17 +22,8 @@ var ( unityMinimumDispatcherVersionPattern = regexp.MustCompile(`MINIMUM_REQUIRED_DISPATCHER_VERSION\s*=\s*"([^"]+)"`) ) -type unityPackageManifest struct { - Name string `json:"name"` - Version string `json:"version"` -} - type unityPackageCliPin struct { - SchemaVersion int `json:"schemaVersion"` - PackageName string `json:"packageName"` - PackageVersion string `json:"packageVersion"` ProjectRunnerVersion string `json:"projectRunnerVersion"` - RequiredProtocolVersion int `json:"requiredProtocolVersion"` MinimumDispatcherVersion string `json:"minimumDispatcherVersion"` } @@ -55,30 +45,14 @@ func TestProtocolVersionMatchesUnityPackage(t *testing.T) { } // TestUnityPackageCliPinMatchesReleaseContracts verifies the dispatcher pin copied into -// projects points at the package release, project runner release, and protocol generation from their -// canonical declarations. +// projects points at the project runner release from cli/contract.json and at the minimum +// dispatcher version declared in CliConstants. func TestUnityPackageCliPinMatchesReleaseContracts(t *testing.T) { - manifest := readJSONFile[unityPackageManifest](t, unityPackageManifestPath) pin := readJSONFile[unityPackageCliPin](t, unityPackageCliPinPath) - if pin.SchemaVersion != 1 { - t.Fatalf("expected %s schemaVersion to be 1, got %d", unityPackageCliPinPath, pin.SchemaVersion) - } - if pin.PackageName != manifest.Name { - t.Fatalf("expected %s packageName to match %s name: %q != %q", unityPackageCliPinPath, unityPackageManifestPath, pin.PackageName, manifest.Name) - } - if pin.PackageVersion != manifest.Version { - t.Fatalf("expected %s packageVersion to match %s version: %q != %q", unityPackageCliPinPath, unityPackageManifestPath, pin.PackageVersion, manifest.Version) - } if pin.ProjectRunnerVersion != ProjectRunnerVersion() { t.Fatalf("expected %s projectRunnerVersion to match cli/contract.json projectRunnerVersion: %q != %q", unityPackageCliPinPath, pin.ProjectRunnerVersion, ProjectRunnerVersion()) } - if pin.RequiredProtocolVersion != ProtocolVersion() { - t.Fatalf("expected %s requiredProtocolVersion to match cli/contract.json protocolVersion: %d != %d", unityPackageCliPinPath, pin.RequiredProtocolVersion, ProtocolVersion()) - } - if pin.RequiredProtocolVersion != readUnityRequiredProtocolVersion(t) { - t.Fatalf("expected %s requiredProtocolVersion to match %s", unityPackageCliPinPath, unityProtocolConstantPath) - } if pin.MinimumDispatcherVersion == "" { t.Fatalf("expected %s minimumDispatcherVersion to be set", unityPackageCliPinPath) } diff --git a/cli/dispatcher/internal/dispatcher/dispatcher_pin.go b/cli/dispatcher/internal/dispatcher/dispatcher_pin.go index 0e2465467c..014eca55dc 100644 --- a/cli/dispatcher/internal/dispatcher/dispatcher_pin.go +++ b/cli/dispatcher/internal/dispatcher/dispatcher_pin.go @@ -13,11 +13,7 @@ import ( var dispatcherProjectRunnerVersionPattern = regexp.MustCompile(`^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z][0-9A-Za-z.-]*)?(?:\+[0-9A-Za-z][0-9A-Za-z.-]*)?$`) type dispatcherPin struct { - SchemaVersion int `json:"schemaVersion"` - PackageName string `json:"packageName"` - PackageVersion string `json:"packageVersion"` ProjectRunnerVersion string `json:"projectRunnerVersion"` - RequiredProtocolVersion int `json:"requiredProtocolVersion"` MinimumDispatcherVersion string `json:"minimumDispatcherVersion"` SourcePath string `json:"-"` } @@ -96,9 +92,6 @@ func readDispatcherPin(pinPath string) (dispatcherPin, error) { return dispatcherPin{}, fmt.Errorf("%s defines invalid minimumDispatcherVersion: %w", pinPath, err) } } - if pin.SchemaVersion == 0 { - return dispatcherPin{}, fmt.Errorf("%s does not define schemaVersion", pinPath) - } pin.SourcePath = pinPath return pin, nil } diff --git a/cli/dispatcher/internal/dispatcher/dispatcher_test.go b/cli/dispatcher/internal/dispatcher/dispatcher_test.go index 3ea232275a..7c51ea695a 100644 --- a/cli/dispatcher/internal/dispatcher/dispatcher_test.go +++ b/cli/dispatcher/internal/dispatcher/dispatcher_test.go @@ -745,7 +745,7 @@ func TestLoadDispatcherPinRejectsInvalidProjectRunnerVersion(t *testing.T) { if err := os.MkdirAll(filepath.Dir(pinPath), 0o755); err != nil { t.Fatalf("failed to create pin directory: %v", err) } - content := `{"schemaVersion":1,"packageName":"io.github.hatayama.uloopmcp","packageVersion":"3.0.0-beta.1","projectRunnerVersion":"../../payload","requiredProtocolVersion":2,"minimumDispatcherVersion":"3.0.0-beta.39"}` + content := `{"projectRunnerVersion":"../../payload","minimumDispatcherVersion":"3.0.0-beta.39"}` if err := os.WriteFile(pinPath, []byte(content), 0o644); err != nil { t.Fatalf("failed to write pin: %v", err) } @@ -855,9 +855,9 @@ func writeDispatcherPinFileWithMinimum(t *testing.T, pinPath string, projectRunn if err := os.MkdirAll(filepath.Dir(pinPath), 0o755); err != nil { t.Fatalf("failed to create pin directory: %v", err) } - content := `{"schemaVersion":1,"packageName":"io.github.hatayama.uloopmcp","packageVersion":"3.0.0-beta.1","projectRunnerVersion":"` + + content := `{"projectRunnerVersion":"` + projectRunnerVersion + - `","requiredProtocolVersion":2,"minimumDispatcherVersion":"` + + `","minimumDispatcherVersion":"` + minimumDispatcherVersion + `"}` if err := os.WriteFile(pinPath, []byte(content), 0o644); err != nil { diff --git a/cli/release-automation/internal/automation/dispatcher_minimum_version_guard.go b/cli/release-automation/internal/automation/dispatcher_minimum_version_guard.go index 93bd4d5f8e..a611586e1d 100644 --- a/cli/release-automation/internal/automation/dispatcher_minimum_version_guard.go +++ b/cli/release-automation/internal/automation/dispatcher_minimum_version_guard.go @@ -82,11 +82,7 @@ type dispatcherMinimumVersionReleaseContract struct { } type dispatcherMinimumVersionCliPin struct { - SchemaVersion int `json:"schemaVersion"` - PackageName string `json:"packageName"` - PackageVersion string `json:"packageVersion"` ProjectRunnerVersion string `json:"projectRunnerVersion"` - RequiredProtocolVersion int `json:"requiredProtocolVersion"` MinimumDispatcherVersion string `json:"minimumDispatcherVersion"` } diff --git a/cli/release-automation/internal/automation/dispatcher_minimum_version_guard_test.go b/cli/release-automation/internal/automation/dispatcher_minimum_version_guard_test.go index a6b5832ee7..d81fd2d4bf 100644 --- a/cli/release-automation/internal/automation/dispatcher_minimum_version_guard_test.go +++ b/cli/release-automation/internal/automation/dispatcher_minimum_version_guard_test.go @@ -269,9 +269,9 @@ public const string MINIMUM_REQUIRED_DISPATCHER_VERSION = "` + minimumDispatcher } func buildDispatcherMinimumVersionPin(projectRunnerVersion string, minimumDispatcherVersion string) string { - return `{"schemaVersion":1,"packageName":"test.package","packageVersion":"3.0.0-beta.40","projectRunnerVersion":"` + + return `{"projectRunnerVersion":"` + projectRunnerVersion + - `","requiredProtocolVersion":2,"minimumDispatcherVersion":"` + + `","minimumDispatcherVersion":"` + minimumDispatcherVersion + `"}` } diff --git a/release-please-config.json b/release-please-config.json index f7f91462dc..7f76c9d990 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -15,16 +15,6 @@ "type": "json", "path": "package.json", "jsonpath": "$.version" - }, - { - "type": "json", - "path": "project-runner-pin.json", - "jsonpath": "$.packageVersion" - }, - { - "type": "json", - "path": "/.uloop/project-runner-pin.json", - "jsonpath": "$.packageVersion" } ] }, diff --git a/scripts/test-release-please-config.sh b/scripts/test-release-please-config.sh index e796b919b2..8b8f695a56 100755 --- a/scripts/test-release-please-config.sh +++ b/scripts/test-release-please-config.sh @@ -128,13 +128,9 @@ assert_json_value '.packages["Packages/src"].["changelog-path"]' 'CHANGELOG.md' assert_json_value '.packages["Packages/src"].component' 'unity-package' assert_json_value '.packages["Packages/src"].["include-component-in-tag"]' 'false' assert_json_value '.packages["Packages/src"] | has("exclude-paths")' 'false' -assert_json_value '.packages["Packages/src"].["extra-files"] | length' '3' -assert_json_value '.packages["Packages/src"].["extra-files"][0].path' 'package.json' -assert_json_value '.packages["Packages/src"].["extra-files"][0].jsonpath' '$.version' -assert_json_value '.packages["Packages/src"].["extra-files"][1].path' 'project-runner-pin.json' -assert_json_value '.packages["Packages/src"].["extra-files"][1].jsonpath' '$.packageVersion' -assert_json_value '.packages["Packages/src"].["extra-files"][2].path' '/.uloop/project-runner-pin.json' -assert_json_value '.packages["Packages/src"].["extra-files"][2].jsonpath' '$.packageVersion' +assert_json_value '.packages["Packages/src"]["extra-files"] | length' '1' +assert_json_value '.packages["Packages/src"]["extra-files"][0].path' 'package.json' +assert_json_value '.packages["Packages/src"]["extra-files"][0].jsonpath' '$.version' assert_json_value '.packages["cli/project-runner"].component' 'uloop-project-runner' assert_json_value '.packages["cli/project-runner"].["include-component-in-tag"]' 'true' @@ -143,13 +139,13 @@ assert_json_value '.packages["cli/project-runner"].["changelog-path"]' 'CHANGELO # so there is nothing left under cli/project-runner to exclude from # uloop-project-runner releases. assert_json_value '.packages["cli/project-runner"] | has("exclude-paths")' 'false' -assert_json_value '.packages["cli/project-runner"].["extra-files"] | length' '4' -assert_json_value '.packages["cli/project-runner"].["extra-files"][0].path' '/cli/common/tools/default-tools.json' -assert_json_value '.packages["cli/project-runner"].["extra-files"][1].path' '/cli/common/clicontract/contract.json' -assert_json_value '.packages["cli/project-runner"].["extra-files"][2].path' '/Packages/src/project-runner-pin.json' -assert_json_value '.packages["cli/project-runner"].["extra-files"][2].jsonpath' '$.projectRunnerVersion' -assert_json_value '.packages["cli/project-runner"].["extra-files"][3].path' '/.uloop/project-runner-pin.json' -assert_json_value '.packages["cli/project-runner"].["extra-files"][3].jsonpath' '$.projectRunnerVersion' +assert_json_value '.packages["cli/project-runner"]["extra-files"] | length' '4' +assert_json_value '.packages["cli/project-runner"]["extra-files"][0].path' '/cli/common/tools/default-tools.json' +assert_json_value '.packages["cli/project-runner"]["extra-files"][1].path' '/cli/common/clicontract/contract.json' +assert_json_value '.packages["cli/project-runner"]["extra-files"][2].path' '/Packages/src/project-runner-pin.json' +assert_json_value '.packages["cli/project-runner"]["extra-files"][2].jsonpath' '$.projectRunnerVersion' +assert_json_value '.packages["cli/project-runner"]["extra-files"][3].path' '/.uloop/project-runner-pin.json' +assert_json_value '.packages["cli/project-runner"]["extra-files"][3].jsonpath' '$.projectRunnerVersion' # The dispatcher tag format must stay dispatcher-v to continue the # existing tag sequence started before release-please management. @@ -160,9 +156,9 @@ assert_json_value '.packages["cli/dispatcher"].["versioning"]' 'prerelease' assert_json_value '.packages["cli/dispatcher"].["prerelease-type"]' 'beta' assert_json_value '.packages["cli/dispatcher"].["changelog-path"]' 'CHANGELOG.md' assert_json_value '.packages["cli/dispatcher"] | has("exclude-paths")' 'false' -assert_json_value '.packages["cli/dispatcher"].["extra-files"] | length' '1' -assert_json_value '.packages["cli/dispatcher"].["extra-files"][0].path' 'dispatchercontract/dispatcher-contract.json' -assert_json_value '.packages["cli/dispatcher"].["extra-files"][0].jsonpath' '$.dispatcherVersion' +assert_json_value '.packages["cli/dispatcher"]["extra-files"] | length' '1' +assert_json_value '.packages["cli/dispatcher"]["extra-files"][0].path' 'dispatchercontract/dispatcher-contract.json' +assert_json_value '.packages["cli/dispatcher"]["extra-files"][0].jsonpath' '$.dispatcherVersion' assert_file_contains "$RELEASE_WORKFLOW" 'id: package_release_sync' assert_file_contains "$RELEASE_WORKFLOW" "steps.package_release_sync.outputs.ready != 'false'" diff --git a/scripts/test-sync-release-please-package-releases.sh b/scripts/test-sync-release-please-package-releases.sh index a6dec0f31e..552a1be7d9 100755 --- a/scripts/test-sync-release-please-package-releases.sh +++ b/scripts/test-sync-release-please-package-releases.sh @@ -207,11 +207,7 @@ EOF_MANIFEST cat > Packages/src/project-runner-pin.json <