From eb69ba306267968ea02b466e0fbcfa38ff31471d Mon Sep 17 00:00:00 2001 From: George Dunlap Date: Fri, 23 Jun 2017 17:38:05 +0100 Subject: [PATCH] systemtest: Delete all existing branches when not making from a clean state Except `master`, of course. Make sure to open all repos before cleaning branches. (xsa.git will typically not be open after `repo init` if it wasn't cloned.) Signed-off-by: George Dunlap --- systemtest.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/systemtest.go b/systemtest.go index dc3147e..5d9fae1 100644 --- a/systemtest.go +++ b/systemtest.go @@ -115,6 +115,12 @@ func InitRepo(st *SystemTest) bool { G.config.Tool.rootDir) return false } + // Most repos are open after `repo init`, but xsa.git may not + // be if it wasn't cloned. + if err := OpenRepos(); err != nil { + st.Errorf("Opening repos: %v\n", err) + return false + } updateBranches := func(t Tree) (err error) { var r *Repo @@ -129,6 +135,32 @@ func InitRepo(st *SystemTest) bool { r = &xr.Repo } + // Make 'master' the current (mainly so we can delete + // any other branches if they exist) + if _, err = r.Checkout("master"); err != nil { + return fmt.Errorf("Checking out branch master for tree %s: %v", + t, err) + } + + // Delete all local branches except master + branches, err := r.Branches("") + if err != nil { + st.Errorf("Couldn't get branches for tree %s: %v\n", + t, err) + return + } + for _, branch := range branches { + if branch == "master" { + continue + } + fmt.Printf("Deleting leftover branch %s\n", branch) + if _, err = r.DeleteBranch(branch); err != nil { + st.Errorf("Deleting branch %s: %v\n", branch, err) + return + } + } + + // Reset "remote" branches to specified state for simulation for branch := range *its[t] { shortRef := (*its[t])[branch] var fullRef string -- 2.39.5