github.com/traefik/yaegi@v0.15.1/example/fs/fs_test.go (about)

     1  package fs1
     2  
     3  import (
     4  	"testing"
     5  	"testing/fstest" // only available from 1.16.
     6  
     7  	"github.com/traefik/yaegi/interp"
     8  	"github.com/traefik/yaegi/stdlib"
     9  )
    10  
    11  var testFilesystem = fstest.MapFS{
    12  	"main.go": &fstest.MapFile{
    13  		Data: []byte(`package main
    14  
    15  import (
    16  	"foo/bar"
    17  	"./localfoo"
    18  )
    19  
    20  func main() {
    21  	bar.PrintSomething()
    22  	localfoo.PrintSomethingElse()
    23  }
    24  `),
    25  	},
    26  	"_pkg/src/foo/bar/bar.go": &fstest.MapFile{
    27  		Data: []byte(`package bar
    28  
    29  import (
    30  	"fmt"
    31  )
    32  
    33  func PrintSomething() {
    34  	fmt.Println("I am a virtual filesystem printing something from _pkg/src/foo/bar/bar.go!")
    35  }
    36  `),
    37  	},
    38  	"localfoo/foo.go": &fstest.MapFile{
    39  		Data: []byte(`package localfoo
    40  
    41  import (
    42  	"fmt"
    43  )
    44  
    45  func PrintSomethingElse() {
    46  	fmt.Println("I am virtual filesystem printing else from localfoo/foo.go!")
    47  }
    48  `),
    49  	},
    50  }
    51  
    52  func TestFilesystemMapFS(t *testing.T) {
    53  	i := interp.New(interp.Options{
    54  		GoPath:               "./_pkg",
    55  		SourcecodeFilesystem: testFilesystem,
    56  	})
    57  	if err := i.Use(stdlib.Symbols); err != nil {
    58  		t.Fatal(err)
    59  	}
    60  
    61  	_, err := i.EvalPath(`main.go`)
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  }