@@ -35,10 +35,11 @@ func handler(c fiber.Ctx) error {
3535 require .NoError (t , v3 .MigrateContextMethods (cmd , dir , nil , nil ))
3636
3737 content := readFile (t , file )
38- assert .Contains (t , content , ".RequestCtx()" )
39- assert .NotContains (t , content , ".Context()" )
40- assert .Contains (t , content , `// TODO: SetUserContext was removed, please migrate manually: c.SetUserContext(ctx)` )
41- assert .Contains (t , content , "uc := c" )
38+ assert .Contains (t , content , "ctx := c.RequestCtx()" )
39+ assert .Contains (t , content , "uc := c.Context()" )
40+ assert .Contains (t , content , "c.SetContext(ctx)" )
41+ assert .NotContains (t , content , ".UserContext()" )
42+ assert .NotContains (t , content , "SetUserContext" )
4243 assert .Contains (t , buf .String (), "Migrating context methods" )
4344}
4445
@@ -62,8 +63,9 @@ func handler(ctx fiber.Ctx) error {
6263 require .NoError (t , v3 .MigrateContextMethods (cmd , dir , nil , nil ))
6364
6465 content := readFile (t , file )
65- assert .Contains (t , content , `// TODO: SetUserContext was removed, please migrate manually: res := ctx.SetUserContext (ctx.RequestCtx())` )
66+ assert .Contains (t , content , `res := ctx.SetContext (ctx.RequestCtx())` )
6667 assert .NotContains (t , content , `.UserContext()` )
68+ assert .NotContains (t , content , "SetUserContext" )
6769 assert .Contains (t , buf .String (), "Migrating context methods" )
6870}
6971
@@ -88,7 +90,45 @@ func handler(c fiber.Ctx) error {
8890 require .NoError (t , v3 .MigrateContextMethods (cmd , dir , nil , nil ))
8991 second := readFile (t , file )
9092 assert .Equal (t , first , second )
91- assert .Equal (t , 1 , strings .Count (second , "TODO: SetUserContext was removed" ))
93+ assert .Equal (t , 1 , strings .Count (second , "SetContext(" ))
94+ }
95+
96+ func Test_MigrateContextMethods_MultipleRuns (t * testing.T ) {
97+ t .Parallel ()
98+
99+ dir , err := os .MkdirTemp ("" , "mcmtestmulti2" )
100+ require .NoError (t , err )
101+ defer func () { require .NoError (t , os .RemoveAll (dir )) }()
102+
103+ file := writeTempFile (t , dir , `package main
104+ import "github.com/gofiber/fiber/v2"
105+ func handler(c fiber.Ctx) error {
106+ ctx := c.Context()
107+ uc := c.UserContext()
108+ c.SetUserContext(ctx)
109+ c.SetUserContext(c.Context())
110+ _ = uc
111+ return nil
112+ }` )
113+
114+ var buf bytes.Buffer
115+ cmd := newCmd (& buf )
116+ require .NoError (t , v3 .MigrateContextMethods (cmd , dir , nil , nil ))
117+ first := readFile (t , file )
118+
119+ require .Contains (t , first , "ctx := c.RequestCtx()" )
120+ require .Contains (t , first , "uc := c.Context()" )
121+ require .Contains (t , first , "c.SetContext(ctx)" )
122+ require .Contains (t , first , "c.SetContext(c.RequestCtx())" )
123+ require .NotContains (t , first , ".UserContext()" )
124+ require .NotContains (t , first , "SetUserContext" )
125+
126+ require .NoError (t , v3 .MigrateContextMethods (cmd , dir , nil , nil ))
127+ second := readFile (t , file )
128+ assert .Equal (t , first , second )
129+ assert .Equal (t , 1 , strings .Count (second , "uc := c.Context()" ))
130+ assert .Equal (t , 2 , strings .Count (second , ".RequestCtx()" ))
131+ assert .Equal (t , 2 , strings .Count (second , "SetContext(" ))
92132}
93133
94134func Test_MigrateContextMethods_SkipNonFiber (t * testing.T ) {
0 commit comments