@@ -18,53 +18,78 @@ import (
1818 "fmt"
1919 "os"
2020 "path/filepath"
21+ "strings"
2122 "testing"
2223
2324 "github.com/google/go-cmp/cmp"
2425 cmdtest "github.com/googleapis/librarian/internal/command"
2526 "github.com/googleapis/librarian/internal/config"
2627)
2728
28- func TestBumpVersions (t * testing.T ) {
29- cmdtest .RequireCommand (t , "cargo" )
30- cmdtest .RequireCommand (t , "taplo" )
31- tmpDir := t .TempDir ()
32- t .Chdir (tmpDir )
29+ const (
30+ storageDir = "src/storage"
31+ storageCargo = "src/storage/Cargo.toml"
32+ storageName = "google-cloud-storage"
33+ storageInitial = "1.0.0"
34+ storageReleased = "1.1.0"
35+
36+ secretmanagerDir = "src/secretmanager"
37+ secretmanagerCargo = "src/secretmanager/Cargo.toml"
38+ secretmanagerName = "google-cloud-secretmanager-v1"
39+ secretmanagerInitial = "1.5.3"
40+ secretmanagerReleased = "1.6.0"
41+ )
3342
34- createCrate (t , "src/storage" , "google-cloud-storage" , "1.0.0" )
35- createCrate (t , "src/secretmanager" , "google-cloud-secretmanager-v1" , "1.5.3" )
43+ func TestReleaseAll (t * testing.T ) {
44+ cfg := setupRelease (t )
45+ got , err := ReleaseAll (cfg )
46+ if err != nil {
47+ t .Fatal (err )
48+ }
3649
37- cfg := & config.Config {
38- Version : "v1" ,
39- Language : "rust" ,
40- Versions : map [string ]string {
41- "google-cloud-storage" : "1.0.0" ,
42- "google-cloud-secretmanager-v1" : "1.5.3" ,
43- },
50+ checkCargoVersion (t , storageCargo , storageReleased )
51+ checkCargoVersion (t , secretmanagerCargo , secretmanagerReleased )
52+ want := map [string ]string {
53+ storageName : storageReleased ,
54+ secretmanagerName : secretmanagerReleased ,
4455 }
45- configPath := "librarian.yaml"
46- if err := cfg .Write (configPath ); err != nil {
47- t .Fatal (err )
56+ if diff := cmp .Diff (want , got .Versions ); diff != "" {
57+ t .Errorf ("mismatch (-want +got):\n %s" , diff )
4858 }
59+ }
4960
50- updatedCfg , err := BumpVersions (t .Context (), cfg , "" )
61+ func TestReleaseOne (t * testing.T ) {
62+ cfg := setupRelease (t )
63+ got , err := ReleaseLibrary (cfg , storageName )
5164 if err != nil {
5265 t .Fatal (err )
5366 }
5467
55- if err := updatedCfg .Write (configPath ); err != nil {
56- t .Fatal (err )
68+ checkCargoVersion (t , storageCargo , storageReleased )
69+ checkCargoVersion (t , secretmanagerCargo , secretmanagerInitial )
70+ want := map [string ]string {
71+ storageName : storageReleased ,
72+ secretmanagerName : secretmanagerInitial ,
73+ }
74+ if diff := cmp .Diff (want , got .Versions ); diff != "" {
75+ t .Errorf ("mismatch (-want +got):\n %s" , diff )
5776 }
77+ }
5878
59- checkCargoVersion (t , "src/storage/Cargo.toml" , "1.1.0" )
60- checkCargoVersion (t , "src/secretmanager/Cargo.toml" , "1.6.0" )
79+ func setupRelease (t * testing.T ) * config.Config {
80+ t .Helper ()
81+ cmdtest .RequireCommand (t , "cargo" )
82+ cmdtest .RequireCommand (t , "taplo" )
83+ tmpDir := t .TempDir ()
84+ t .Chdir (tmpDir )
6185
62- wantVersions := map [string ]string {
63- "google-cloud-storage" : "1.1.0" ,
64- "google-cloud-secretmanager-v1" : "1.6.0" ,
65- }
66- if diff := cmp .Diff (wantVersions , updatedCfg .Versions ); diff != "" {
67- t .Errorf ("versions mismatch (-want +got):\n %s" , diff )
86+ createCrate (t , storageDir , storageName , storageInitial )
87+ createCrate (t , secretmanagerDir , secretmanagerName , secretmanagerInitial )
88+ return & config.Config {
89+ Versions : map [string ]string {
90+ storageName : storageInitial ,
91+ secretmanagerName : secretmanagerInitial ,
92+ },
6893 }
6994}
7095
@@ -91,22 +116,9 @@ func checkCargoVersion(t *testing.T, path, wantVersion string) {
91116 if err != nil {
92117 t .Fatal (err )
93118 }
94-
95- want := fmt .Sprintf (`version = "%s"` , wantVersion )
96- if ! contains (string (contents ), want ) {
97- t .Errorf ("%s does not contain %q\n Got:\n %s" , path , want , string (contents ))
98- }
99- }
100-
101- func contains (s , substr string ) bool {
102- return len (s ) >= len (substr ) && (s == substr || len (s ) > len (substr ) && containsInner (s , substr ))
103- }
104-
105- func containsInner (s , substr string ) bool {
106- for i := 0 ; i <= len (s )- len (substr ); i ++ {
107- if s [i :i + len (substr )] == substr {
108- return true
109- }
119+ wantLine := fmt .Sprintf (`version = "%s"` , wantVersion )
120+ got := string (contents )
121+ if ! strings .Contains (got , wantLine ) {
122+ t .Errorf ("%s version mismatch:\n want line: %q\n got:\n %s" , path , wantLine , got )
110123 }
111- return false
112124}
0 commit comments