Files
mattermost/tools
Jesse Hallam 791fc09b5d Test and lint mmgotool in CI (#38338)
* Fix the pre-existing lint failures in mmgotool

Nothing lints this module yet, so these accumulated: an unchecked Close on the
en.json write path, two unused walk parameters, a nil initialiser and three
redundant breaks. The Close is the only behaviour change -- en.json is
regenerated wholesale, so a failed flush would otherwise truncate it silently.

* Test and lint mmgotool in CI

tools-ci.yml only ever covered mattermost-govet, and each tool under tools/ is
its own Go module that the server and mmctl suites cannot reach -- so mmgotool
was tested and linted nowhere. Matrix both jobs over the two modules and give
mmgotool the Makefile and golangci config the matrix expects.
2026-09-04 20:35:33 +00:00
..

Tools

This directory aims to provide a set of tools that simplify and enhance various development tasks. This README file serves as a guide to help you understand the directory, features of these tools, and how to get started using it. This is a collection of utilities and scripts designed to streamline common development tasks for Mattermost. These tools aim to help automate repetitive tasks and improve productivity.

Included tools

  • mattermost-govet: custom Go vet analyzers enforcing Mattermost-specific code conventions (structured logging, error handling, SQL safety, etc.). Used by make vet in the server.
  • mmgotool: is a CLI to help with i18n related checks for the mattermost/server development.
  • sharedchannel-test: integration test tool that validates shared channel synchronization (posts, reactions, membership) between two real Mattermost server instances.

Installation & Usage

mmgotool

To install mmgotool, simply run the following command: go install github.com/mattermost/mattermost/tools/mmgotool

Make sure you have the necessary prerequisites such as Go compiler.

mmgotool i18n has following subcommands described below:

  • check: Check translations
  • check-empty-src: Check for empty translation source strings
  • clean-empty: Clean empty translations
  • extract: Extract translations

sharedchannel-test

Stands up two Mattermost Enterprise instances, creates a remote cluster connection, and runs integration tests for shared channel synchronization (membership, posts, reactions).

Prerequisites:

  • make start-docker (Postgres and friends running)
  • Enterprise repo present at ../../enterprise
  • An enterprise license file

Usage:

# Managed mode (builds server, starts/stops both instances automatically)
cd tools/sharedchannel-test
go run . --license /path/to/license.mattermost-license --server-dir ../../server

# External mode (connect to already-running instances)
go run . --license /path/to/license.mattermost-license --manage=false \
  --server-a http://localhost:9065 --server-b http://localhost:9066