| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "testing" |
| |
| "github.com/google/go-cmp/cmp" |
| ) |
| |
| func TestUpdateVersion(t *testing.T) { |
| manifestContent := ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <packages> |
| <!-- Packages for buildtools --> |
| <!-- GN --> |
| <package name="gn/gn/${platform}" |
| version="git_revision:89d5ef56cb999a1cb007b2671d375932703d4665" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Ninja --> |
| <package name="infra/ninja/${platform}" |
| version="git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Breakpad --> |
| <package name="fuchsia/tools/breakpad/${os=linux}-${arch}" |
| version="git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| </packages> |
| </manifest> |
| ` |
| |
| tests := make(map[*packageChanges]string) |
| tests[&packageChanges{ |
| Name: "gn/gn/${platform}", |
| OldVer: "git_revision:89d5ef56cb999a1cb007b2671d375932703d4665", |
| NewVer: "git_revision:ffffffffffffffffffffffffffffffffffffffff", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <packages> |
| <!-- Packages for buildtools --> |
| <!-- GN --> |
| <package name="gn/gn/${platform}" |
| version="git_revision:ffffffffffffffffffffffffffffffffffffffff" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Ninja --> |
| <package name="infra/ninja/${platform}" |
| version="git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Breakpad --> |
| <package name="fuchsia/tools/breakpad/${os=linux}-${arch}" |
| version="git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| </packages> |
| </manifest> |
| ` |
| tests[&packageChanges{ |
| Name: "fuchsia/tools/breakpad/${os=linux}-${arch}", |
| OldVer: "git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39", |
| NewVer: "git_revision:ffffffffffffffffffffffffffffffffffffffff", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <packages> |
| <!-- Packages for buildtools --> |
| <!-- GN --> |
| <package name="gn/gn/${platform}" |
| version="git_revision:89d5ef56cb999a1cb007b2671d375932703d4665" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Ninja --> |
| <package name="infra/ninja/${platform}" |
| version="git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| <!-- Breakpad --> |
| <package name="fuchsia/tools/breakpad/${os=linux}-${arch}" |
| version="git_revision:ffffffffffffffffffffffffffffffffffffffff" |
| path="buildtools/{{.OS}}-{{.Arch}}"/> |
| </packages> |
| </manifest> |
| ` |
| |
| for k, v := range tests { |
| if res, err := updateVersion(manifestContent, "package", *k); err != nil { |
| t.Errorf("test updateVersion failed due to error: %v", err) |
| } else if res != v { |
| t.Errorf("expect:%s\n got:%s\nwhen testing updateVersion", v, res) |
| } |
| } |
| } |
| |
| func TestUpdateRevision(t *testing.T) { |
| mainifestContent := ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- See README.dart.md for instructions on how to update this --> |
| <manifest> |
| <projects> |
| <project name="dart/sdk" |
| path="third_party/dart" |
| remote="https://dart.googlesource.com/sdk" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="224f82c21cb2966f36ab850eae7ef5c8697cc477"/> |
| <project name="dart/observatory_pub_packages" |
| path="third_party/dart/third_party/observatory_pub_packages" |
| remote="https://dart.googlesource.com/observatory_pub_packages/" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="0894122173b0f98eb08863a7712e78407d4477bc"/> |
| |
| <project name="third_party/dart-pkg" |
| path="third_party/dart-pkg/pub" |
| remote="https://fuchsia.googlesource.com/third_party/dart-pkg" |
| gerrithost="https://fuchsia-review.googlesource.com"/> |
| </projects> |
| </manifest> |
| ` |
| |
| tests := make(map[*projectChanges]string) |
| tests[&projectChanges{ |
| Name: "dart/sdk", |
| Remote: "", |
| Path: "", |
| OldRev: "224f82c21cb2966f36ab850eae7ef5c8697cc477", |
| NewRev: "ffffffffffffffffffffffffffffffffffffffff", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- See README.dart.md for instructions on how to update this --> |
| <manifest> |
| <projects> |
| <project name="dart/sdk" |
| path="third_party/dart" |
| remote="https://dart.googlesource.com/sdk" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="ffffffffffffffffffffffffffffffffffffffff"/> |
| <project name="dart/observatory_pub_packages" |
| path="third_party/dart/third_party/observatory_pub_packages" |
| remote="https://dart.googlesource.com/observatory_pub_packages/" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="0894122173b0f98eb08863a7712e78407d4477bc"/> |
| |
| <project name="third_party/dart-pkg" |
| path="third_party/dart-pkg/pub" |
| remote="https://fuchsia.googlesource.com/third_party/dart-pkg" |
| gerrithost="https://fuchsia-review.googlesource.com"/> |
| </projects> |
| </manifest> |
| ` |
| |
| tests[&projectChanges{ |
| Name: "third_party/dart-pkg", |
| Remote: "", |
| Path: "", |
| OldRev: "", |
| NewRev: "ffffffffffffffffffffffffffffffffffffffff", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- See README.dart.md for instructions on how to update this --> |
| <manifest> |
| <projects> |
| <project name="dart/sdk" |
| path="third_party/dart" |
| remote="https://dart.googlesource.com/sdk" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="224f82c21cb2966f36ab850eae7ef5c8697cc477"/> |
| <project name="dart/observatory_pub_packages" |
| path="third_party/dart/third_party/observatory_pub_packages" |
| remote="https://dart.googlesource.com/observatory_pub_packages/" |
| gerrithost="https://dart-review.googlesource.com" |
| revision="0894122173b0f98eb08863a7712e78407d4477bc"/> |
| |
| <project name="third_party/dart-pkg" |
| path="third_party/dart-pkg/pub" |
| remote="https://fuchsia.googlesource.com/third_party/dart-pkg" |
| gerrithost="https://fuchsia-review.googlesource.com" |
| revision="ffffffffffffffffffffffffffffffffffffffff"/> |
| </projects> |
| </manifest> |
| ` |
| for k, v := range tests { |
| if res, err := updateRevision(mainifestContent, "project", k.OldRev, k.NewRev, k.Name); err != nil { |
| t.Errorf("test updateRevision failed due to error: %v", err) |
| } else if res != v { |
| t.Errorf("expect:%s\n got:%s\nwhen testing updateVersion", v, res) |
| } |
| } |
| } |
| |
| func TestUpdateDuplicateRevision(t *testing.T) { |
| manifestContent := ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <projects> |
| <!-- The ICU library to use for top-of-tree Fuchsia builds --> |
| <project name="chromium/deps/icu@default" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/default" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="1b7d391f0528fb3a4976b7541b387ee04f915f83"/> |
| <!-- The ICU library to use for "stable" Fuchsia builds --> |
| <project name="chromium/deps/icu@stable" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/stable" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="da07448619763d1cde255b361324242646f5b268"/> |
| <!-- The ICU library to use for "latest" Fuchsia builds --> |
| <project name="chromium/deps/icu@latest" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="da07448619763d1cde255b361324242646f5b268"/> |
| <project name="chromium/deps/icu@extra" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com"/> |
| </projects> |
| </manifest> |
| ` |
| |
| tests := make(map[*projectChanges]string) |
| tests[&projectChanges{ |
| Name: "chromium/deps/icu@latest", |
| Remote: "", |
| Path: "", |
| OldRev: "da07448619763d1cde255b361324242646f5b268", |
| NewRev: "1b7d391f0528fb3a4976b7541b387ee04f915f83", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <projects> |
| <!-- The ICU library to use for top-of-tree Fuchsia builds --> |
| <project name="chromium/deps/icu@default" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/default" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="1b7d391f0528fb3a4976b7541b387ee04f915f83"/> |
| <!-- The ICU library to use for "stable" Fuchsia builds --> |
| <project name="chromium/deps/icu@stable" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/stable" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="da07448619763d1cde255b361324242646f5b268"/> |
| <!-- The ICU library to use for "latest" Fuchsia builds --> |
| <project name="chromium/deps/icu@latest" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="1b7d391f0528fb3a4976b7541b387ee04f915f83"/> |
| <project name="chromium/deps/icu@extra" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com"/> |
| </projects> |
| </manifest> |
| ` |
| tests[&projectChanges{ |
| Name: "chromium/deps/icu@extra", |
| Remote: "", |
| Path: "", |
| OldRev: "", |
| NewRev: "1b7d391f0528fb3a4976b7541b387ee04f915f83", |
| }] = ` |
| <?xml version="1.0" encoding="UTF-8"?> |
| <manifest> |
| <projects> |
| <!-- The ICU library to use for top-of-tree Fuchsia builds --> |
| <project name="chromium/deps/icu@default" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/default" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="1b7d391f0528fb3a4976b7541b387ee04f915f83"/> |
| <!-- The ICU library to use for "stable" Fuchsia builds --> |
| <project name="chromium/deps/icu@stable" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/stable" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="da07448619763d1cde255b361324242646f5b268"/> |
| <!-- The ICU library to use for "latest" Fuchsia builds --> |
| <project name="chromium/deps/icu@latest" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="da07448619763d1cde255b361324242646f5b268"/> |
| <project name="chromium/deps/icu@extra" |
| gitsubmoduleof="fuchsia" |
| path="third_party/icu/latest" |
| remote="https://chromium.googlesource.com/chromium/deps/icu" |
| gerrithost="https://chromium-review.googlesource.com" |
| revision="1b7d391f0528fb3a4976b7541b387ee04f915f83"/> |
| </projects> |
| </manifest> |
| ` |
| |
| for k, v := range tests { |
| t.Run(fmt.Sprintf("%v", k), func(t *testing.T) { |
| if res, err := updateRevision(manifestContent, "project", k.OldRev, k.NewRev, k.Name); err != nil { |
| t.Errorf("test updateRevision failed due to error: %v", err) |
| } else if res != v { |
| t.Errorf("expect:%s\n got:%s\nwhen testing updateVersion, diff:\n%v", v, res, cmp.Diff(v, res)) |
| } |
| }) |
| } |
| } |