.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / mvdan.cc / xurls / v2@v2.2.0 / cmd / xurls / main_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/mvdan.cc/xurls/v2@v2.2.0/cmd/xurls/main_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/mvdan.cc/xurls/v2@v2.2.0/cmd/xurls/main_test.go
new file mode 100644 (file)
index 0000000..043d277
--- /dev/null
@@ -0,0 +1,71 @@
+// Copyright (c) 2019, Daniel Martí <mvdan@mvdan.cc>
+// See LICENSE for licensing information
+
+package main
+
+import (
+       "context"
+       "fmt"
+       "io/ioutil"
+       "net"
+       "net/http"
+       "os"
+       "path/filepath"
+       "testing"
+
+       "github.com/rogpeppe/go-internal/testscript"
+)
+
+func TestMain(m *testing.M) {
+       os.Exit(testscript.RunMain(m, map[string]func() int{
+               "xurls": main1,
+       }))
+}
+
+func TestScripts(t *testing.T) {
+       t.Parallel()
+       testscript.Run(t, testscript.Params{
+               Dir: filepath.Join("testdata", "scripts"),
+               Setup: func(env *testscript.Env) error {
+                       mux := http.NewServeMux()
+                       mux.HandleFunc("/plain", func(w http.ResponseWriter, r *http.Request) {
+                               fmt.Fprintf(w, "plaintext")
+                       })
+                       mux.HandleFunc("/redir-1", func(w http.ResponseWriter, r *http.Request) {
+                               http.Redirect(w, r, "/plain", http.StatusMovedPermanently)
+                       })
+                       mux.HandleFunc("/redir-2", func(w http.ResponseWriter, r *http.Request) {
+                               http.Redirect(w, r, "/redir-1", http.StatusMovedPermanently)
+                       })
+                       ln, err := net.Listen("tcp", ":0")
+                       if err != nil {
+                               return err
+                       }
+                       server := &http.Server{Handler: mux}
+                       go server.Serve(ln)
+                       env.Vars = append(env.Vars, "SERVER=http://"+ln.Addr().String())
+                       env.Defer(func() {
+                               if err := server.Shutdown(context.TODO()); err != nil {
+                                       t.Fatal(err)
+                               }
+                       })
+                       return nil
+               },
+               Cmds: map[string]func(ts *testscript.TestScript, neg bool, args []string){
+                       "expand": func(ts *testscript.TestScript, neg bool, args []string) {
+                               if neg {
+                                       ts.Fatalf("unsupported: ! expand")
+                               }
+                               if len(args) == 0 {
+                                       ts.Fatalf("usage: expand file...")
+                               }
+                               for _, arg := range args {
+                                       data := ts.ReadFile(arg)
+                                       data = os.Expand(data, ts.Getenv)
+                                       err := ioutil.WriteFile(ts.MkAbs(arg), []byte(data), 0666)
+                                       ts.Check(err)
+                               }
+                       },
+               },
+       })
+}