How to use runCmd method of main Package

Best Syzkaller code snippet using main.runCmd

main_test.go

Source:main_test.go Github

copy

Full Screen

...20var logger *logrus.Logger21func init() {22 flag.BoolVar(&debug, "debug", false, "Set to have debug logging for tests.")23}24func runCmd(cmdLine string) (string, error) {25 logger.Debugf("runCmd: %s", cmdLine)26 cmd := exec.Command("/bin/bash", "-c", cmdLine)27 stdout, err := cmd.CombinedOutput()28 logger.Debugf("result: %s", string(stdout))29 return string(stdout), err30}31func createGitRepo(t *testing.T) string {32 d := t.TempDir()33 os.Chdir(d)34 runCmd("git init -b main")35 return d36}37func unzipBuf(data string) string {38 gz, err := gzip.NewReader(bytes.NewReader([]byte(data)))39 if err != nil {40 log.Fatal(err)41 }42 buf, err := ioutil.ReadAll(gz)43 if err != nil {44 log.Fatal(err)45 }46 if err := gz.Close(); err != nil {47 log.Fatal(err)48 }49 return string(buf)50}51type P4Test struct {52 startDir string53 p4d string54 port string55 testRoot string56 serverRoot string57 clientRoot string58}59func MakeP4Test(startDir string) *P4Test {60 var err error61 p4t := &P4Test{}62 p4t.startDir = startDir63 if err != nil {64 panic(err)65 }66 p4t.testRoot = filepath.Join(p4t.startDir, "testroot")67 p4t.serverRoot = filepath.Join(p4t.testRoot, "server")68 p4t.clientRoot = filepath.Join(p4t.testRoot, "client")69 p4t.ensureDirectories()70 p4t.p4d = "p4d"71 p4t.port = fmt.Sprintf("rsh:%s -r \"%s\" -L log -vserver=3 -i", p4t.p4d, p4t.serverRoot)72 os.Chdir(p4t.clientRoot)73 p4config := filepath.Join(p4t.startDir, os.Getenv("P4CONFIG"))74 writeToFile(p4config, fmt.Sprintf("P4PORT=%s", p4t.port))75 return p4t76}77func (p4t *P4Test) ensureDirectories() {78 for _, d := range []string{p4t.serverRoot, p4t.clientRoot} {79 err := os.MkdirAll(d, 0777)80 if err != nil {81 fmt.Fprintf(os.Stderr, "Failed to create %s: %v", d, err)82 }83 }84}85func (p4t *P4Test) cleanupTestTree() {86 os.Chdir(p4t.startDir)87 err := os.RemoveAll(p4t.testRoot)88 if err != nil {89 fmt.Fprintf(os.Stderr, "Failed to remove %s: %v", p4t.startDir, err)90 }91}92func writeToFile(fname, contents string) {93 f, err := os.Create(fname)94 if err != nil {95 panic(err)96 }97 defer f.Close()98 fmt.Fprint(f, contents)99 if err != nil {100 panic(err)101 }102}103func appendToFile(fname, contents string) {104 f, err := os.OpenFile(fname, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)105 if err != nil {106 panic(err)107 }108 defer f.Close()109 fmt.Fprint(f, contents)110 if err != nil {111 panic(err)112 }113}114func writeToTempFile(contents string) string {115 f, err := os.CreateTemp("", "*.txt")116 if err != nil {117 panic(err)118 }119 defer f.Close()120 fmt.Fprint(f, contents)121 if err != nil {122 fmt.Println(err)123 }124 return f.Name()125}126func createLogger() *logrus.Logger {127 if logger != nil {128 return logger129 }130 logger = logrus.New()131 logger.Level = logrus.InfoLevel132 if debug {133 logger.Level = logrus.DebugLevel134 }135 return logger136}137func runTransferWithDump(t *testing.T, logger *logrus.Logger, output string, opts *GitParserOptions) string {138 g := NewGitP4Transfer(logger)139 g.testInput = output140 p4t := MakeP4Test(t.TempDir())141 if opts != nil {142 opts.archiveRoot = p4t.serverRoot143 opts.importDepot = "import"144 opts.defaultBranch = "main"145 } else {146 opts = &GitParserOptions{archiveRoot: p4t.serverRoot, importDepot: "import", defaultBranch: "main"}147 }148 commitChan := g.GitParse(*opts)149 commits := make([]GitCommit, 0)150 // just read all commits and test them151 for c := range commitChan {152 commits = append(commits, c)153 }154 buf := new(bytes.Buffer)155 os.Chdir(p4t.serverRoot)156 logger.Debugf("P4D serverRoot: %s", p4t.serverRoot)157 j := journal.Journal{}158 j.SetWriter(buf)159 j.WriteHeader()160 for _, c := range commits {161 j.WriteChange(c.commit.Mark, c.commit.Msg, int(c.commit.Author.Time.Unix()))162 for _, f := range c.files {163 f.CreateArchiveFile(p4t.serverRoot, g.blobFileMatcher, c.commit.Mark)164 f.WriteJournal(&j, &c)165 }166 }167 jnl := filepath.Join(p4t.serverRoot, "jnl.0")168 writeToFile(jnl, buf.String())169 runCmd("p4d -r . -jr jnl.0")170 runCmd("p4d -r . -J journal -xu")171 runCmd("p4 storage -R")172 runCmd("p4 storage -r")173 runCmd("p4 storage -w")174 // assert.Equal(t, nil, err)175 // assert.Equal(t, "Phase 1 of the storage upgrade has finished.\n", result)176 return p4t.serverRoot177}178func runTransfer(t *testing.T, logger *logrus.Logger) string {179 // fast-export with rename detection implemented180 output, err := runCmd("git fast-export --all -M")181 if err != nil {182 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)183 }184 return runTransferWithDump(t, logger, output, nil)185}186func runTransferOpts(t *testing.T, logger *logrus.Logger, opts *GitParserOptions) string {187 // fast-export with rename detection implemented188 output, err := runCmd("git fast-export --all -M")189 if err != nil {190 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)191 }192 return runTransferWithDump(t, logger, output, opts)193}194func TestAdd(t *testing.T) {195 logger := createLogger()196 logger.Debugf("======== Test: %s", t.Name())197 d := createGitRepo(t)198 os.Chdir(d)199 logger.Debugf("Git repo: %s", d)200 src := "src.txt"201 srcContents1 := "contents\n"202 writeToFile(src, srcContents1)203 runCmd("git add .")204 runCmd("git commit -m initial")205 // fast-export with rename detection implemented206 output, err := runCmd("git fast-export --all -M")207 if err != nil {208 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)209 }210 logger.Debugf("Export file:\n%s", output)211 p4t := MakeP4Test(t.TempDir())212 os.Chdir(p4t.serverRoot)213 logger.Debugf("P4D serverRoot: %s", p4t.serverRoot)214 g := NewGitP4Transfer(logger)215 g.testInput = output216 opts := GitParserOptions{archiveRoot: p4t.serverRoot, importDepot: "import", defaultBranch: "main"}217 commitChan := g.GitParse(opts)218 commits := make([]GitCommit, 0)219 // just read all commits and test them220 for c := range commitChan {221 commits = append(commits, c)222 }223 assert.Equal(t, 1, len(commits))224 c := commits[0]225 assert.Equal(t, 2, c.commit.Mark)226 assert.Equal(t, "refs/heads/main", c.commit.Ref)227 assert.Equal(t, 1, len(c.files))228 f := c.files[0]229 assert.Equal(t, modify, f.action)230 assert.Equal(t, src, f.name)231 buf := new(bytes.Buffer)232 j := journal.Journal{}233 j.SetWriter(buf)234 j.WriteHeader()235 c = commits[0]236 j.WriteChange(c.commit.Mark, c.commit.Msg, int(c.commit.Author.Time.Unix()))237 f = c.files[0]238 j.WriteRev(f.depotFile, f.rev, f.p4action, f.fileType, c.commit.Mark,239 f.depotFile, c.commit.Mark, int(c.commit.Author.Time.Unix()))240 dt := c.commit.Author.Time.Unix()241 expectedJournal := fmt.Sprintf(`@pv@ 0 @db.depot@ @import@ 0 @subdir@ @import/...@ 242@pv@ 3 @db.domain@ @import@ 100 @@ @@ @@ @@ @git-user@ 0 0 0 1 @Created by git-user@ 243@pv@ 3 @db.user@ @git-user@ @git-user@@git-client@ @@ 0 0 @git-user@ @@ 0 @@ 0 244@pv@ 0 @db.view@ @git-client@ 0 0 @//git-client/...@ @//import/...@ 245@pv@ 3 @db.domain@ @git-client@ 99 @@ @/ws@ @@ @@ @git-user@ 0 0 0 1 @Created by git-user@ 246@pv@ 0 @db.desc@ 2 @initial247@ 248@pv@ 0 @db.change@ 2 2 @git-client@ @git-user@ %d 1 @initial249@ 250@rv@ 0 @db.counters@ @change@ 2 251@pv@ 3 @db.rev@ @//import/main/src.txt@ 1 3 0 2 %d %d 00000000000000000000000000000000 @//import/main/src.txt@ @1.2@ 3 252@pv@ 0 @db.revcx@ 2 @//import/main/src.txt@ 1 0 253`, dt, dt, dt)254 assert.Equal(t, expectedJournal, buf.String())255 jnl := filepath.Join(p4t.serverRoot, "jnl.0")256 writeToFile(jnl, expectedJournal)257 f.CreateArchiveFile(p4t.serverRoot, g.blobFileMatcher, c.commit.Mark)258 runCmd("p4d -r . -jr jnl.0")259 runCmd("p4d -r . -J journal -xu")260 runCmd("p4 storage -r")261 // assert.Equal(t, nil, err)262 // assert.Equal(t, "Phase 1 of the storage upgrade has finished.\n", result)263 result, err := runCmd("p4 files //...")264 assert.Equal(t, nil, err)265 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)266 result, err = runCmd("p4 verify -qu //...")267 assert.Equal(t, nil, err)268 assert.Equal(t, "", result)269 result, err = runCmd("p4 changes")270 assert.Equal(t, nil, err)271 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)272 result, err = runCmd("p4 changes //import/...")273 assert.Equal(t, nil, err)274 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)275 contents, err := runCmd("p4 print -q //import/main/src.txt#1")276 assert.Equal(t, nil, err)277 assert.Equal(t, srcContents1, contents)278}279func TestAddEdit(t *testing.T) {280 logger := createLogger()281 logger.Debugf("======== Test: %s", t.Name())282 d := createGitRepo(t)283 os.Chdir(d)284 logger.Debugf("Git repo: %s", d)285 src := "src.txt"286 srcContents1 := "contents\n"287 writeToFile(src, srcContents1)288 runCmd("git add .")289 runCmd("git commit -m initial")290 srcContents2 := "contents\nappended\n"291 writeToFile(src, srcContents2)292 runCmd("git add .")293 runCmd("git commit -m initial")294 r := runTransfer(t, logger)295 logger.Debugf("Server root: %s", r)296 result, err := runCmd("p4 files //...@2")297 assert.Equal(t, nil, err)298 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)299 result, err = runCmd("p4 print -q //import/main/src.txt#1")300 assert.Equal(t, nil, err)301 assert.Equal(t, srcContents1, result)302 result, err = runCmd("p4 files //...")303 assert.Equal(t, nil, err)304 assert.Equal(t, "//import/main/src.txt#2 - edit change 4 (text+C)\n", result)305 result, err = runCmd("p4 print -q //import/main/src.txt#2")306 assert.Equal(t, nil, err)307 assert.Equal(t, srcContents2, result)308 result, err = runCmd("p4 verify -qu //...")309 assert.Equal(t, "<nil>", fmt.Sprint(err))310 assert.Equal(t, "", result)311 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#2")312 assert.Equal(t, nil, err)313 assert.Regexp(t, `headType text\+C`, result)314 assert.Regexp(t, `lbrType text\+C`, result)315 assert.Regexp(t, `lbrPath .*/1.4.gz`, result)316 result, err = runCmd("p4 changes")317 assert.Equal(t, nil, err)318 assert.Regexp(t, `Change 4 on .* by git\-user@git\-client`, result)319 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)320 result, err = runCmd("p4 changes //import/...")321 assert.Equal(t, nil, err)322 assert.Regexp(t, `Change 4 on .* by git\-user@git\-client`, result)323 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)324 result, err = runCmd("p4 storage //import/...")325 assert.Equal(t, nil, err)326 assert.Regexp(t, `lbrType text\+C`, result)327 assert.Regexp(t, `lbrRev 1.2`, result)328 assert.Regexp(t, `lbrRev 1.4`, result)329}330func TestMaxCommits(t *testing.T) {331 logger := createLogger()332 logger.Debugf("======== Test: %s", t.Name())333 d := createGitRepo(t)334 os.Chdir(d)335 logger.Debugf("Git repo: %s", d)336 src := "src.txt"337 srcContents1 := "contents\n"338 writeToFile(src, srcContents1)339 runCmd("git add .")340 runCmd("git commit -m initial")341 srcContents2 := "contents\nappended\n"342 writeToFile(src, srcContents2)343 runCmd("git add .")344 runCmd("git commit -m initial")345 r := runTransferOpts(t, logger, &GitParserOptions{maxCommits: 1})346 logger.Debugf("Server root: %s", r)347 result, err := runCmd("p4 files //...")348 assert.Equal(t, nil, err)349 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)350 result, err = runCmd("p4 print -q //import/main/src.txt#1")351 assert.Equal(t, nil, err)352 assert.Equal(t, srcContents1, result)353 result, err = runCmd("p4 verify -qu //...")354 assert.Equal(t, "<nil>", fmt.Sprint(err))355 assert.Equal(t, "", result)356 result, err = runCmd("p4 fstat -Ob //import/main/src.txt")357 assert.Equal(t, nil, err)358 assert.Regexp(t, `headType text\+C`, result)359 assert.Regexp(t, `lbrType text\+C`, result)360 assert.Regexp(t, `lbrPath .*/1.2.gz`, result)361 result, err = runCmd("p4 changes")362 assert.Equal(t, nil, err)363 assert.NotRegexp(t, `Change 4 on .* by git\-user@git\-client`, result)364 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)365}366func TestAddSameFile(t *testing.T) {367 // Ensure single archive in git368 logger := createLogger()369 logger.Debugf("======== Test: %s", t.Name())370 d := createGitRepo(t)371 os.Chdir(d)372 logger.Debugf("Git repo: %s", d)373 file1 := "file1.txt"374 file2 := "file2.txt"375 contents1 := "contents\n"376 writeToFile(file1, contents1)377 writeToFile(file2, contents1)378 runCmd("git add .")379 runCmd("git commit -m initial")380 r := runTransfer(t, logger)381 logger.Debugf("Server root: %s", r)382 result, err := runCmd("p4 files //...@2")383 assert.Equal(t, nil, err)384 assert.Equal(t, `//import/main/file1.txt#1 - add change 2 (text+C)385//import/main/file2.txt#1 - add change 2 (text+C)386`, result)387 result, err = runCmd("p4 print -q //import/main/file1.txt#1")388 assert.Equal(t, nil, err)389 assert.Equal(t, contents1, result)390 result, err = runCmd("p4 print -q //import/main/file2.txt#1")391 assert.Equal(t, nil, err)392 assert.Equal(t, contents1, result)393 result, err = runCmd("p4 fstat -Ob //import/main/file1.txt#1")394 assert.Equal(t, nil, err)395 assert.Regexp(t, `headType text\+C`, result)396 assert.Regexp(t, `lbrType text\+C`, result)397 assert.Regexp(t, `lbrPath .*file1.txt,d/1.2.gz`, result)398 result, err = runCmd("p4 fstat -Ob //import/main/file2.txt#1")399 assert.Equal(t, nil, err)400 assert.Regexp(t, `headType text\+C`, result)401 assert.Regexp(t, `lbrType text\+C`, result)402 assert.Regexp(t, `lbrPath .*file1.txt,d/1.2.gz`, result)403}404func TestAddBinary(t *testing.T) {405 logger := createLogger()406 logger.Debugf("======== Test: %s", t.Name())407 d := createGitRepo(t)408 os.Chdir(d)409 logger.Debugf("Git repo: %s", d)410 src := "src.txt"411 srcContents1 := "contents\n"412 writeToFile(src, srcContents1)413 runCmd("gzip " + src)414 runCmd("git add .")415 runCmd("git commit -m initial")416 runTransfer(t, logger)417 result, err := runCmd("p4 files //...@2")418 assert.Equal(t, nil, err)419 assert.Equal(t, "//import/main/src.txt.gz#1 - add change 2 (binary+F)\n", result)420 result, err = runCmd("p4 verify -qu //...")421 assert.Equal(t, "<nil>", fmt.Sprint(err))422 assert.Equal(t, "", result)423 result, err = runCmd("p4 fstat -Ob //import/main/src.txt.gz#1")424 assert.Equal(t, nil, err)425 assert.Regexp(t, `headType binary\+F`, result)426 assert.Regexp(t, `lbrType binary\+F`, result)427 assert.Regexp(t, `(?m)lbrPath .*/1.2$`, result)428}429func TestAddEmpty(t *testing.T) {430 logger := createLogger()431 logger.Debugf("======== Test: %s", t.Name())432 d := createGitRepo(t)433 os.Chdir(d)434 logger.Debugf("Git repo: %s", d)435 src := "src.txt"436 writeToFile(src, "")437 runCmd("git add .")438 runCmd("git commit -m initial")439 runTransfer(t, logger)440 result, err := runCmd("p4 files //...")441 assert.Equal(t, nil, err)442 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)443 result, err = runCmd("p4 verify -qu //...")444 assert.Equal(t, "<nil>", fmt.Sprint(err))445 assert.Equal(t, "", result)446 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#1")447 assert.Equal(t, nil, err)448 assert.Regexp(t, `headType text\+C`, result)449 assert.Regexp(t, `lbrType text\+C`, result)450 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)451 result, err = runCmd("p4 fstat -Ol //import/main/src.txt#1")452 assert.Equal(t, nil, err)453 assert.Regexp(t, `headType text\+C`, result)454 assert.Regexp(t, `fileSize 0`, result)455}456func TestAddWildcard(t *testing.T) {457 logger := createLogger()458 logger.Debugf("======== Test: %s", t.Name())459 d := createGitRepo(t)460 os.Chdir(d)461 logger.Debugf("Git repo: %s", d)462 src := "src@wild.txt"463 srcContents1 := "contents\n"464 writeToFile(src, srcContents1)465 runCmd("git add .")466 runCmd("git commit -m initial")467 srcContents2 := "contents\nappended\n"468 writeToFile(src, srcContents2)469 runCmd("git add .")470 runCmd("git commit -m initial")471 r := runTransfer(t, logger)472 logger.Debugf("Server root: %s", r)473 result, err := runCmd("p4 files //...@2")474 assert.Equal(t, nil, err)475 assert.Equal(t, "//import/main/src%40wild.txt#1 - add change 2 (text+C)\n", result)476 result, err = runCmd("p4 print -q //import/main/src%40wild.txt#1")477 assert.Equal(t, nil, err)478 assert.Equal(t, srcContents1, result)479 result, err = runCmd("p4 files //...")480 assert.Equal(t, nil, err)481 assert.Equal(t, "//import/main/src%40wild.txt#2 - edit change 4 (text+C)\n", result)482 result, err = runCmd("p4 print -q //import/main/src%40wild.txt#2")483 assert.Equal(t, nil, err)484 assert.Equal(t, srcContents2, result)485 result, err = runCmd("p4 verify -qu //...")486 assert.Equal(t, "<nil>", fmt.Sprint(err))487 assert.Equal(t, "", result)488 result, err = runCmd("p4 fstat -Ob //import/main/src%40wild.txt#2")489 assert.Equal(t, nil, err)490 assert.Regexp(t, `headType text\+C`, result)491 assert.Regexp(t, `lbrType text\+C`, result)492 assert.Regexp(t, `lbrPath .*/1.4.gz`, result)493 result, err = runCmd("p4 changes")494 assert.Equal(t, nil, err)495 assert.Regexp(t, `Change 4 on .* by git\-user@git\-client`, result)496 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)497 result, err = runCmd("p4 changes //import/...")498 assert.Equal(t, nil, err)499 assert.Regexp(t, `Change 4 on .* by git\-user@git\-client`, result)500 assert.Regexp(t, `Change 2 on .* by git\-user@git\-client`, result)501 result, err = runCmd("p4 storage //import/...")502 assert.Equal(t, nil, err)503 assert.Regexp(t, `lbrType text\+C`, result)504 assert.Regexp(t, `lbrRev 1.2`, result)505 assert.Regexp(t, `lbrRev 1.4`, result)506}507func TestDeleteFile(t *testing.T) {508 logger := createLogger()509 logger.Debugf("======== Test: %s", t.Name())510 d := createGitRepo(t)511 os.Chdir(d)512 logger.Debugf("Git repo: %s", d)513 src := "src.txt"514 srcContents1 := "contents\n"515 writeToFile(src, srcContents1)516 runCmd("git add .")517 runCmd("git commit -m initial")518 runCmd("rm " + src)519 runCmd("git add .")520 runCmd("git commit -m deleted")521 runTransfer(t, logger)522 result, err := runCmd("p4 files //...@2")523 assert.Equal(t, nil, err)524 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)525 result, err = runCmd("p4 verify -qu //...")526 assert.Equal(t, "<nil>", fmt.Sprint(err))527 assert.Equal(t, "", result)528 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#1")529 assert.Equal(t, nil, err)530 assert.Regexp(t, `headType text\+C`, result)531 assert.Regexp(t, `lbrType text\+C`, result)532 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)533 result, err = runCmd("p4 files //...")534 assert.Equal(t, nil, err)535 assert.Equal(t, "//import/main/src.txt#2 - delete change 3 (text+C)\n", result)536 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#2")537 assert.Equal(t, nil, err)538 assert.Regexp(t, `headType text`, result)539 assert.NotRegexp(t, `lbrType text`, result)540 assert.NotRegexp(t, `(?m)lbrPath `, result)541}542func TestDeleteAdd(t *testing.T) {543 // Delete a file and add back again544 logger := createLogger()545 logger.Debugf("======== Test: %s", t.Name())546 d := createGitRepo(t)547 os.Chdir(d)548 logger.Debugf("Git repo: %s", d)549 src := "src.txt"550 srcContents1 := "contents\n"551 writeToFile(src, srcContents1)552 runCmd("git add .")553 runCmd("git commit -m initial")554 runCmd("rm " + src)555 runCmd("git add .")556 runCmd("git commit -m deleted")557 srcContents2 := "contents2\n"558 writeToFile(src, srcContents2)559 runCmd("git add .")560 runCmd("git commit -m added-back")561 runTransfer(t, logger)562 result, err := runCmd("p4 files //...@2")563 assert.Equal(t, nil, err)564 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)565 result, err = runCmd("p4 verify -qu //...")566 assert.Equal(t, "<nil>", fmt.Sprint(err))567 assert.Equal(t, "", result)568 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#1")569 assert.Equal(t, nil, err)570 assert.Regexp(t, `headType text\+C`, result)571 assert.Regexp(t, `lbrType text\+C`, result)572 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)573 result, err = runCmd("p4 files //...")574 assert.Equal(t, nil, err)575 assert.Equal(t, "//import/main/src.txt#3 - add change 5 (text+C)\n", result)576 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#2")577 assert.Equal(t, nil, err)578 assert.Regexp(t, `headType text\+C`, result)579 assert.NotRegexp(t, `lbrType text`, result)580 assert.NotRegexp(t, `(?m)lbrPath `, result)581 result, err = runCmd("p4 fstat -Ob //import/main/src.txt")582 assert.Equal(t, nil, err)583 assert.Regexp(t, `headType text\+C`, result)584 assert.Regexp(t, `lbrType text\+C`, result)585 assert.Regexp(t, `(?m)lbrPath .*/1.5.gz$`, result)586}587func TestRename(t *testing.T) {588 logger := createLogger()589 logger.Debugf("======== Test: %s", t.Name())590 d := createGitRepo(t)591 os.Chdir(d)592 logger.Debugf("Git repo: %s", d)593 src := "src.txt"594 targ := "targ.txt"595 srcContents1 := "contents\n"596 writeToFile(src, srcContents1)597 runCmd("git add .")598 runCmd("git commit -m initial")599 runCmd(fmt.Sprintf("mv %s %s", src, targ))600 runCmd("git add .")601 runCmd("git commit -m deleted")602 r := runTransfer(t, logger)603 logger.Debugf("Server root: %s", r)604 result, err := runCmd("p4 files //...@2")605 assert.Equal(t, nil, err)606 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)607 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#1")608 assert.Regexp(t, `headType text\+C`, result)609 assert.Equal(t, nil, err)610 result, err = runCmd("p4 files //...@3")611 assert.Equal(t, nil, err)612 assert.Equal(t, `//import/main/src.txt#2 - delete change 3 (text+C)613//import/main/targ.txt#1 - add change 3 (text+C)614`,615 result)616 result, err = runCmd("p4 fstat -Ob //import/main/targ.txt#1")617 assert.Regexp(t, `headType text\+C`, result)618 assert.Equal(t, nil, err)619 result, err = runCmd("p4 verify -qu //...")620 assert.Equal(t, "", result)621 assert.Equal(t, "<nil>", fmt.Sprint(err))622 result, err = runCmd("p4 fstat -Ob //import/main/targ.txt#1")623 assert.Equal(t, nil, err)624 assert.Regexp(t, `headType text\+C`, result)625 assert.Regexp(t, `lbrType text\+C`, result)626 assert.Regexp(t, `lbrFile //import/main/src.txt`, result)627 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)628}629func TestRename2(t *testing.T) {630 // Rename of a file with 2 revs631 logger := createLogger()632 logger.Debugf("======== Test: %s", t.Name())633 d := createGitRepo(t)634 os.Chdir(d)635 logger.Debugf("Git repo: %s", d)636 src := "src.txt"637 targ := "targ.txt"638 srcContents1 := "contents\n"639 writeToFile(src, srcContents1)640 runCmd("git add .")641 runCmd("git commit -m initial")642 srcContents2 := "contents2\n"643 writeToFile(src, srcContents2)644 runCmd("git add .")645 runCmd("git commit -m edited")646 runCmd(fmt.Sprintf("mv %s %s", src, targ))647 runCmd("git add .")648 runCmd("git commit -m deleted")649 r := runTransfer(t, logger)650 logger.Debugf("Server root: %s", r)651 result, err := runCmd("p4 files //...@2")652 assert.Equal(t, nil, err)653 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)654 result, err = runCmd("p4 fstat -Ob //import/main/src.txt#1")655 assert.Regexp(t, `headType text\+C`, result)656 assert.Equal(t, nil, err)657 result, err = runCmd("p4 files //...@4")658 assert.Equal(t, nil, err)659 assert.Equal(t, "//import/main/src.txt#2 - edit change 4 (text+C)\n", result)660 result, err = runCmd("p4 files //...")661 assert.Equal(t, nil, err)662 assert.Equal(t, `//import/main/src.txt#3 - delete change 5 (text+C)663//import/main/targ.txt#1 - add change 5 (text+C)664`,665 result)666 result, err = runCmd("p4 verify -qu //...")667 assert.Equal(t, "", result)668 assert.Equal(t, "<nil>", fmt.Sprint(err))669 result, err = runCmd("p4 fstat -Ob //import/main/targ.txt#1")670 assert.Equal(t, nil, err)671 assert.Regexp(t, `headType text\+C`, result)672 assert.Regexp(t, `lbrType text\+C`, result)673 assert.Regexp(t, `lbrFile //import/main/src.txt`, result)674 assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)675}676func TestRenameRename(t *testing.T) {677 // Rename of a file done twice678 logger := createLogger()679 logger.Debugf("======== Test: %s", t.Name())680 d := createGitRepo(t)681 os.Chdir(d)682 logger.Debugf("Git repo: %s", d)683 src := "src.txt"684 targ := "targ.txt"685 targ2 := "targ2.txt"686 srcContents1 := "contents\n"687 writeToFile(src, srcContents1)688 runCmd("git add .")689 runCmd("git commit -m initial")690 srcContents2 := "contents2\n"691 writeToFile(src, srcContents2)692 runCmd("git add .")693 runCmd("git commit -m edited")694 runCmd(fmt.Sprintf("mv %s %s", src, targ))695 runCmd("git add .")696 runCmd("git commit -m renamed")697 runCmd(fmt.Sprintf("mv %s %s", targ, targ2))698 runCmd("git add .")699 runCmd("git commit -m renamed-again")700 r := runTransfer(t, logger)701 logger.Debugf("Server root: %s", r)702 result, err := runCmd("p4 files //...@2")703 assert.Equal(t, nil, err)704 assert.Equal(t, "//import/main/src.txt#1 - add change 2 (text+C)\n", result)705 result, err = runCmd("p4 files //...@4")706 assert.Equal(t, nil, err)707 assert.Equal(t, "//import/main/src.txt#2 - edit change 4 (text+C)\n", result)708 result, err = runCmd("p4 files //...@5")709 assert.Equal(t, nil, err)710 assert.Equal(t, `//import/main/src.txt#3 - delete change 5 (text+C)711//import/main/targ.txt#1 - add change 5 (text+C)712`,713 result)714 result, err = runCmd("p4 files //...")715 assert.Equal(t, nil, err)716 assert.Equal(t, `//import/main/src.txt#3 - delete change 5 (text+C)717//import/main/targ.txt#2 - delete change 6 (text+C)718//import/main/targ2.txt#1 - add change 6 (text+C)719`,720 result)721 result, err = runCmd("p4 verify -qu //...")722 assert.Equal(t, "", result)723 assert.Equal(t, "<nil>", fmt.Sprint(err))724 result, err = runCmd("p4 fstat -Ob //import/main/targ.txt#1")725 assert.Equal(t, nil, err)726 assert.Regexp(t, `headType text\+C`, result)727 assert.Regexp(t, `lbrType text\+C`, result)728 assert.Regexp(t, `lbrFile //import/main/src.txt`, result)729 assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)730 result, err = runCmd("p4 fstat -Ob //import/main/targ2.txt#1")731 assert.Equal(t, nil, err)732 assert.Regexp(t, `headType text\+C`, result)733 assert.Regexp(t, `lbrType text\+C`, result)734 assert.Regexp(t, `lbrFile //import/main/src.txt`, result)735 assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)736}737func TestRenameDir(t *testing.T) {738 // Git rename of a dir consisting of multiple files - expand to constituent parts739 logger := createLogger()740 logger.Debugf("======== Test: %s", t.Name())741 d := createGitRepo(t)742 os.Chdir(d)743 logger.Debugf("Git repo: %s", d)744 src1 := filepath.Join("src", "file.txt")745 src2 := filepath.Join("src", "file2.txt")746 srcContents1 := "contents\n"747 runCmd("mkdir src")748 writeToFile(src1, srcContents1)749 writeToFile(src2, srcContents1)750 runCmd("git add .")751 runCmd("git commit -m initial")752 runCmd("git mv src targ")753 runCmd("git add .")754 runCmd("git commit -m moved")755 // fast-export with rename detection implemented - to tweak to directory rename756 output, err := runCmd("git fast-export --all -M")757 if err != nil {758 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)759 }760 logger.Debugf("Output: %s", output)761 lines := strings.Split(output, "\n")762 logger.Debugf("Len: %d", len(lines))763 newLines := lines[:len(lines)-4]764 logger.Debugf("Len new: %d", len(newLines))765 newLines = append(newLines, "R src targ")766 newLines = append(newLines, "")767 newOutput := strings.Join(newLines, "\n")768 logger.Debugf("Changed output: %s", newOutput)769 r := runTransferWithDump(t, logger, newOutput, nil)770 logger.Debugf("Server root: %s", r)771 result, err := runCmd("p4 files //...@2")772 assert.Equal(t, nil, err)773 assert.Equal(t, `//import/main/src/file.txt#1 - add change 2 (text+C)774//import/main/src/file2.txt#1 - add change 2 (text+C)775`, result)776 result, err = runCmd("p4 fstat -Ob //import/main/src/file.txt#1")777 assert.Regexp(t, `headType text\+C`, result)778 assert.Equal(t, nil, err)779 result, err = runCmd("p4 files //...@3")780 assert.Equal(t, nil, err)781 assert.Equal(t, `//import/main/src/file.txt#2 - delete change 3 (text+C)782//import/main/src/file2.txt#2 - delete change 3 (text+C)783//import/main/targ/file.txt#1 - add change 3 (text+C)784//import/main/targ/file2.txt#1 - add change 3 (text+C)785`,786 result)787 result, err = runCmd("p4 fstat -Ob //import/main/targ/file.txt#1")788 assert.Regexp(t, `headType text\+C`, result)789 assert.Equal(t, nil, err)790 result, err = runCmd("p4 verify -qu //...")791 assert.Equal(t, "", result)792 assert.Equal(t, "<nil>", fmt.Sprint(err))793 result, err = runCmd("p4 fstat -Ob //import/main/targ/file.txt#1")794 assert.Equal(t, nil, err)795 assert.Regexp(t, `headType text\+C`, result)796 assert.Regexp(t, `lbrType text\+C`, result)797 assert.Regexp(t, `lbrFile //import/main/src/file.txt`, result)798 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)799}800func TestRenameDirWithDelete(t *testing.T) {801 // Similar to TestRenameDir but with a deleted file that should not be renamed.802 logger := createLogger()803 logger.Debugf("======== Test: %s", t.Name())804 d := createGitRepo(t)805 os.Chdir(d)806 logger.Debugf("Git repo: %s", d)807 src1 := filepath.Join("src", "file.txt")808 src2 := filepath.Join("src", "file2.txt")809 srcContents1 := "contents\n"810 runCmd("mkdir src")811 writeToFile(src1, srcContents1)812 writeToFile(src2, srcContents1)813 runCmd("git add .")814 runCmd("git commit -m initial")815 runCmd("rm " + src1)816 runCmd("git add .")817 runCmd("git commit -m deleted")818 runCmd("git mv src targ")819 runCmd("git add .")820 runCmd("git commit -m moved-dir")821 // fast-export with rename detection implemented - to tweak to directory rename822 output, err := runCmd("git fast-export --all -M")823 if err != nil {824 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)825 }826 logger.Debugf("Output: %s", output)827 lines := strings.Split(output, "\n")828 logger.Debugf("Len: %d", len(lines))829 newLines := lines[:len(lines)-4]830 logger.Debugf("Len new: %d", len(newLines))831 newLines = append(newLines, "R src targ")832 newLines = append(newLines, "")833 newOutput := strings.Join(newLines, "\n")834 logger.Debugf("Changed output: %s", newOutput)835 r := runTransferWithDump(t, logger, newOutput, nil)836 logger.Debugf("Server root: %s", r)837 result, err := runCmd("p4 files //...@2")838 assert.Equal(t, nil, err)839 assert.Equal(t, `//import/main/src/file.txt#1 - add change 2 (text+C)840//import/main/src/file2.txt#1 - add change 2 (text+C)841`, result)842 result, err = runCmd("p4 files //...")843 assert.Equal(t, nil, err)844 assert.Equal(t, `//import/main/src/file.txt#2 - delete change 3 (text+C)845//import/main/src/file2.txt#2 - delete change 4 (text+C)846//import/main/targ/file2.txt#1 - add change 4 (text+C)847`,848 result)849 result, err = runCmd("p4 verify -qu //...")850 assert.Equal(t, "", result)851 assert.Equal(t, "<nil>", fmt.Sprint(err))852 result, err = runCmd("p4 fstat -Ob //import/main/targ/file2.txt#1")853 assert.Equal(t, nil, err)854 assert.Regexp(t, `headType text\+C`, result)855 assert.Regexp(t, `lbrType text\+C`, result)856 assert.Regexp(t, `lbrFile //import/main/src/file.txt`, result)857 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)858}859func TestDeleteDir(t *testing.T) {860 // Git rename of a dir consisting of multiple files - expand to constituent parts861 logger := createLogger()862 logger.Debugf("======== Test: %s", t.Name())863 d := createGitRepo(t)864 os.Chdir(d)865 logger.Debugf("Git repo: %s", d)866 src1 := filepath.Join("src", "file.txt")867 src2 := filepath.Join("src", "file2.txt")868 srcContents1 := "contents\n"869 runCmd("mkdir src")870 writeToFile(src1, srcContents1)871 writeToFile(src2, srcContents1)872 runCmd("git add .")873 runCmd("git commit -m initial")874 runCmd("git rm -r src")875 runCmd("git add .")876 runCmd("git commit -m deleted")877 // fast-export with rename detection implemented - to tweak to directory rename878 output, err := runCmd("git fast-export --all -M")879 if err != nil {880 t.Errorf("ERROR: Failed to git export '%s': %v\n", output, err)881 }882 logger.Debugf("Output: %s", output)883 lines := strings.Split(output, "\n")884 logger.Debugf("Len: %d", len(lines))885 newLines := lines[:len(lines)-4]886 logger.Debugf("Len new: %d", len(newLines))887 newLines = append(newLines, "D src")888 newLines = append(newLines, "")889 newOutput := strings.Join(newLines, "\n")890 logger.Debugf("Changed output: %s", newOutput)891 r := runTransferWithDump(t, logger, newOutput, nil)892 logger.Debugf("Server root: %s", r)893 result, err := runCmd("p4 files //...@2")894 assert.Equal(t, nil, err)895 assert.Equal(t, `//import/main/src/file.txt#1 - add change 2 (text+C)896//import/main/src/file2.txt#1 - add change 2 (text+C)897`, result)898 result, err = runCmd("p4 fstat -Ob //import/main/src/file.txt#1")899 assert.Regexp(t, `headType text\+C`, result)900 assert.Equal(t, nil, err)901 result, err = runCmd("p4 files //...")902 assert.Equal(t, nil, err)903 assert.Equal(t, `//import/main/src/file.txt#2 - delete change 3 (text+C)904//import/main/src/file2.txt#2 - delete change 3 (text+C)905`,906 result)907 result, err = runCmd("p4 verify -qu //...")908 assert.Equal(t, "", result)909 assert.Equal(t, "<nil>", fmt.Sprint(err))910 result, err = runCmd("p4 fstat -Ob //import/main/src/file.txt#2")911 assert.Equal(t, nil, err)912 assert.Regexp(t, `headType text\+C`, result)913 assert.NotRegexp(t, `lbrType`, result)914 assert.NotRegexp(t, `lbrFile`, result)915 assert.NotRegexp(t, `(?m)lbrPath`, result)916}917func TestBranch(t *testing.T) {918 logger := createLogger()919 logger.Debugf("======== Test: %s", t.Name())920 d := createGitRepo(t)921 os.Chdir(d)922 logger.Debugf("Git repo: %s", d)923 file1 := "file1.txt"924 contents1 := "contents\n"925 writeToFile(file1, contents1)926 runCmd("git add .")927 runCmd("git commit -m initial")928 runCmd("git switch -c dev")929 contents2 := "contents\nchanged dev"930 writeToFile(file1, contents2)931 runCmd("git add .")932 runCmd("git commit -m 'changed on dev'")933 r := runTransfer(t, logger)934 logger.Debugf("Server root: %s", r)935 result, err := runCmd("p4 files //...@2")936 assert.Equal(t, nil, err)937 assert.Equal(t, "//import/main/file1.txt#1 - add change 2 (text+C)\n", result)938 result, err = runCmd("p4 files //...")939 assert.Equal(t, nil, err)940 assert.Equal(t, `//import/dev/file1.txt#1 - add change 4 (text+C)941//import/main/file1.txt#1 - add change 2 (text+C)942`,943 result)944 result, err = runCmd("p4 verify -qu //...")945 assert.Equal(t, "", result)946 assert.Equal(t, "<nil>", fmt.Sprint(err))947 result, err = runCmd("p4 print -q //import/main/file1.txt#1")948 assert.Equal(t, nil, err)949 assert.Equal(t, contents1, result)950 result, err = runCmd("p4 print -q //import/dev/file1.txt#1")951 assert.Equal(t, nil, err)952 assert.Equal(t, contents2, result)953 result, err = runCmd("p4 fstat -Ob //import/dev/file1.txt#1")954 assert.Equal(t, nil, err)955 assert.Regexp(t, `headType text\+C`, result)956 assert.Regexp(t, `lbrType text\+C`, result)957 assert.Regexp(t, `lbrFile //import/dev/file1.txt`, result)958 assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)959 result, err = runCmd("p4 filelog //import/dev/file1.txt#1")960 assert.Equal(t, nil, err)961 assert.Regexp(t, `//import/dev/file1.txt`, result)962 assert.Regexp(t, `\.\.\. #1 change 4 add on .* by git-user@git-client`, result)963 // assert.Regexp(t, `\.\.\. #1 change 4 add on .* by git-user@git-client (text+C) 'changed on dev '`, result)964 assert.Regexp(t, `\.\.\. \.\.\. branch from //import/main/file1.txt#1`, result)965}966// TestTag - ensure tags are ignored as branch names967func TestTag(t *testing.T) {968 logger := createLogger()969 logger.Debugf("======== Test: %s", t.Name())970 d := createGitRepo(t)971 os.Chdir(d)972 logger.Debugf("Git repo: %s", d)973 file1 := "file1.txt"974 contents1 := "contents\n"975 writeToFile(file1, contents1)976 runCmd("git add .")977 runCmd("git commit -m initial")978 runCmd("git tag v1.0")979 contents2 := "contents\nchanged"980 writeToFile(file1, contents2)981 runCmd("git add .")982 runCmd("git commit -m 'changed on main'")983 r := runTransfer(t, logger)984 logger.Debugf("Server root: %s", r)985 result, err := runCmd("p4 files //...@2")986 assert.Equal(t, nil, err)987 assert.Equal(t, "//import/main/file1.txt#1 - add change 2 (text+C)\n", result)988 result, err = runCmd("p4 files //...")989 assert.Equal(t, nil, err)990 assert.Equal(t, `//import/main/file1.txt#2 - edit change 4 (text+C)991`,992 result)993 result, err = runCmd("p4 verify -qu //...")994 assert.Equal(t, "", result)995 assert.Equal(t, "<nil>", fmt.Sprint(err))996 result, err = runCmd("p4 fstat -Ob //import/main/file1.txt#2")997 assert.Equal(t, nil, err)998 assert.Regexp(t, `headType text\+C`, result)999 assert.Regexp(t, `lbrType text\+C`, result)1000 assert.Regexp(t, `lbrFile //import/main/file1.txt`, result)1001 assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)1002}1003func TestNode(t *testing.T) {1004 // logger := createLogger()1005 n := &Node{name: ""}1006 n.addFile("file.txt")1007 assert.Equal(t, 1, len(n.children))1008 assert.Equal(t, "file.txt", n.children[0].name)1009 f := n.getFiles("")1010 assert.Equal(t, 1, len(f))1011 assert.Equal(t, "file.txt", f[0])1012 f = n.getFiles("file.txt")1013 assert.Equal(t, 1, len(f))1014 assert.Equal(t, "file.txt", f[0])1015 fname := "src/file2.txt"1016 n.addFile(fname)1017 assert.Equal(t, 2, len(n.children))1018 assert.Equal(t, "src", n.children[1].name)1019 assert.Equal(t, false, n.children[1].isFile)1020 assert.Equal(t, 1, len(n.children[1].children))1021 assert.Equal(t, fname, n.children[1].children[0].path)1022 f = n.getFiles("src")1023 assert.Equal(t, 1, len(f))1024 assert.Equal(t, "src/file2.txt", f[0])1025 n.addFile(fname) // IF adding pre-existing file then no change1026 assert.Equal(t, 2, len(n.children))1027 assert.Equal(t, "src", n.children[1].name)1028 assert.Equal(t, false, n.children[1].isFile)1029 assert.Equal(t, 1, len(n.children[1].children))1030 fname = "src/file3.txt"1031 n.addFile(fname)1032 assert.Equal(t, 2, len(n.children))1033 assert.Equal(t, "src", n.children[1].name)1034 assert.Equal(t, false, n.children[1].isFile)1035 assert.Equal(t, 2, len(n.children[1].children))1036 assert.Equal(t, "file2.txt", n.children[1].children[0].name)1037 assert.Equal(t, "file3.txt", n.children[1].children[1].name)1038 f = n.getFiles("src")1039 assert.Equal(t, 2, len(f))1040 assert.Equal(t, "src/file2.txt", f[0])1041 assert.Equal(t, "src/file3.txt", f[1])1042 assert.True(t, n.findFile("src/file2.txt"))1043 assert.False(t, n.findFile("src/file99.txt"))1044 assert.False(t, n.findFile("file99.txt"))1045}1046func TestBigNode(t *testing.T) {1047 n := &Node{name: ""}1048 files := `Env/Assets/ArtEnv/Cookies/cookie.png1049Env/Assets/ArtEnv/Cookies/cookie.png/cookie.png.meta1050Env/Assets/Art/Structure/Universal.meta1051Env/Assets/Art/Structure/Universal/Bunker.meta`1052 for _, f := range strings.Split(files, "\n") {1053 n.addFile(f)1054 }1055 assert.True(t, n.findFile("Env/Assets/Art/Structure/Universal/Bunker.meta"))1056 assert.True(t, n.findFile("Env/Assets/Art/Structure/Universal.meta"))1057 assert.False(t, n.findFile("src/file99.txt"))1058 assert.False(t, n.findFile("file99.txt"))1059 f := n.getFiles("Env/Assets/Art/Structure")1060 assert.Equal(t, 2, len(f))1061 assert.Equal(t, "Env/Assets/Art/Structure/Universal.meta", f[0])1062 assert.Equal(t, "Env/Assets/Art/Structure/Universal/Bunker.meta", f[1])1063}1064// func TestBranchMerge(t *testing.T) {1065// logger := createLogger()1066// d := createGitRepo(t)1067// os.Chdir(d)1068// logger.Debugf("Git repo: %s", d)1069// file1 := "file1.txt"1070// contents1 := "contents\n"1071// writeToFile(file1, contents1)1072// runCmd("git add .")1073// runCmd("git commit -m initial")1074// runCmd("git switch -c dev")1075// contents2 := "contents\nchanged dev"1076// writeToFile(file1, contents2)1077// runCmd("git add .")1078// runCmd("git commit -m 'changed on dev'")1079// runCmd("git switch main")1080// runCmd("git merge dev")1081// r := runTransfer(t, logger)1082// logger.Debugf("Server root: %s", r)1083// result, err := runCmd("p4 files //...@2")1084// assert.Equal(t, nil, err)1085// assert.Equal(t, "//import/main/file1.txt#1 - add change 2 (text+C)\n", result)1086// result, err = runCmd("p4 files //...")1087// assert.Equal(t, nil, err)1088// assert.Equal(t, `//import/dev/file1.txt#1 - add change 4 (text+C)1089// //import/main/file1.txt#1 - add change 2 (text+C)1090// `,1091// result)1092// result, err = runCmd("p4 verify -qu //...")1093// assert.Equal(t, "", result)1094// assert.Equal(t, "<nil>", fmt.Sprint(err))1095// result, err = runCmd("p4 fstat -Ob //import/dev/file1.txt#1")1096// assert.Equal(t, nil, err)1097// assert.Regexp(t, `headType text\+C`, result)1098// assert.Regexp(t, `lbrType text\+C`, result)1099// assert.Regexp(t, `lbrFile //import/dev/file1.txt`, result)1100// assert.Regexp(t, `(?m)lbrPath .*/1.4.gz$`, result)1101// result, err = runCmd("p4 filelog //import/dev/file1.txt#1")1102// assert.Equal(t, nil, err)1103// assert.Regexp(t, `//import/dev/file1.txt`, result)1104// assert.Regexp(t, `\.\.\. #1 change 4 add on .* by git-user@git-client`, result)1105// // assert.Regexp(t, `\.\.\. #1 change 4 add on .* by git-user@git-client (text+C) 'changed on dev '`, result)1106// assert.Regexp(t, `\.\.\. \.\.\. branch from //import/main/file1.txt#1`, result)1107// }1108func TestBranch2(t *testing.T) {1109 // Multiple branches1110 logger := createLogger()1111 logger.Debugf("======== Test: %s", t.Name())1112 d := createGitRepo(t)1113 os.Chdir(d)1114 logger.Debugf("Git repo: %s", d)1115 file1 := "file1.txt"1116 file2 := "file2.txt"1117 contents1 := ""1118 writeToFile(file1, contents1)1119 runCmd("git add .")1120 runCmd("git commit -m initial")1121 runCmd("git switch -c dev")1122 writeToFile(file2, contents1)1123 runCmd("git add .")1124 runCmd("git commit -m 'changed on dev'")1125 runCmd("git switch -c dev2")1126 writeToFile(file2, ".")1127 runCmd("git add .")1128 runCmd("git commit -m 'changed on dev2'")1129 r := runTransfer(t, logger)1130 logger.Debugf("Server root: %s", r)1131 result, err := runCmd("p4 files //...")1132 assert.Equal(t, nil, err)1133 assert.Equal(t, `//import/dev/file2.txt#1 - add change 3 (text+C)1134//import/dev2/file2.txt#1 - add change 5 (text+C)1135//import/main/file1.txt#1 - add change 2 (text+C)1136`,1137 result)1138 result, err = runCmd("p4 verify -qu //...")1139 assert.Equal(t, "", result)1140 assert.Equal(t, "<nil>", fmt.Sprint(err))1141 result, err = runCmd("p4 print -q //import/main/file1.txt#1")1142 assert.Equal(t, nil, err)1143 assert.Equal(t, contents1, result)1144 result, err = runCmd("p4 print -q //import/dev/file2.txt#1")1145 assert.Equal(t, nil, err)1146 assert.Equal(t, contents1, result)1147 result, err = runCmd("p4 fstat -Ob //import/dev/file2.txt#1")1148 assert.Equal(t, nil, err)1149 assert.Regexp(t, `headType text\+C`, result)1150 assert.Regexp(t, `lbrType text\+C`, result)1151 assert.Regexp(t, `lbrFile //import/main/file1.txt`, result)1152 assert.Regexp(t, `(?m)lbrPath .*/1.2.gz$`, result)1153 result, err = runCmd("p4 filelog //import/dev/file2.txt#1")1154 assert.Equal(t, nil, err)1155 assert.Regexp(t, `//import/dev/file2.txt`, result)1156 assert.Regexp(t, `\.\.\. #1 change 3 add on .* by git-user@git-client`, result)1157 // assert.Regexp(t, `\.\.\. #1 change 4 add on .* by git-user@git-client (text+C) 'changed on dev '`, result)1158 assert.Regexp(t, `\.\.\. \.\.\. edit into //import/dev2/file2.txt#1`, result)1159}1160func TestBranchRename(t *testing.T) {1161 // Branch and add new file which is then renamed1162 logger := createLogger()1163 logger.Debugf("======== Test: %s", t.Name())1164 d := createGitRepo(t)1165 os.Chdir(d)1166 logger.Debugf("Git repo: %s", d)1167 file1 := "file1.txt"1168 file2 := "file2.txt"1169 file3 := "file3.txt"1170 contents1 := "1"1171 contents2 := "new"1172 writeToFile(file1, contents1)1173 writeToFile(file2, contents2)1174 runCmd("git add .")1175 runCmd("git commit -m initial")1176 runCmd("git switch -c dev")1177 appendToFile(file1, contents1)1178 runCmd("git add .")1179 runCmd("git commit -m 'first on dev'")1180 runCmd(fmt.Sprintf("mv %s %s", file2, file3))1181 runCmd("git add .")1182 runCmd("git commit -m 'renamed on dev'")1183 r := runTransfer(t, logger)1184 logger.Debugf("Server root: %s", r)1185 result, err := runCmd("p4 files //...")1186 assert.Equal(t, nil, err)1187 assert.Equal(t, `//import/dev/file1.txt#1 - add change 5 (text+C)1188//import/dev/file2.txt#1 - delete change 6 (text+C)1189//import/dev/file3.txt#1 - add change 6 (text+C)1190//import/main/file1.txt#1 - add change 3 (text+C)1191//import/main/file2.txt#1 - add change 3 (text+C)1192`,1193 result)1194 result, err = runCmd("p4 verify -qu //...")1195 assert.Equal(t, "", result)1196 assert.Equal(t, "<nil>", fmt.Sprint(err))1197 result, err = runCmd("p4 print -q //import/main/file1.txt#1")1198 assert.Equal(t, nil, err)1199 assert.Equal(t, contents1, result)1200 result, err = runCmd("p4 print -q //import/dev/file3.txt#1")1201 assert.Equal(t, nil, err)1202 assert.Equal(t, contents2, result)1203 result, err = runCmd("p4 fstat -Ob //import/dev/file3.txt#1")1204 assert.Equal(t, nil, err)1205 assert.Regexp(t, `headType text\+C`, result)1206 assert.Regexp(t, `lbrType text\+C`, result)1207 assert.Regexp(t, `lbrFile //import/main/file2.txt`, result)1208 assert.Regexp(t, `(?m)lbrPath .*/1.3.gz$`, result)1209 result, err = runCmd("p4 filelog //import/dev/file2.txt#1")1210 assert.Equal(t, nil, err)1211 assert.Regexp(t, `//import/dev/file2.txt`, result)1212 assert.Regexp(t, `\.\.\. #1 change 6 delete on .* by git-user@git-client.*1213\.\.\. \.\.\. branch into //import/dev/file3.txt#1`, result)1214 result, err = runCmd("p4 filelog //import/dev/file3.txt#1")1215 assert.Equal(t, nil, err)1216 assert.Regexp(t, `//import/dev/file3.txt`, result)1217 assert.Regexp(t, `\.\.\. #1 change 6 add on .* by git-user@git-client.*1218\.\.\. \.\.\. branch from //import/dev/file2.txt#1`, result)1219}1220func TestBranchMerge(t *testing.T) {1221 // Merge branches1222 logger := createLogger()1223 logger.Debugf("======== Test: %s", t.Name())1224 d := createGitRepo(t)1225 os.Chdir(d)1226 logger.Debugf("Git repo: %s", d)1227 file1 := "file1.txt"1228 file2 := "file2.txt"1229 contents1 := "Contents\n"1230 contents2 := "Test content2\n"1231 writeToFile(file1, contents1)1232 runCmd("git add .")1233 runCmd("git commit -m \"1: first change\"")1234 runCmd("git checkout -b branch1")1235 runCmd("git add .")1236 bcontents1 := "branch change\n"1237 appendToFile(file1, bcontents1)1238 runCmd("git add .")1239 runCmd("git commit -m \"2: branch edit change\"")1240 runCmd("git checkout main")1241 writeToFile(file2, contents2)1242 runCmd("git add .")1243 runCmd("git commit -m \"3: new file on main\"")1244 runCmd("git merge --no-edit branch1")1245 runCmd("git commit -m \"4: merged change\"")1246 runCmd("git log --graph --abbrev-commit --oneline")1247 r := runTransfer(t, logger)1248 logger.Debugf("Server root: %s", r)1249 result, err := runCmd("p4 files //...")1250 assert.Equal(t, nil, err)1251 assert.Equal(t, `//import/branch1/file1.txt#1 - add change 6 (text+C)1252//import/main/file1.txt#2 - edit change 7 (text+C)1253//import/main/file2.txt#1 - add change 4 (text+C)1254`,1255 result)1256 result, err = runCmd("p4 verify -qu //...")1257 assert.Equal(t, "", result)1258 assert.Equal(t, "<nil>", fmt.Sprint(err))1259 result, err = runCmd("p4 filelog //import/...")1260 assert.Equal(t, nil, err)1261 assert.Regexp(t, `(?m)//import/branch1/file1.txt1262\.\.\. #1 change 6 add on .* by git-user@git-client \(text\+C\).*1263\.\.\. \.\.\. edit into //import/main/file1.txt#21264\.\.\. \.\.\. branch from //import/main/file1.txt#1`, result)1265 assert.Regexp(t, `(?m)//import/main/file1.txt1266\.\.\. #2 change 7 edit on .* by git-user@git-client \(text\+C\).*1267\.\.\. \.\.\. branch from //import/branch1/file1.txt#11268\.\.\. #1 change 2 add on .* by git-user@git-client \(text\+C\).*1269\.\.\. \.\.\. edit into //import/branch1/file1.txt#1`, result)1270 assert.Regexp(t, `(?m)//import/main/file2.txt1271\.\.\. #1 change 4 add on .* by git-user@git-client \(text\+C\).*`, result)1272 result, err = runCmd("p4 print -q //import/main/file2.txt#1")1273 assert.Equal(t, nil, err)1274 assert.Equal(t, contents2, result)1275 bcontents2 := fmt.Sprintf("%s%s", contents1, bcontents1)1276 result, err = runCmd("p4 print -q //import/branch1/file1.txt")1277 assert.Equal(t, nil, err)1278 assert.Equal(t, bcontents2, result)1279 result, err = runCmd("p4 print -q //import/main/file1.txt#2")1280 assert.Equal(t, nil, err)1281 assert.Equal(t, bcontents2, result)1282 result, err = runCmd("p4 fstat -Ob //import/main/file1.txt#2")1283 assert.Equal(t, nil, err)1284 assert.Regexp(t, `headType text\+C`, result)1285 assert.Regexp(t, `lbrType text\+C`, result)1286 assert.Regexp(t, `lbrFile //import/branch1/file1.txt`, result)1287 assert.Regexp(t, `(?m)lbrPath .*/1.6.gz$`, result)1288}1289func TestBranchDelete(t *testing.T) {1290 // Merge branches with deleted files1291 logger := createLogger()1292 logger.Debugf("======== Test: %s", t.Name())1293 d := createGitRepo(t)1294 os.Chdir(d)1295 logger.Debugf("Git repo: %s", d)1296 file1 := "file1.txt"1297 file2 := "file2.txt"1298 contents1 := "Contents\n"1299 contents2 := "Test content2\n"1300 writeToFile(file1, contents1)1301 writeToFile(file2, contents2)1302 runCmd("git add .")1303 runCmd("git commit -m \"1: first change\"")1304 runCmd("git checkout -b branch1")1305 runCmd("git add .")1306 bcontents1 := "branch change\n"1307 appendToFile(file1, bcontents1)1308 runCmd("git add .")1309 runCmd("git commit -m \"2: branch edit change\"")1310 runCmd("git rm " + file1)1311 runCmd("git add .")1312 runCmd("git commit -m \"3: delete file\"")1313 runCmd("git checkout main")1314 runCmd("git merge --no-ff branch1")1315 runCmd("git commit -m \"4: merged change\"")1316 runCmd("git log --graph --abbrev-commit --oneline")1317 r := runTransfer(t, logger)1318 logger.Debugf("Server root: %s", r)1319 result, err := runCmd("p4 files //...")1320 assert.Equal(t, nil, err)1321 assert.Equal(t, `//import/branch1/file1.txt#2 - delete change 6 (text+C)1322//import/main/file1.txt#2 - delete change 7 (text+C)1323//import/main/file2.txt#1 - add change 3 (text+C)1324`,1325 result)1326 result, err = runCmd("p4 verify -qu //...")1327 assert.Equal(t, "", result)1328 assert.Equal(t, "<nil>", fmt.Sprint(err))1329 result, err = runCmd("p4 filelog //import/...")1330 assert.Equal(t, nil, err)1331 assert.Regexp(t, `(?m)//import/branch1/file1.txt1332\.\.\. #2 change 6 delete on .* by git-user@git-client \(text\+C\).*1333\.\.\. \.\.\. delete into //import/main/file1.txt#21334\.\.\. #1 change 5 add on .* by git-user@git-client \(text\+C\).*1335\.\.\. \.\.\. branch from //import/main/file1.txt#1`, result)1336 assert.Regexp(t, `(?m)//import/main/file1.txt1337\.\.\. #2 change 7 delete on .* by git-user@git-client \(text\+C\).*1338\.\.\. \.\.\. delete from //import/branch1/file1.txt#21339\.\.\. #1 change 3 add on .* by git-user@git-client \(text\+C\).*1340\.\.\. \.\.\. edit into //import/branch1/file1.txt#1`, result)1341 assert.Regexp(t, `(?m)//import/main/file2.txt1342\.\.\. #1 change 3 add on .* by git-user@git-client \(text\+C\).*`, result)1343 // result, err = runCmd("p4 print -q //import/main/file2.txt#1")1344 // assert.Equal(t, nil, err)1345 // assert.Equal(t, contents2, result)1346 // bcontents2 := fmt.Sprintf("%s%s", contents1, bcontents1)1347 // result, err = runCmd("p4 print -q //import/branch1/file1.txt")1348 // assert.Equal(t, nil, err)1349 // assert.Equal(t, bcontents2, result)1350 // result, err = runCmd("p4 print -q //import/main/file1.txt#2")1351 // assert.Equal(t, nil, err)1352 // assert.Equal(t, bcontents2, result)1353 // result, err = runCmd("p4 fstat -Ob //import/main/file1.txt#2")1354 // assert.Equal(t, nil, err)1355 // assert.Regexp(t, `headType text\+C`, result)1356 // assert.Regexp(t, `lbrType text\+C`, result)1357 // assert.Regexp(t, `lbrFile //import/branch1/file1.txt`, result)1358 // assert.Regexp(t, `(?m)lbrPath .*/1.6.gz$`, result)1359}1360func TestBranchDelete2(t *testing.T) {1361 // Merge branches with deleted files1362 logger := createLogger()1363 logger.Debugf("======== Test: %s", t.Name())1364 d := createGitRepo(t)1365 os.Chdir(d)1366 logger.Debugf("Git repo: %s", d)1367 file1 := "file1.txt"1368 file2 := "file2.txt"1369 contents1 := "Contents\n"1370 contents2 := "Test content2\n"1371 writeToFile(file1, contents1)1372 writeToFile(file2, contents2)1373 runCmd("git add .")1374 runCmd("git commit -m \"1: first change\"")1375 runCmd("git checkout -b branch1")1376 runCmd("git rm " + file1)1377 runCmd("git add .")1378 runCmd("git commit -m \"2: branch delete change\"")1379 runCmd("git checkout main")1380 runCmd("git merge --no-ff branch1")1381 runCmd("git commit -m \"4: merged change\"")1382 runCmd("git log --graph --abbrev-commit --oneline")1383 r := runTransfer(t, logger)1384 logger.Debugf("Server root: %s", r)1385 result, err := runCmd("p4 files //...")1386 assert.Equal(t, nil, err)1387 assert.Equal(t, `//import/branch1/file1.txt#1 - delete change 4 (text+C)1388//import/main/file1.txt#2 - delete change 5 (text+C)1389//import/main/file2.txt#1 - add change 3 (text+C)1390`,1391 result)1392 result, err = runCmd("p4 verify -qu //...")1393 assert.Equal(t, "", result)1394 assert.Equal(t, "<nil>", fmt.Sprint(err))1395 result, err = runCmd("p4 filelog //import/...")1396 assert.Equal(t, nil, err)1397 assert.Regexp(t, `(?m)//import/branch1/file1.txt1398\.\.\. #1 change 4 delete on .* by git-user@git-client \(text\+C\).*1399\.\.\. \.\.\. delete into //import/main/file1.txt#2`, result)1400 assert.Regexp(t, `(?m)//import/main/file1.txt1401\.\.\. #2 change 5 delete on .* by git-user@git-client \(text\+C\).*1402\.\.\. \.\.\. delete from //import/branch1/file1.txt#11403\.\.\. #1 change 3 add on .* by git-user@git-client \(text\+C\).*`, result)1404 assert.Regexp(t, `(?m)//import/main/file2.txt1405\.\.\. #1 change 3 add on .* by git-user@git-client \(text\+C\).*`, result)1406}1407func TestBranchMergeCompressed(t *testing.T) {1408 // Merge branches with a file already compressed1409 logger := createLogger()1410 logger.Debugf("======== Test: %s", t.Name())1411 d := createGitRepo(t)1412 os.Chdir(d)1413 logger.Debugf("Git repo: %s", d)1414 file1 := "file1.png"1415 file2 := "file2.png"1416 file3 := "file3.png"1417 contents1 := "Contents\n"1418 contents2 := "Test content2\n"1419 contents3 := "Test content3\n"1420 writeToFile(file1, contents1)1421 runCmd(fmt.Sprintf("gzip %s", file1))1422 runCmd(fmt.Sprintf("mv %s.gz %s", file1, file1))1423 runCmd("git add .")1424 runCmd("git commit -m \"1: first change\"")1425 runCmd("git checkout -b branch1")1426 runCmd("git add .")1427 bcontents1 := "branch change\n"1428 writeToFile(file1, contents1+bcontents1)1429 runCmd(fmt.Sprintf("gzip %s", file1))1430 runCmd(fmt.Sprintf("mv %s.gz %s", file1, file1))1431 runCmd("git add .")1432 runCmd("git commit -m \"2: branch edit change\"")1433 writeToFile(file3, contents3)1434 runCmd(fmt.Sprintf("gzip %s", file3))1435 runCmd(fmt.Sprintf("mv %s.gz %s", file3, file3))1436 runCmd("git add .")1437 runCmd("git commit -m \"3: branch add file\"")1438 runCmd("git checkout main")1439 writeToFile(file2, contents2)1440 runCmd(fmt.Sprintf("gzip %s", file2))1441 runCmd(fmt.Sprintf("mv %s.gz %s", file2, file2))1442 runCmd("git add .")1443 runCmd("git commit -m \"4: new file on main\"")1444 runCmd("git merge --no-edit branch1")1445 runCmd("git commit -m \"5: merged change\"")1446 runCmd("git log --graph --abbrev-commit --oneline")1447 r := runTransfer(t, logger)1448 logger.Debugf("Server root: %s", r)1449 result, err := runCmd("p4 files //...")1450 assert.Equal(t, nil, err)1451 assert.Equal(t, `//import/branch1/file1.png#1 - add change 6 (binary+F)1452//import/branch1/file3.png#1 - add change 8 (binary+F)1453//import/main/file1.png#2 - edit change 9 (binary+F)1454//import/main/file2.png#1 - add change 4 (binary+F)1455//import/main/file3.png#1 - add change 9 (binary+F)1456`,1457 result)1458 result, err = runCmd("p4 verify -qu //...")1459 assert.Equal(t, "", result)1460 assert.Equal(t, "<nil>", fmt.Sprint(err))1461 result, err = runCmd("p4 filelog //import/...")1462 assert.Equal(t, nil, err)1463 assert.Regexp(t, `(?m)//import/branch1/file1.png1464\.\.\. #1 change 6 add on .* by git-user@git-client \(binary\+F\).*1465\.\.\. \.\.\. edit into //import/main/file1.png#21466\.\.\. \.\.\. branch from //import/main/file1.png#1`, result)1467 assert.Regexp(t, `(?m)//import/main/file1.png1468\.\.\. #2 change 9 edit on .* by git-user@git-client \(binary\+F\).*1469\.\.\. \.\.\. branch from //import/branch1/file1.png#11470\.\.\. #1 change 2 add on .* by git-user@git-client \(binary\+F\).*1471\.\.\. \.\.\. edit into //import/branch1/file1.png#1`, result)1472 assert.Regexp(t, `(?m)//import/main/file2.png1473\.\.\. #1 change 4 add on .* by git-user@git-client \(binary\+F\).*`, result)1474 result, err = runCmd("p4 print -q //import/main/file2.png#1")1475 assert.Equal(t, nil, err)1476 assert.Equal(t, contents2, unzipBuf(result))1477 bcontents2 := fmt.Sprintf("%s%s", contents1, bcontents1)1478 result, err = runCmd("p4 print -q //import/branch1/file1.png")1479 assert.Equal(t, nil, err)1480 assert.Equal(t, bcontents2, unzipBuf(result))1481 result, err = runCmd("p4 print -q //import/main/file1.png#2")1482 assert.Equal(t, nil, err)1483 assert.Equal(t, bcontents2, unzipBuf(result))1484 result, err = runCmd("p4 fstat -Ob //import/main/file1.png#2")1485 assert.Equal(t, nil, err)1486 assert.Regexp(t, `headType binary\+F`, result)1487 assert.Regexp(t, `lbrType binary\+F`, result)1488 assert.Regexp(t, `lbrFile //import/branch1/file1.png`, result)1489 assert.Regexp(t, `(?m)lbrPath .*/1.6$`, result)1490}...

Full Screen

Full Screen

build.go

Source:build.go Github

copy

Full Screen

...83 "github.com/golang/mock/mockgen",84 "github.com/golang/protobuf/protoc-gen-go",85 }86 for _, pkg := range pkgs {87 runCmd("go", map[string]string{"GO11MODULE": "on"}, "install", pkg)88 }89}90func clean() {91 if err := os.Remove("pkg/icon/rice-box.go"); err != nil {92 log.Fatalf("clean: %s", err)93 }94}95func generate() {96 removeFakes()97 runCmd("go", nil, "generate", "-v", "./pkg/...", "./internal/...")98}99func build() {100 newpath := filepath.Join(".", "build")101 os.MkdirAll(newpath, 0755)102 artifact := "kf"103 if runtime.GOOS == "windows" {104 artifact = "kf.exe"105 }106 runCmd("go", nil, "build", "-o", "build/"+artifact, GO_FLAGS, "-v", "./cmd/main")107}108func runDev() {109 runCmd("build/kf", nil)110}111func test() {112 runCmd("go", nil, "test", "-v", "./internal/...", "./pkg/...")113}114func vet() {115 runCmd("go", nil, "vet", "./internal/...", "./pkg/...")116}117func webDeps() {118 cmd := newCmd("npm", nil, "i")119 cmd.Stdout = os.Stdout120 cmd.Dir = "./web"121 if err := cmd.Run(); err != nil {122 log.Fatalf("web-deps: %s", err)123 }124}125func webTest() {126 cmd := newCmd("npm", nil, "run", "test:headless")127 cmd.Stdout = os.Stdout128 cmd.Dir = "./web"129 if err := cmd.Run(); err != nil {130 log.Fatalf("web-test: %s", err)131 }132}133func webBuild() {134 cmd := newCmd("npm", nil, "run", "build")135 cmd.Stdout = os.Stdout136 cmd.Dir = "./web"137 if err := cmd.Run(); err != nil {138 log.Fatalf("web-build: %s", err)139 }140 runCmd("go", nil, "generate", "./web")141}142func serve() {143 var wg sync.WaitGroup144 uiVars := map[string]string{"API_BASE": "http://localhost:7777"}145 uiCmd := newCmd("npm", uiVars, "run", "start")146 uiCmd.Stdout = os.Stdout147 uiCmd.Dir = "./web"148 if err := uiCmd.Start(); err != nil {149 log.Fatalf("uiCmd: start: %s", err)150 }151 wg.Add(1)152 go func() {153 defer wg.Done()154 if err := uiCmd.Wait(); err != nil {155 log.Fatalf("serve: npm run: %s", err)156 }157 }()158 serverVars := map[string]string{159 "KUBEFUN_DISABLE_OPEN_BROWSER": "true",160 "KUBEFUN_LISTENER_ADDR": "localhost:7777",161 "KUBEFUN_PROXY_FRONTEND": "http://localhost:4200",162 }163 serverCmd := newCmd("go", serverVars, "run", "./cmd/main/main.go")164 serverCmd.Stdout = os.Stdout165 if err := serverCmd.Start(); err != nil {166 log.Fatalf("serveCmd: start: %s", err)167 }168 wg.Add(1)169 go func() {170 defer wg.Done()171 if err := serverCmd.Wait(); err != nil {172 log.Fatalf("serve: go run: %s", err)173 }174 }()175 wg.Wait()176}177func installTestPlugin() {178 dir := pluginDir()179 log.Printf("Plugin path: %s", dir)180 os.MkdirAll(dir, 0755)181 pluginFile := fmt.Sprintf("%s/kubefun-sample-plugin", dir)182 runCmd("go", nil, "build", "-o", pluginFile, "github.com/kubenext/kubefun/cmd/kubefun-sample-plugin")183}184func pluginDir() string {185 xdgConfigHome := os.Getenv("XDG_CONFIG_HOME")186 if xdgConfigHome != "" {187 return filepath.Join(xdgConfigHome, "kubefun", "plugins")188 } else if runtime.GOOS == "windows" {189 return filepath.Join(os.Getenv("LOCALAPPDATA"), "kubefun", "plugins")190 } else {191 return filepath.Join(os.Getenv("HOME"), ".config", "kubefun", "plugins")192 }193}194func version() {195 fmt.Println(VERSION)196}197func release() {198 runCmd("git", nil, "tag", "-a", VERSION, "-m", fmt.Sprintf("\"Release %s\"", VERSION))199 runCmd("git", nil, "push", "--follow-tags")200}201func docker() {202 dockerVars := map[string]string{203 "CGO_ENABLED": "0",204 "GOOS": "linux",205 "GOARCH": "amd64",206 }207 runCmd("go", dockerVars, "build", "-o", "kf", GO_FLAGS, "-v", "./cmd/main/main.go")208}209func removeFakes() {210 checkDirs := []string{"pkg", "internal"}211 fakePaths := []string{}212 for _, dir := range checkDirs {213 err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {214 if !info.IsDir() {215 return nil216 }217 if info.Name() == "fake" {218 fakePaths = append(fakePaths, filepath.Join(path, info.Name()))219 }220 return nil221 })222 if err != nil {223 log.Fatalf("generate (%s): %s", dir, err)224 }225 }226 log.Print("Removing fakes from pkg/ and internal/")227 for _, p := range fakePaths {228 os.RemoveAll(p)229 }230}231func gitCommit() string {232 cmd := newCmd("git", nil, "rev-parse", "--short", "HEAD")233 out, err := cmd.Output()234 if err != nil {235 log.Printf("gitCommit: %s", err)236 return ""237 }238 return fmt.Sprintf("%s", out)239}240func runCmd(command string, env map[string]string, args ...string) {241 cmd := newCmd(command, env, args...)242 cmd.Stdout = os.Stdout243 cmd.Stderr = os.Stderr244 log.Printf("Running: %s\n", cmd.String())245 if err := cmd.Run(); err != nil {246 log.Fatal(err)247 }248}249func newCmd(command string, env map[string]string, args ...string) *exec.Cmd {250 realCommand, err := exec.LookPath(command)251 if err != nil {252 log.Fatalf("unable to find command '%s'", command)253 }254 cmd := exec.Command(realCommand, args...)...

Full Screen

Full Screen

docker_cli_restart_test.go

Source:docker_cli_restart_test.go Github

copy

Full Screen

...5 "testing"6 "time"7)8func TestDockerRestartStoppedContainer(t *testing.T) {9 runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "echo", "foobar")10 out, _, err := runCommandWithOutput(runCmd)11 errorOut(err, t, out)12 cleanedContainerID := stripTrailingCharacters(out)13 runCmd = exec.Command(dockerBinary, "wait", cleanedContainerID)14 out, _, err = runCommandWithOutput(runCmd)15 errorOut(err, t, out)16 runCmd = exec.Command(dockerBinary, "logs", cleanedContainerID)17 out, _, err = runCommandWithOutput(runCmd)18 errorOut(err, t, out)19 if out != "foobar\n" {20 t.Errorf("container should've printed 'foobar'")21 }22 runCmd = exec.Command(dockerBinary, "restart", cleanedContainerID)23 out, _, err = runCommandWithOutput(runCmd)24 errorOut(err, t, out)25 runCmd = exec.Command(dockerBinary, "logs", cleanedContainerID)26 out, _, err = runCommandWithOutput(runCmd)27 errorOut(err, t, out)28 if out != "foobar\nfoobar\n" {29 t.Errorf("container should've printed 'foobar' twice")30 }31 deleteAllContainers()32 logDone("restart - echo foobar for stopped container")33}34func TestDockerRestartRunningContainer(t *testing.T) {35 runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "sh", "-c", "echo foobar && sleep 30 && echo 'should not print this'")36 out, _, err := runCommandWithOutput(runCmd)37 errorOut(err, t, out)38 cleanedContainerID := stripTrailingCharacters(out)39 time.Sleep(1 * time.Second)40 runCmd = exec.Command(dockerBinary, "logs", cleanedContainerID)41 out, _, err = runCommandWithOutput(runCmd)42 errorOut(err, t, out)43 if out != "foobar\n" {44 t.Errorf("container should've printed 'foobar'")45 }46 runCmd = exec.Command(dockerBinary, "restart", "-t", "1", cleanedContainerID)47 out, _, err = runCommandWithOutput(runCmd)48 errorOut(err, t, out)49 runCmd = exec.Command(dockerBinary, "logs", cleanedContainerID)50 out, _, err = runCommandWithOutput(runCmd)51 errorOut(err, t, out)52 time.Sleep(1 * time.Second)53 if out != "foobar\nfoobar\n" {54 t.Errorf("container should've printed 'foobar' twice")55 }56 deleteAllContainers()57 logDone("restart - echo foobar for running container")58}59// Test that restarting a container with a volume does not create a new volume on restart. Regression test for #819.60func TestDockerRestartWithVolumes(t *testing.T) {61 runCmd := exec.Command(dockerBinary, "run", "-d", "-v", "/test", "busybox", "top")62 out, _, err := runCommandWithOutput(runCmd)63 errorOut(err, t, out)64 cleanedContainerID := stripTrailingCharacters(out)65 runCmd = exec.Command(dockerBinary, "inspect", "--format", "{{ len .Volumes }}", cleanedContainerID)66 out, _, err = runCommandWithOutput(runCmd)67 errorOut(err, t, out)68 if out = strings.Trim(out, " \n\r"); out != "1" {69 t.Errorf("expect 1 volume received %s", out)70 }71 runCmd = exec.Command(dockerBinary, "inspect", "--format", "{{ .Volumes }}", cleanedContainerID)72 volumes, _, err := runCommandWithOutput(runCmd)73 errorOut(err, t, volumes)74 runCmd = exec.Command(dockerBinary, "restart", cleanedContainerID)75 out, _, err = runCommandWithOutput(runCmd)76 errorOut(err, t, out)77 runCmd = exec.Command(dockerBinary, "inspect", "--format", "{{ len .Volumes }}", cleanedContainerID)78 out, _, err = runCommandWithOutput(runCmd)79 errorOut(err, t, out)80 if out = strings.Trim(out, " \n\r"); out != "1" {81 t.Errorf("expect 1 volume after restart received %s", out)82 }83 runCmd = exec.Command(dockerBinary, "inspect", "--format", "{{ .Volumes }}", cleanedContainerID)84 volumesAfterRestart, _, err := runCommandWithOutput(runCmd)85 errorOut(err, t, volumesAfterRestart)86 if volumes != volumesAfterRestart {87 volumes = strings.Trim(volumes, " \n\r")88 volumesAfterRestart = strings.Trim(volumesAfterRestart, " \n\r")89 t.Errorf("expected volume path: %s Actual path: %s", volumes, volumesAfterRestart)90 }91 deleteAllContainers()92 logDone("restart - does not create a new volume on restart")93}...

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 cmd := exec.Command("go", "run", "1.go")4 err := cmd.Run()5 if err != nil {6 fmt.Println(err)7 }8 fmt.Println("done")9}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 cmd := exec.Command("go", "run", "1.go")4 err := cmd.Run()5 if err != nil {6 fmt.Println(err)7 }8}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println("Starting the application...")4 cmd := exec.Command("cmd", "/C", "start", "1.go")5 err := cmd.Run()6 if err != nil {7 fmt.Println(err)8 os.Exit(1)9 }10 fmt.Println("Application started...")11}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 var cmd = exec.Command("go", "run", "1.go")4 var out, err = cmd.Output()5 if err != nil {6 fmt.Println(err.Error())7 }8 fmt.Println("Command Successfully Executed")9 output := string(out[:])10 fmt.Println(output)11}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 cmd := exec.Command("ls", "-l")4 err := cmd.Run()5 if err != nil {6 fmt.Println(err)7 }8}9import (10func main() {11 cmd := exec.Command("ls", "-l", "-a", "-h")12 err := cmd.Run()13 if err != nil {14 fmt.Println(err)15 }16}17import (18func main() {19 cmd := exec.Command("ls", "-l", "-a", "-h")20 err := cmd.Run()21 if err != nil {22 fmt.Println(err)23 }24}25import (26func main() {27 cmd := exec.Command("ls", "-l", "-a", "-h")28 err := cmd.Run()29 if err != nil {30 fmt.Println(err)31 }32}33import (34func main() {35 cmd := exec.Command("ls", "-l", "-a", "-h")36 err := cmd.Run()37 if err != nil {38 fmt.Println(err)39 }40}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import "fmt"2func main() {3 fmt.Println("Path: 2.go")4 fmt.Println("Code to use runCmd method of main class")5 runCmd("ls")6}

Full Screen

Full Screen

runCmd

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println(cmd)4 switch cmd {5 fmt.Println("run")6 fmt.Println("stop")7 fmt.Println("start")8 fmt.Println("restart")9 fmt.Println("status")10 fmt.Println("Invalid Command")11 }12}13import (14func main() {15 fmt.Println(cmd)16 switch cmd {17 fmt.Println("run")18 fmt.Println("stop")19 fmt.Println("start")20 fmt.Println("restart")21 fmt.Println("status")22 fmt.Println("Invalid Command")23 }24}25import (26func main() {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Syzkaller automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful