github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/08_file/demo/demo_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io/fs"
     6  	"os"
     7  	"regexp"
     8  	"strconv"
     9  	"strings"
    10  	"testing"
    11  	"text/template"
    12  	"time"
    13  )
    14  
    15  func TestRm(t *testing.T) {
    16  	os.Chdir("ver_1.6.22.80")
    17  	fn := "ver_1.6.22.80.zip"
    18  	if _, err := os.Stat(fn); err == nil {
    19  		os.Remove(fn)
    20  	}
    21  }
    22  
    23  func TestFileName(t *testing.T) {
    24  	dir := "ver_1.6.22.80"
    25  	zipFile := "ver_1.6.22.80.zip"
    26  	os.Chdir(dir)
    27  	listFile := listDir("./", func(f fs.FileInfo) bool {
    28  		if f.IsDir() {
    29  			return false
    30  		}
    31  		if strings.HasSuffix(f.Name(), "cache.manifest") || f.Name() == zipFile {
    32  			return false
    33  		}
    34  		return true
    35  	})
    36  	t.Log(len(listFile))
    37  	//for _, fName := range listFile {
    38  	//	t.Log(fName)
    39  	//}
    40  
    41  	compressZip(zipFile, listFile...)
    42  	md5Str, sz, err := hashFileMd5AndSize(zipFile)
    43  	if err != nil {
    44  		t.Error(err)
    45  	}
    46  	t.Log(md5Str, sz)
    47  
    48  }
    49  
    50  func TestHashFileMd5(t *testing.T) {
    51  
    52  	md5Str, sz, err := hashFileMd5AndSize("./ver_1.6.22.80.zip")
    53  	if err != nil {
    54  		t.Error(err)
    55  	}
    56  	t.Log(md5Str, sz)
    57  }
    58  
    59  //func TestLuaParse(t *testing.T) {
    60  //	L := lua.NewState()
    61  //	defer L.Close()
    62  //	if err := L.DoFile("version.manifest"); err != nil {
    63  //		t.Error(err)
    64  //	}
    65  //
    66  //	lv := L.Get(-1)
    67  //	if tbl, ok := lv.(*lua.LTable); ok {
    68  //		// lv is LTable
    69  //		//tbl.ForEach(tableCb
    70  //		fmt.Println(tbl.RawGetString("updateCode").String())
    71  //		//stageTbl := tbl.RawGetString("stage")
    72  //	}
    73  //}
    74  //
    75  //func tableCb(k, val lua.LValue) {
    76  //	if tab, ok := val.(*lua.LTable); ok {
    77  //		tab.ForEach(tableCb)
    78  //	} else {
    79  //		fmt.Println(k, val)
    80  //	}
    81  //}
    82  
    83  func TestReadLine(t *testing.T) {
    84  	//  (\w+)\s*=\s*"([\w|_|\.|\d|]+)"
    85  	re := regexp.MustCompile(`(\w+)\s*=\s*"([\w|_|\.|\d|]+)"`)
    86  	err := readFileLine("version.manifest", func(line string) {
    87  		submatchArr := re.FindAllStringSubmatch(line, -1)
    88  		if len(submatchArr) > 0 {
    89  			t.Logf("%v", submatchArr)
    90  		}
    91  	})
    92  	if err != nil {
    93  		t.Fatal(err)
    94  	}
    95  }
    96  
    97  func TestReadVersionManifest(t *testing.T) {
    98  	v, err := readVersionManifest("version.manifest")
    99  	if err != nil {
   100  		t.Fatal(err)
   101  	}
   102  	v.UpdateCode = "2021091002"
   103  	luaTemplate := template.Must(template.New("").Parse(`
   104  local m={
   105  	updateCode = "{{.UpdateCode}}",
   106  	stage={
   107          {{- range .Stage }}
   108  {{"\t\t"}}{name="{{.Name}}",updateCode="{{.UpdateCode}}",code="{{.Code}}",size="{{.Size}}}"},
   109  		{{- end }}
   110  	}
   111  }
   112  return m
   113  `))
   114  	err = luaTemplate.Execute(os.Stdout, v)
   115  	if err != nil {
   116  		t.Fatal(err)
   117  	}
   118  }
   119  
   120  func TestCode(t *testing.T) {
   121  	code := "2021102501"
   122  	sz := len(code)
   123  	dateStr := string(code[:sz-2])
   124  	vStr := string(code[sz-2:])
   125  	i, err := strconv.Atoi(vStr)
   126  	if err != nil {
   127  		t.Error(err)
   128  	}
   129  	i++
   130  	now := time.Now()
   131  	dateStr = now.Format("20060102")
   132  	newcode := fmt.Sprintf("%s%02d", dateStr, i)
   133  	t.Logf("date:%s version:%s newVersion:%s", dateStr, vStr, newcode)
   134  	var ssz int64 = 100000
   135  	t.Log(strconv.FormatInt(ssz, 10))
   136  
   137  }