mirror of
				https://github.com/go-gitea/gitea
				synced 2025-09-28 03:28:13 +00:00 
			
		
		
		
	The tests on migration tests failed but CI reports successfully https://github.com/go-gitea/gitea/actions/runs/7364373807/job/20044685969#step:8:141 This PR will fix the bug on migration v283 and also the CI hidden behaviour. The reason is on the Makefile `GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' $(MIGRATE_TEST_PACKAGES)` will return the error exit code. But `for pkg in $(shell $(GO) list code.gitea.io/gitea/models/migrations/...); do \ GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' $$pkg; \ done` will not work. This also fix #29602
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2022 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package base
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/timeutil"
 | |
| 
 | |
| 	"xorm.io/xorm/names"
 | |
| )
 | |
| 
 | |
| func Test_DropTableColumns(t *testing.T) {
 | |
| 	x, deferable := PrepareTestEnv(t, 0)
 | |
| 	if x == nil || t.Failed() {
 | |
| 		defer deferable()
 | |
| 		return
 | |
| 	}
 | |
| 	defer deferable()
 | |
| 
 | |
| 	type DropTest struct {
 | |
| 		ID            int64 `xorm:"pk autoincr"`
 | |
| 		FirstColumn   string
 | |
| 		ToDropColumn  string `xorm:"unique"`
 | |
| 		AnotherColumn int64
 | |
| 		CreatedUnix   timeutil.TimeStamp `xorm:"INDEX created"`
 | |
| 		UpdatedUnix   timeutil.TimeStamp `xorm:"INDEX updated"`
 | |
| 	}
 | |
| 
 | |
| 	columns := []string{
 | |
| 		"first_column",
 | |
| 		"to_drop_column",
 | |
| 		"another_column",
 | |
| 		"created_unix",
 | |
| 		"updated_unix",
 | |
| 	}
 | |
| 
 | |
| 	x.SetMapper(names.GonicMapper{})
 | |
| 
 | |
| 	for i := range columns {
 | |
| 		if err := x.Sync(new(DropTest)); err != nil {
 | |
| 			t.Errorf("unable to create DropTest table: %v", err)
 | |
| 			return
 | |
| 		}
 | |
| 
 | |
| 		sess := x.NewSession()
 | |
| 		if err := sess.Begin(); err != nil {
 | |
| 			sess.Close()
 | |
| 			t.Errorf("unable to begin transaction: %v", err)
 | |
| 			return
 | |
| 		}
 | |
| 		if err := DropTableColumns(sess, "drop_test", columns[i:]...); err != nil {
 | |
| 			sess.Close()
 | |
| 			t.Errorf("Unable to drop columns[%d:]: %s from drop_test: %v", i, columns[i:], err)
 | |
| 			return
 | |
| 		}
 | |
| 		if err := sess.Commit(); err != nil {
 | |
| 			sess.Close()
 | |
| 			t.Errorf("unable to commit transaction: %v", err)
 | |
| 			return
 | |
| 		}
 | |
| 		sess.Close()
 | |
| 		if err := x.DropTables(new(DropTest)); err != nil {
 | |
| 			t.Errorf("unable to drop table: %v", err)
 | |
| 			return
 | |
| 		}
 | |
| 		for j := range columns[i+1:] {
 | |
| 			if err := x.Sync(new(DropTest)); err != nil {
 | |
| 				t.Errorf("unable to create DropTest table: %v", err)
 | |
| 				return
 | |
| 			}
 | |
| 			dropcols := append([]string{columns[i]}, columns[j+i+1:]...)
 | |
| 			sess := x.NewSession()
 | |
| 			if err := sess.Begin(); err != nil {
 | |
| 				sess.Close()
 | |
| 				t.Errorf("unable to begin transaction: %v", err)
 | |
| 				return
 | |
| 			}
 | |
| 			if err := DropTableColumns(sess, "drop_test", dropcols...); err != nil {
 | |
| 				sess.Close()
 | |
| 				t.Errorf("Unable to drop columns: %s from drop_test: %v", dropcols, err)
 | |
| 				return
 | |
| 			}
 | |
| 			if err := sess.Commit(); err != nil {
 | |
| 				sess.Close()
 | |
| 				t.Errorf("unable to commit transaction: %v", err)
 | |
| 				return
 | |
| 			}
 | |
| 			sess.Close()
 | |
| 			if err := x.DropTables(new(DropTest)); err != nil {
 | |
| 				t.Errorf("unable to drop table: %v", err)
 | |
| 				return
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |