145 lines
2.5 KiB
Go
145 lines
2.5 KiB
Go
|
// Copyright 2016 Google Inc. All rights reserved.
|
||
|
// Use of this source code is governed by the Apache 2.0
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package main
|
||
|
|
||
|
func init() {
|
||
|
addTestCases(aeTests, nil)
|
||
|
}
|
||
|
|
||
|
var aeTests = []testCase{
|
||
|
// Collection of fixes:
|
||
|
// - imports
|
||
|
// - appengine.Timeout -> context.WithTimeout
|
||
|
// - add ctx arg to appengine.Datacenter
|
||
|
// - logging API
|
||
|
{
|
||
|
Name: "ae.0",
|
||
|
In: `package foo
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"time"
|
||
|
|
||
|
"appengine"
|
||
|
"appengine/datastore"
|
||
|
)
|
||
|
|
||
|
func f(w http.ResponseWriter, r *http.Request) {
|
||
|
c := appengine.NewContext(r)
|
||
|
|
||
|
c = appengine.Timeout(c, 5*time.Second)
|
||
|
err := datastore.ErrNoSuchEntity
|
||
|
c.Errorf("Something interesting happened: %v", err)
|
||
|
_ = appengine.Datacenter()
|
||
|
}
|
||
|
`,
|
||
|
Out: `package foo
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"time"
|
||
|
|
||
|
"golang.org/x/net/context"
|
||
|
"google.golang.org/appengine"
|
||
|
"google.golang.org/appengine/datastore"
|
||
|
"google.golang.org/appengine/log"
|
||
|
)
|
||
|
|
||
|
func f(w http.ResponseWriter, r *http.Request) {
|
||
|
c := appengine.NewContext(r)
|
||
|
|
||
|
c, _ = context.WithTimeout(c, 5*time.Second)
|
||
|
err := datastore.ErrNoSuchEntity
|
||
|
log.Errorf(c, "Something interesting happened: %v", err)
|
||
|
_ = appengine.Datacenter(c)
|
||
|
}
|
||
|
`,
|
||
|
},
|
||
|
|
||
|
// Updating a function that takes an appengine.Context arg.
|
||
|
{
|
||
|
Name: "ae.1",
|
||
|
In: `package foo
|
||
|
|
||
|
import (
|
||
|
"appengine"
|
||
|
)
|
||
|
|
||
|
func LogSomething(c2 appengine.Context) {
|
||
|
c2.Warningf("Stand back! I'm going to try science!")
|
||
|
}
|
||
|
`,
|
||
|
Out: `package foo
|
||
|
|
||
|
import (
|
||
|
"golang.org/x/net/context"
|
||
|
"google.golang.org/appengine/log"
|
||
|
)
|
||
|
|
||
|
func LogSomething(c2 context.Context) {
|
||
|
log.Warningf(c2, "Stand back! I'm going to try science!")
|
||
|
}
|
||
|
`,
|
||
|
},
|
||
|
|
||
|
// Less widely used API changes:
|
||
|
// - drop maxTasks arg to taskqueue.QueueStats
|
||
|
{
|
||
|
Name: "ae.2",
|
||
|
In: `package foo
|
||
|
|
||
|
import (
|
||
|
"appengine"
|
||
|
"appengine/taskqueue"
|
||
|
)
|
||
|
|
||
|
func f(ctx appengine.Context) {
|
||
|
stats, err := taskqueue.QueueStats(ctx, []string{"one", "two"}, 0)
|
||
|
}
|
||
|
`,
|
||
|
Out: `package foo
|
||
|
|
||
|
import (
|
||
|
"golang.org/x/net/context"
|
||
|
"google.golang.org/appengine/taskqueue"
|
||
|
)
|
||
|
|
||
|
func f(ctx context.Context) {
|
||
|
stats, err := taskqueue.QueueStats(ctx, []string{"one", "two"})
|
||
|
}
|
||
|
`,
|
||
|
},
|
||
|
|
||
|
// Check that the main "appengine" import will not be dropped
|
||
|
// if an appengine.Context -> context.Context change happens
|
||
|
// but the appengine package is still referenced.
|
||
|
{
|
||
|
Name: "ae.3",
|
||
|
In: `package foo
|
||
|
|
||
|
import (
|
||
|
"appengine"
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
func f(ctx appengine.Context, w io.Writer) {
|
||
|
_ = appengine.IsDevAppServer()
|
||
|
}
|
||
|
`,
|
||
|
Out: `package foo
|
||
|
|
||
|
import (
|
||
|
"golang.org/x/net/context"
|
||
|
"google.golang.org/appengine"
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
func f(ctx context.Context, w io.Writer) {
|
||
|
_ = appengine.IsDevAppServer()
|
||
|
}
|
||
|
`,
|
||
|
},
|
||
|
}
|