Reduce test execution time through smart waiting and selective parallelization.
Changes:
- Replace fixed sleep delays with condition-based waiting (20ms polling)
- Add CI-aware timeout multiplier (2x in CI environments)
- Enable parallel execution for 30+ pure function tests
- Add test and test-ci Make targets
- Update GitHub Actions workflow with CI flag and timeout
Performance:
- Before: ~60 seconds
- After: ~35 seconds
- Improvement: 42% faster (25 seconds saved)
Technical details:
- New helpers: waitForCondition(), waitForEngineState() in test_util.go
- Optimized tests: TestRebuild, TestRun, TestRebuildWhenRunCmdUsingDLV, etc.
- Parallelized: config_test.go (6 tests), flag_test.go (1 test), util_test.go (13 tests)
- Avoided parallelizing tests with global state (os.Setenv, os.Chdir, signal handlers)
Limitations:
- Some tests cannot be parallelized due to Go 1.25 restrictions on t.Parallel() + t.Setenv()
- Pre-existing race conditions in engine tests remain (not addressed in this change)
* upgrade the actions for checkout and golang
* delete the unstale windows golanglint-ci
* use relative path
* Update golangci-lint setup for Windows workflow
* Remove Windows smoke test workflow
* chore: update Go version to 1.25.1 and dependencies
- Updated Dockerfile to use Go 1.25.1 for both builder and final images.
- Modified README files (Japanese, Chinese Simplified, Chinese Traditional, and English) to reflect the new Go version requirement of 1.25.1.
- Updated go.mod to specify Go 1.25 and updated dependencies:
- Upgraded hugo from v0.147.6 to v0.149.1
- Upgraded testify from v1.10.0 to v1.11.1
- Upgraded other indirect dependencies to their latest versions.
- Updated go.sum to reflect the changes in dependencies.
* fix: update golangci-lint to use latest version and install mode
* add base golangci-lint
* fix linting errors: unused var t, unexported-return
```
runner/util_test.go:237:34: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
func TestGetStructureFieldTagMap(t *testing.T) {
```
```
main.go:54:1: exported function GetVersionInfo should have comment or be unexported
main.go:54:23: exported func GetVersionInfo returns unexported type main.versionInfo, which can be annoying to use
```
* go mod tidy -go=1.17
* update docker base image to go 1.17
* use go1.17 in github actions
* Install using `go get` has been deprecated in 1.16, so use `go install` command