diff --git a/cmd/pkgsite/main.go b/cmd/pkgsite/main.go
index ed03191..6d3cb58 100644
--- a/cmd/pkgsite/main.go
+++ b/cmd/pkgsite/main.go
@@ -55,36 +55,39 @@
 		paths = "."
 	}
 
-	lds := localdatasource.New(source.NewClient(time.Second))
-	dsg := func(context.Context) internal.DataSource { return lds }
-	server, err := frontend.NewServer(frontend.ServerConfig{
-		DataSourceGetter: dsg,
-		StaticPath:       template.TrustedSourceFromFlag(flag.Lookup("static").Value),
-	})
+	server, err := newServer(ctx, strings.Split(paths, ","), *gopathMode)
 	if err != nil {
-		log.Fatalf(ctx, "frontend.NewServer: %v", err)
+		log.Fatalf(ctx, "newServer: %v", err)
 	}
-
-	load(ctx, lds, paths)
-
 	router := dcensus.NewRouter(frontend.TagRoute)
 	server.Install(router.Handle, nil, nil)
-
 	mw := middleware.Timeout(54 * time.Second)
 	log.Infof(ctx, "Listening on addr %s", *httpAddr)
 	log.Fatal(ctx, http.ListenAndServe(*httpAddr, mw(router)))
 }
 
+func newServer(ctx context.Context, paths []string, gopathMode bool) (*frontend.Server, error) {
+	lds := localdatasource.New(source.NewClient(time.Second))
+	server, err := frontend.NewServer(frontend.ServerConfig{
+		DataSourceGetter: func(context.Context) internal.DataSource { return lds },
+		StaticPath:       template.TrustedSourceFromFlag(flag.Lookup("static").Value),
+	})
+	if err != nil {
+		return nil, err
+	}
+	addGetters(ctx, lds, paths, gopathMode)
+	return server, nil
+}
+
 // load loads local modules from pathList.
-func load(ctx context.Context, ds *localdatasource.DataSource, pathList string) {
-	paths := strings.Split(pathList, ",")
+func addGetters(ctx context.Context, ds *localdatasource.DataSource, paths []string, gopathMode bool) {
 	loaded := len(paths)
 	for _, path := range paths {
 		var (
 			mg  fetch.ModuleGetter
 			err error
 		)
-		if *gopathMode {
+		if gopathMode {
 			mg, err = localdatasource.NewGOPATHModuleGetter(path)
 		} else {
 			mg, err = fetch.NewDirectoryModuleGetter("", path)
@@ -98,6 +101,6 @@
 	}
 
 	if loaded == 0 {
-		log.Fatalf(ctx, "failed to load module(s) at %s", pathList)
+		log.Fatalf(ctx, "failed to load module(s) at %v", paths)
 	}
 }
diff --git a/cmd/pkgsite/main_test.go b/cmd/pkgsite/main_test.go
new file mode 100644
index 0000000..f0db81d
--- /dev/null
+++ b/cmd/pkgsite/main_test.go
@@ -0,0 +1,29 @@
+// Copyright 2021 The Go 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 (
+	"context"
+	"flag"
+	"net/http"
+	"net/http/httptest"
+	"testing"
+)
+
+func Test(t *testing.T) {
+	flag.Set("static", "../../static")
+	server, err := newServer(context.Background(), []string{"../../internal/fetch/testdata/has_go_mod"}, false)
+	if err != nil {
+		t.Fatal(err)
+	}
+	mux := http.NewServeMux()
+	server.Install(mux.Handle, nil, nil)
+	w := httptest.NewRecorder()
+
+	mux.ServeHTTP(w, httptest.NewRequest("GET", "/example.com/testmod", nil))
+	if w.Code != http.StatusOK {
+		t.Errorf("%q: got status code = %d, want %d", "/testmod", w.Code, http.StatusOK)
+	}
+}
diff --git a/internal/fetch/fetchlocal_test.go b/internal/fetch/fetchlocal_test.go
index 914c052..6cd4f77 100644
--- a/internal/fetch/fetchlocal_test.go
+++ b/internal/fetch/fetchlocal_test.go
@@ -16,7 +16,7 @@
 	if err != nil {
 		t.Fatal(err)
 	}
-	if want := "testmod"; g.modulePath != want {
+	if want := "example.com/testmod"; g.modulePath != want {
 		t.Errorf("got %q, want %q", g.modulePath, want)
 	}
 
diff --git a/internal/fetch/testdata/has_go_mod/go.mod b/internal/fetch/testdata/has_go_mod/go.mod
index c5553d5..c390929 100644
--- a/internal/fetch/testdata/has_go_mod/go.mod
+++ b/internal/fetch/testdata/has_go_mod/go.mod
@@ -1 +1 @@
-module testmod
+module example.com/testmod
diff --git a/internal/localdatasource/datasource.go b/internal/localdatasource/datasource.go
index 0188e34..bc08c21 100644
--- a/internal/localdatasource/datasource.go
+++ b/internal/localdatasource/datasource.go
@@ -16,10 +16,12 @@
 	"path/filepath"
 	"strings"
 	"sync"
+	"time"
 
 	"golang.org/x/pkgsite/internal"
 	"golang.org/x/pkgsite/internal/derrors"
 	"golang.org/x/pkgsite/internal/fetch"
+	"golang.org/x/pkgsite/internal/log"
 	"golang.org/x/pkgsite/internal/source"
 )
 
@@ -81,7 +83,12 @@
 
 // fetch fetches a module using the configured ModuleGetters.
 // It tries each getter in turn until it finds one that has the module.
-func (ds *DataSource) fetch(ctx context.Context, modulePath, version string) (*internal.Module, error) {
+func (ds *DataSource) fetch(ctx context.Context, modulePath, version string) (_ *internal.Module, err error) {
+	log.Infof(ctx, "local DataSource: fetching %s@%s", modulePath, version)
+	start := time.Now()
+	defer func() {
+		log.Infof(ctx, "local DataSource: fetched %s@%s in %s with error %v", modulePath, version, time.Since(start), err)
+	}()
 	for _, g := range ds.getters {
 		fr := fetch.FetchModule(ctx, modulePath, version, g, ds.sourceClient)
 		if fr.Error == nil {
