...

Source file src/github.com/shurcooL/vfsgen/test/test_vfsdata_test.go

Documentation: github.com/shurcooL/vfsgen/test

     1  // Code generated by vfsgen; DO NOT EDIT.
     2  
     3  package test_test
     4  
     5  import (
     6  	"bytes"
     7  	"compress/gzip"
     8  	"fmt"
     9  	"io"
    10  	"net/http"
    11  	"os"
    12  	pathpkg "path"
    13  	"time"
    14  )
    15  
    16  // assets statically implements the virtual filesystem provided to vfsgen.
    17  var assets = func() http.FileSystem {
    18  	fs := vfsgen۰FS{
    19  		"/": &vfsgen۰DirInfo{
    20  			name:    "/",
    21  			modTime: time.Time{},
    22  		},
    23  		"/folderA": &vfsgen۰DirInfo{
    24  			name:    "folderA",
    25  			modTime: time.Time{},
    26  		},
    27  		"/folderA/file1.txt": &vfsgen۰FileInfo{
    28  			name:    "file1.txt",
    29  			modTime: time.Time{},
    30  			content: []byte("\x53\x74\x75\x66\x66\x20\x69\x6e\x20\x2f\x66\x6f\x6c\x64\x65\x72\x41\x2f\x66\x69\x6c\x65\x31\x2e\x74\x78\x74\x2e"),
    31  		},
    32  		"/folderA/file2.txt": &vfsgen۰FileInfo{
    33  			name:    "file2.txt",
    34  			modTime: time.Time{},
    35  			content: []byte("\x53\x74\x75\x66\x66\x20\x69\x6e\x20\x2f\x66\x6f\x6c\x64\x65\x72\x41\x2f\x66\x69\x6c\x65\x32\x2e\x74\x78\x74\x2e"),
    36  		},
    37  		"/folderB": &vfsgen۰DirInfo{
    38  			name:    "folderB",
    39  			modTime: time.Time{},
    40  		},
    41  		"/folderB/folderC": &vfsgen۰DirInfo{
    42  			name:    "folderC",
    43  			modTime: time.Time{},
    44  		},
    45  		"/folderB/folderC/file3.txt": &vfsgen۰FileInfo{
    46  			name:    "file3.txt",
    47  			modTime: time.Time{},
    48  			content: []byte("\x53\x74\x75\x66\x66\x20\x69\x6e\x20\x2f\x66\x6f\x6c\x64\x65\x72\x42\x2f\x66\x6f\x6c\x64\x65\x72\x43\x2f\x66\x69\x6c\x65\x33\x2e\x74\x78\x74\x2e"),
    49  		},
    50  		"/not-worth-compressing-file.txt": &vfsgen۰FileInfo{
    51  			name:    "not-worth-compressing-file.txt",
    52  			modTime: time.Time{},
    53  			content: []byte("\x49\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x68\x65\x72\x65\x2e"),
    54  		},
    55  		"/sample-file.txt": &vfsgen۰CompressedFileInfo{
    56  			name:             "sample-file.txt",
    57  			modTime:          time.Time{},
    58  			uncompressedSize: 189,
    59  
    60  			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x0a\xc9\xc8\x2c\x56\x48\xcb\xcc\x49\x55\x48\xce\xcf\x2d\x28\x4a\x2d\x2e\x4e\x2d\x56\x28\x4f\xcd\xc9\xd1\x53\x70\xca\x49\x1c\xd4\x20\x43\x11\x10\x00\x00\xff\xff\xe7\x47\x81\x3a\xbd\x00\x00\x00"),
    61  		},
    62  	}
    63  	fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
    64  		fs["/folderA"].(os.FileInfo),
    65  		fs["/folderB"].(os.FileInfo),
    66  		fs["/not-worth-compressing-file.txt"].(os.FileInfo),
    67  		fs["/sample-file.txt"].(os.FileInfo),
    68  	}
    69  	fs["/folderA"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
    70  		fs["/folderA/file1.txt"].(os.FileInfo),
    71  		fs["/folderA/file2.txt"].(os.FileInfo),
    72  	}
    73  	fs["/folderB"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
    74  		fs["/folderB/folderC"].(os.FileInfo),
    75  	}
    76  	fs["/folderB/folderC"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
    77  		fs["/folderB/folderC/file3.txt"].(os.FileInfo),
    78  	}
    79  
    80  	return fs
    81  }()
    82  
    83  type vfsgen۰FS map[string]interface{}
    84  
    85  func (fs vfsgen۰FS) Open(path string) (http.File, error) {
    86  	path = pathpkg.Clean("/" + path)
    87  	f, ok := fs[path]
    88  	if !ok {
    89  		return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist}
    90  	}
    91  
    92  	switch f := f.(type) {
    93  	case *vfsgen۰CompressedFileInfo:
    94  		gr, err := gzip.NewReader(bytes.NewReader(f.compressedContent))
    95  		if err != nil {
    96  			// This should never happen because we generate the gzip bytes such that they are always valid.
    97  			panic("unexpected error reading own gzip compressed bytes: " + err.Error())
    98  		}
    99  		return &vfsgen۰CompressedFile{
   100  			vfsgen۰CompressedFileInfo: f,
   101  			gr:                        gr,
   102  		}, nil
   103  	case *vfsgen۰FileInfo:
   104  		return &vfsgen۰File{
   105  			vfsgen۰FileInfo: f,
   106  			Reader:          bytes.NewReader(f.content),
   107  		}, nil
   108  	case *vfsgen۰DirInfo:
   109  		return &vfsgen۰Dir{
   110  			vfsgen۰DirInfo: f,
   111  		}, nil
   112  	default:
   113  		// This should never happen because we generate only the above types.
   114  		panic(fmt.Sprintf("unexpected type %T", f))
   115  	}
   116  }
   117  
   118  // vfsgen۰CompressedFileInfo is a static definition of a gzip compressed file.
   119  type vfsgen۰CompressedFileInfo struct {
   120  	name              string
   121  	modTime           time.Time
   122  	compressedContent []byte
   123  	uncompressedSize  int64
   124  }
   125  
   126  func (f *vfsgen۰CompressedFileInfo) Readdir(count int) ([]os.FileInfo, error) {
   127  	return nil, fmt.Errorf("cannot Readdir from file %s", f.name)
   128  }
   129  func (f *vfsgen۰CompressedFileInfo) Stat() (os.FileInfo, error) { return f, nil }
   130  
   131  func (f *vfsgen۰CompressedFileInfo) GzipBytes() []byte {
   132  	return f.compressedContent
   133  }
   134  
   135  func (f *vfsgen۰CompressedFileInfo) Name() string       { return f.name }
   136  func (f *vfsgen۰CompressedFileInfo) Size() int64        { return f.uncompressedSize }
   137  func (f *vfsgen۰CompressedFileInfo) Mode() os.FileMode  { return 0444 }
   138  func (f *vfsgen۰CompressedFileInfo) ModTime() time.Time { return f.modTime }
   139  func (f *vfsgen۰CompressedFileInfo) IsDir() bool        { return false }
   140  func (f *vfsgen۰CompressedFileInfo) Sys() interface{}   { return nil }
   141  
   142  // vfsgen۰CompressedFile is an opened compressedFile instance.
   143  type vfsgen۰CompressedFile struct {
   144  	*vfsgen۰CompressedFileInfo
   145  	gr      *gzip.Reader
   146  	grPos   int64 // Actual gr uncompressed position.
   147  	seekPos int64 // Seek uncompressed position.
   148  }
   149  
   150  func (f *vfsgen۰CompressedFile) Read(p []byte) (n int, err error) {
   151  	if f.grPos > f.seekPos {
   152  		// Rewind to beginning.
   153  		err = f.gr.Reset(bytes.NewReader(f.compressedContent))
   154  		if err != nil {
   155  			return 0, err
   156  		}
   157  		f.grPos = 0
   158  	}
   159  	if f.grPos < f.seekPos {
   160  		// Fast-forward.
   161  		_, err = io.CopyN(io.Discard, f.gr, f.seekPos-f.grPos)
   162  		if err != nil {
   163  			return 0, err
   164  		}
   165  		f.grPos = f.seekPos
   166  	}
   167  	n, err = f.gr.Read(p)
   168  	f.grPos += int64(n)
   169  	f.seekPos = f.grPos
   170  	return n, err
   171  }
   172  func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) {
   173  	switch whence {
   174  	case io.SeekStart:
   175  		f.seekPos = 0 + offset
   176  	case io.SeekCurrent:
   177  		f.seekPos += offset
   178  	case io.SeekEnd:
   179  		f.seekPos = f.uncompressedSize + offset
   180  	default:
   181  		panic(fmt.Errorf("invalid whence value: %v", whence))
   182  	}
   183  	return f.seekPos, nil
   184  }
   185  func (f *vfsgen۰CompressedFile) Close() error {
   186  	return f.gr.Close()
   187  }
   188  
   189  // vfsgen۰FileInfo is a static definition of an uncompressed file (because it's not worth gzip compressing).
   190  type vfsgen۰FileInfo struct {
   191  	name    string
   192  	modTime time.Time
   193  	content []byte
   194  }
   195  
   196  func (f *vfsgen۰FileInfo) Readdir(count int) ([]os.FileInfo, error) {
   197  	return nil, fmt.Errorf("cannot Readdir from file %s", f.name)
   198  }
   199  func (f *vfsgen۰FileInfo) Stat() (os.FileInfo, error) { return f, nil }
   200  
   201  func (f *vfsgen۰FileInfo) NotWorthGzipCompressing() {}
   202  
   203  func (f *vfsgen۰FileInfo) Name() string       { return f.name }
   204  func (f *vfsgen۰FileInfo) Size() int64        { return int64(len(f.content)) }
   205  func (f *vfsgen۰FileInfo) Mode() os.FileMode  { return 0444 }
   206  func (f *vfsgen۰FileInfo) ModTime() time.Time { return f.modTime }
   207  func (f *vfsgen۰FileInfo) IsDir() bool        { return false }
   208  func (f *vfsgen۰FileInfo) Sys() interface{}   { return nil }
   209  
   210  // vfsgen۰File is an opened file instance.
   211  type vfsgen۰File struct {
   212  	*vfsgen۰FileInfo
   213  	*bytes.Reader
   214  }
   215  
   216  func (f *vfsgen۰File) Close() error {
   217  	return nil
   218  }
   219  
   220  // vfsgen۰DirInfo is a static definition of a directory.
   221  type vfsgen۰DirInfo struct {
   222  	name    string
   223  	modTime time.Time
   224  	entries []os.FileInfo
   225  }
   226  
   227  func (d *vfsgen۰DirInfo) Read([]byte) (int, error) {
   228  	return 0, fmt.Errorf("cannot Read from directory %s", d.name)
   229  }
   230  func (d *vfsgen۰DirInfo) Close() error               { return nil }
   231  func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil }
   232  
   233  func (d *vfsgen۰DirInfo) Name() string       { return d.name }
   234  func (d *vfsgen۰DirInfo) Size() int64        { return 0 }
   235  func (d *vfsgen۰DirInfo) Mode() os.FileMode  { return 0755 | os.ModeDir }
   236  func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime }
   237  func (d *vfsgen۰DirInfo) IsDir() bool        { return true }
   238  func (d *vfsgen۰DirInfo) Sys() interface{}   { return nil }
   239  
   240  // vfsgen۰Dir is an opened dir instance.
   241  type vfsgen۰Dir struct {
   242  	*vfsgen۰DirInfo
   243  	pos int // Position within entries for Seek and Readdir.
   244  }
   245  
   246  func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) {
   247  	if offset == 0 && whence == io.SeekStart {
   248  		d.pos = 0
   249  		return 0, nil
   250  	}
   251  	return 0, fmt.Errorf("unsupported Seek in directory %s", d.name)
   252  }
   253  
   254  func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) {
   255  	if d.pos >= len(d.entries) && count > 0 {
   256  		return nil, io.EOF
   257  	}
   258  	if count <= 0 || count > len(d.entries)-d.pos {
   259  		count = len(d.entries) - d.pos
   260  	}
   261  	e := d.entries[d.pos : d.pos+count]
   262  	d.pos += count
   263  	return e, nil
   264  }
   265  

View as plain text