From 36c7e7470d6227a3407bbaea41e3c3367d972e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=91=D0=B0?= =?UTF-8?q?=D0=B4=D1=8F=D0=B5=D0=B2?= Date: Thu, 21 Nov 2024 10:26:33 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cspell.config.yaml | 8 +++ makefile | 31 ++++---- pkg/drawio/export_test.go | 48 ++++++++++--- pkg/drawio/options_internal_test.go | 27 +++++-- pkg/drawio/options_test.go | 22 +++--- report.xml | 108 ---------------------------- 6 files changed, 97 insertions(+), 147 deletions(-) create mode 100644 cspell.config.yaml delete mode 100644 report.xml diff --git a/cspell.config.yaml b/cspell.config.yaml new file mode 100644 index 0000000..5c89086 --- /dev/null +++ b/cspell.config.yaml @@ -0,0 +1,8 @@ +version: "0.2" +ignorePaths: + - makefile +dictionaryDefinitions: [] +dictionaries: [] +words: [] +ignoreWords: [] +import: [] diff --git a/makefile b/makefile index 1d48299..394e762 100644 --- a/makefile +++ b/makefile @@ -23,6 +23,8 @@ GO_OPT_V := -X "main.version=$(VERSION)" GO_OPT_APP := -X "main.appname=$(PROJECT_NAME)" GO_OPT_BASE := -mod vendor -ldflags '$(GO_OPT_V) $(GO_OPT_APP) $(GO_LDFLAGS)' GO_OPT ?= +TEST_OPT ?= -race -v -shuffle=on -parallel 6 + EXPORT_RESULT ?= false # for CI please set EXPORT_RESULT to true COVERAGE_FORMAT ?= html @@ -30,19 +32,20 @@ GOCMD := go GOTEST := $(GOCMD) test GOVET := $(GOCMD) vet ECHO_CMD := echo -e +TIMECMD ?= /usr/bin/time -f "Time elapsed:\t%E sec" ifeq ($(OS),Windows_NT) -DIST_SUFFIX := windows-$(GOARCH) -MSI_FILE ?= $(PROJECT_ID)_$(VERSION)_$(GOARCH).msi -DIST_EXT := .zip -DIST_OPTS := -a -cf -MSI_VERSION := $(shell echo $(VERSION_NUMBER) | sed -e 's/-.*//') -BIN_SUFFIX := .exe + DIST_SUFFIX := windows-$(GOARCH) + MSI_FILE ?= $(PROJECT_ID)_$(VERSION)_$(GOARCH).msi + DIST_EXT := .zip + DIST_OPTS := -a -cf + MSI_VERSION := $(shell echo $(VERSION_NUMBER) | sed -e 's/-.*//') + BIN_SUFFIX := .exe else -PLATFORM := $(shell uname -s | tr '[:upper:]' '[:lower:]') -DIST_SUFFIX := $(GOOS)-$(GOARCH) -DIST_EXT := .tar.gz -DIST_OPTS := -czf + PLATFORM := $(shell uname -s | tr '[:upper:]' '[:lower:]') + DIST_SUFFIX := $(GOOS)-$(GOARCH) + DIST_EXT := .tar.gz + DIST_OPTS := -czf endif PKG_NAME := $(PROJECT_ID)_$(VERSION)_$(DIST_SUFFIX) @@ -78,7 +81,7 @@ build: vendor $(addprefix $(BINDIR)/, $(APPS)) ## Build your project and put the $(BINDIR)/%: cmd/%/main.go $(patsubst cmd/%/main.go,cmd/%/*.go,$<) @rm -f "$(BINDIR)/$(BIN_PREFIX)$(patsubst cmd/%/main.go,%,$<)$(BIN_SUFFIX)" - GO111MODULE=on $(GOCMD) build $(GO_OPT_BASE) $(GO_OPT) \ + GO111MODULE=on $(TIMECMD) $(GOCMD) build $(GO_OPT_BASE) $(GO_OPT) \ -o "$(BINDIR)/$(BIN_PREFIX)$(patsubst cmd/%/main.go,%,$<)$(BIN_SUFFIX)" \ $(patsubst %/main.go,./%,$<) @@ -103,9 +106,9 @@ clean: ## Remove build related files ## Package ifeq ($(OS),Windows_NT) -PACKAGE_TARGETS := pkg-msi + PACKAGE_TARGETS := pkg-msi else -PACKAGE_TARGETS := pkg-deb + PACKAGE_TARGETS := pkg-deb endif package: $(PACKAGE_TARGETS) ## Build all available packages @@ -175,7 +178,7 @@ ifeq ($(EXPORT_RESULT), true) @mkdir -p $(OUTDIR) $(eval OUTPUT_OPTIONS = | go-junit-report -set-exit-code > $(OUTDIR)/junit-report.xml) endif - $(GOTEST) -v $(GO_OPT) ./... $(OUTPUT_OPTIONS) + $(TIMECMD) $(GOTEST) $(TEST_OPT) ./... $(OUTPUT_OPTIONS) @$(ECHO_CMD) "Test\t\t${GREEN}[OK]${RESET}" .PHONY:test diff --git a/pkg/drawio/export_test.go b/pkg/drawio/export_test.go index f60d418..076fbb9 100644 --- a/pkg/drawio/export_test.go +++ b/pkg/drawio/export_test.go @@ -327,13 +327,19 @@ func init() { } func TestDiagrams(t *testing.T) { + assert := assert.New(t) + for _, test := range testData { t.Run(test.name, func(t *testing.T) { + t.Parallel() + for filePath, source := range test.files { t.Run(filePath, func(t *testing.T) { + t.Parallel() + diagrams, err := drawio.Diagrams(strings.NewReader(source.data)) - assert.NoError(t, err) - assert.ElementsMatch(t, source.diagrams, diagrams) + assert.NoError(err) + assert.ElementsMatch(source.diagrams, diagrams) }) } }) @@ -341,14 +347,22 @@ func TestDiagrams(t *testing.T) { } func TestExportFile(t *testing.T) { + assert := assert.New(t) + for _, test := range testData { t.Run(test.name, func(t *testing.T) { + t.Parallel() + for filePath, source := range test.files { var openOpt drawio.Option = drawio.WithNop() + if len(source.output) > 0 { openOpt = drawio.WithOutput(source.output) } + t.Run(filePath, func(t *testing.T) { + t.Parallel() + var ( openFileCalls = []string{} exp = drawio.New( @@ -359,12 +373,15 @@ func TestExportFile(t *testing.T) { openOpt, ) ) + commands, err := exp.ExportFile(filePath, []string{}) - assert.NoError(t, err) - if assert.Equal(t, 1, len(openFileCalls)) { - assert.Equal(t, filePath, openFileCalls[0]) + assert.NoError(err) + + if assert.Equal(1, len(openFileCalls)) { + assert.Equal(filePath, openFileCalls[0]) } - assert.ElementsMatch(t, source.commands, cmd2info(commands)) + + assert.ElementsMatch(source.commands, cmd2info(commands)) }) } }) @@ -372,11 +389,14 @@ func TestExportFile(t *testing.T) { } func TestExportDir(t *testing.T) { + assert := assert.New(t) + for _, recursive := range []bool{false, true} { var ( name string recursiveOption drawio.Option ) + if recursive { name = "recursive" recursiveOption = drawio.WithRecursive() @@ -384,9 +404,14 @@ func TestExportDir(t *testing.T) { name = "non-recursive" recursiveOption = drawio.WithNop() } + t.Run(name, func(t *testing.T) { + t.Parallel() + for _, test := range testData { t.Run(test.name, func(t *testing.T) { + t.Parallel() + var ( openFileCalls = []string{} exp = drawio.New( @@ -402,17 +427,20 @@ func TestExportDir(t *testing.T) { recursiveOption, ) ) + for dir := range test.dirs { pathDir, _ := path.Split(dir) - if len(pathDir) > 0 { + if pathDir != "" { continue } + t.Run(dir, func(t *testing.T) { + t.Parallel() + openFileCalls = openFileCalls[:0] commands, err := exp.ExportDir(dir, []string{}) - assert.NoError(t, err) - assert.ElementsMatch(t, - test.dirCommands(dir, recursive), cmd2info(commands)) + assert.NoError(err) + assert.ElementsMatch(test.dirCommands(dir, recursive), cmd2info(commands)) }) } }) diff --git a/pkg/drawio/options_internal_test.go b/pkg/drawio/options_internal_test.go index 56e3a3d..5cb9f1b 100644 --- a/pkg/drawio/options_internal_test.go +++ b/pkg/drawio/options_internal_test.go @@ -10,6 +10,8 @@ import ( ) func TestOptions(t *testing.T) { + assert := assert.New(t) + testData := []struct { name string // Наименование теста opts []Option // Параметры @@ -105,16 +107,21 @@ func TestOptions(t *testing.T) { }, }, } + for _, test := range testData { t.Run(test.name, func(t *testing.T) { + t.Parallel() + options := Options{} + for _, opt := range test.opts { opt.apply(&options) } - assert.Equal(t, test.app, options.App()) - assert.Equal(t, test.outdir, options.OutDir()) - assert.Equal(t, test.outext, options.OutExt()) - assert.ElementsMatch(t, test.args, options.Args()) + + assert.Equal(test.app, options.App()) + assert.Equal(test.outdir, options.OutDir()) + assert.Equal(test.outext, options.OutExt()) + assert.ElementsMatch(test.args, options.Args()) }) } } @@ -125,8 +132,12 @@ func openFile(name string) (io.ReadCloser, error) { } func TestOptionsOpenFileFunc(t *testing.T) { + t.Parallel() + + assert := assert.New(t) opts := New(WithOpenFile(openFile)) - assert.Equal(t, + + assert.Equal( reflect.ValueOf(openFile).Pointer(), reflect.ValueOf(opts.openFile).Pointer(), ) @@ -137,8 +148,12 @@ func readDir(name string) ([]os.DirEntry, error) { } func TestOptionsReadDirFunc(t *testing.T) { + t.Parallel() + + assert := assert.New(t) opts := New(WithReadDir(readDir)) - assert.Equal(t, + + assert.Equal( reflect.ValueOf(readDir).Pointer(), reflect.ValueOf(opts.readDir).Pointer(), ) diff --git a/pkg/drawio/options_test.go b/pkg/drawio/options_test.go index 860918e..dafce7a 100644 --- a/pkg/drawio/options_test.go +++ b/pkg/drawio/options_test.go @@ -8,6 +8,8 @@ import ( ) func TestFormat(t *testing.T) { + assert := assert.New(t) + testData := []struct { name string err error @@ -57,19 +59,21 @@ func TestFormat(t *testing.T) { ext: "", }, } + for _, test := range testData { t.Run(test.name, func(t *testing.T) { - var ( - v drawio.Format - err error - ) - err = (&v).Set(test.name) + t.Parallel() + + var v drawio.Format + + err := (&v).Set(test.name) + if test.err == nil { - assert.Equal(t, test.name, test.format.String()) - assert.NoError(t, err) + assert.Equal(test.name, test.format.String()) + assert.NoError(err) } else { - assert.ErrorIs(t, err, test.err) - assert.ErrorContains(t, err, test.err.Error()) + assert.ErrorIs(err, test.err) + assert.ErrorContains(err, test.err.Error()) } }) } diff --git a/report.xml b/report.xml deleted file mode 100644 index d2d8131..0000000 --- a/report.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -