mattermost/server/tests
Jesse Hallam e3fbf8711f
MM-68149: Upgrade to Go 1.26.2 (#36418)
* MM-68149: upgrade to Go 1.26.2

Update go directive in go.mod and .go-version.

* MM-68149: replace pointer helpers with Go 1.26 new()

Go 1.26 extends the built-in new() to accept an initial value expression,
making typed-pointer helpers like model.NewPointer(x), bToP(x), and boolPtr(x)
redundant. Replace every call site with new(x) and remove the now-unused
helper functions and their //go:fix inline directives.

* MM-68149: apply go fix for reflect API and format-string changes

- reflect.Ptr → reflect.Pointer (renamed in Go 1.18, deprecated alias removed in 1.26)
- reflect range-over-struct: for i := 0; i < t.NumField(); i++ → for field := range t.Fields()
  and the equivalent for Methods() and interface types
- Fix format-string concatenation and variadic-arg mismatches flagged by go vet

* MM-68149: update JPEG fixtures and test infrastructure for Go 1.26 encoder

Go 1.26 ships a new image/jpeg encoder that produces slightly different output.
Regenerate all JPEG fixture files and switch the comparison helpers from
byte-equality to pixel-level comparison with a small per-channel tolerance,
so minor encoder drift across patch versions is handled automatically.

Add -update-fixtures flag to make it easy to regenerate fixtures after future
major Go upgrades. Document the update procedure in tests/README.md.

* MM-68149: CI check that go fix ./... produces no changes

* Fix real bugs flagged by CodeRabbit review

- group.go: set newGroup.MemberCount not group.MemberCount (member count
  was populated on the wrong variable and lost before publish/return)
- file_test.go: guard compareImage(GetFilePreview) on the preview slice
  length, not the thumbnail slice length (copy-paste error)
- config_test.go: remove duplicate MinimumLength assignment

* fixup! Fix real bugs flagged by CodeRabbit review
2026-05-12 15:59:12 +00:00
..
exif_samples Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
1x10000.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
1x10000_expected_preview.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
1x10000_expected_thumb.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
10000x1.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
10000x1_expected_preview.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
10000x1_expected_thumb.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
bulk_insert_chunk_test.jsonl MM-68076 Chunk bulk INSERTs to respect PostgreSQL parameter limit (#35767) 2026-03-30 22:40:40 -04:00
channel-role-has-permission.csv Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
custom-schema-cpa.ldif MM-62704: Add Custom Profile Attributes to the LDAP synchronization process (#30443) 2025-04-11 19:41:26 +02:00
custom-schema-objectID.ldif MM-62930: Add validation of LDAP attribute values. (#30419) 2025-04-14 13:29:42 +02:00
development-private-key.asc Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
development-public-key.asc Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
development-public-key.gpg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
export_test.zip Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
export_test_with_nested_jsonl.zip fix: only match root-level JSONL files when importing a zip (#35481) 2026-03-05 15:20:17 +01:00
Fake_Team_Import.rar Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
Fake_Team_Import.tar.gz Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
Fake_Team_Import.zip Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_palette.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_palette_out.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_rgb.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_rgb_out.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_rgba.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_8bit_rgba_out.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_16bit_rgb.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_16bit_rgb_out.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_16bit_rgba.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_16bit_rgba_out.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_input.png [MM-62191] Remove disintegration/imaging dependency (#29657) 2025-02-03 11:04:00 +05:30
fill_test_opaque.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
fill_test_output_45x45.png Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
fill_test_output_45x100.png Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
fill_test_output_100x45.png Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
fill_test_output_100x100.png Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
group-role-has-permission.csv Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
import_test.zip [MM-62775] Fix: Bulk export not completing (#30044) 2025-02-04 17:56:11 -05:00
large_image_file.jpg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
large_lzw_frame.gif MM-52720: use an io.LimitedReader in gif frame counting (#23372) 2023-05-11 12:47:07 +03:00
mini_preview_test_qa_data_graph_16x16_q90.jpg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_1.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_1_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_1_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_2.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_2_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_2_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_3.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_3_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_3_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_4.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_4_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_4_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_5.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_5_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_5_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_6.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_6_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_6_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_7.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_7_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_7_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_8.jpeg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
orientation_test_8_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_8_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_9.jpeg [MM-63436] Replace Exif parser dependency (#30479) 2025-04-01 13:57:43 -06:00
orientation_test_9_expected_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
orientation_test_9_expected_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
preview_test_qa_data_graph_1024.png Replace bild imaging library with boxes-ltd/imaging (#36261) 2026-05-11 12:56:51 +00:00
qa-data-graph.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
qa-data.ldif Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
README.md MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
sample-doc.doc Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.docx Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.odp Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.odt Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.pdf Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.pptx Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
sample-doc.rtf Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
shared_channel_sync_plugin_test.go.tmpl MM-68191: Add plugin Receive APIs for shared channel sync (#35962) 2026-04-14 14:31:25 -04:00
slack-import-test-channels.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
slack-import-test-direct-messages.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
slack-import-test-group-direct-messages.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
slack-import-test-posts.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
slack-import-test-private-channels.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
slack-import-test-users.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-attachments.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-config.json [MM-67605] Add DCR redirect URI allowlist for OAuth DCR (#35291) 2026-02-19 01:06:08 +00:00
test-data-graph.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-data.ldif MM-62930: Add validation of LDAP attribute values. (#30419) 2025-04-14 13:29:42 +02:00
test-emoticons1.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-emoticons2.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-emoticons3.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-emoticons4.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-emoticons5.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-emoticons6.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-hashtags.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-link-preview.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-links.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-markdown-basics.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-markdown-lists.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-mentions.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-public-key.plugin.gpg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-search.md Update link preview URL in test-search.md (#27398) 2024-06-20 14:48:22 +08:00
test-slack-attachments.json Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-syntax-highlighting.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test-tables.md Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test.png Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test.svg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test.tiff Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
test_expected_tiff_preview.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
test_expected_tiff_thumb.jpeg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
test_img_diff_A.png [MM-57500] Streaming support for importing file attachments (#26629) 2024-04-19 15:49:33 -06:00
test_img_diff_B.png [MM-57500] Streaming support for importing file attachments (#26629) 2024-04-19 15:49:33 -06:00
testarchive.zip Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
testgif.gif Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
testgif_expected_preview.jpg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
testgif_expected_thumbnail.jpg MM-68149: Upgrade to Go 1.26.2 (#36418) 2026-05-12 15:59:12 +00:00
testjpg.jpg Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
testplugin-v0.0.2.tar.gz MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin-v0.0.2.tar.gz.asc MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin-v0.0.2.tar.gz.sig MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin.tar.gz Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
testplugin.tar.gz.asc MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin.tar.gz.sig MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin2.tar.gz Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
testplugin2.tar.gz.asc MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testplugin2.tar.gz.sig MM-53355: install transitionally prepackaged plugins to filestore (#24225) 2023-08-17 12:46:57 -03:00
testwebp.webp Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
tls_test_cert.pem Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00
tls_test_key.pem Mono repo -> Master (#22553) 2023-03-22 17:22:27 -04:00

Testing Text Processing

The text processing tests located in the doc/developer/tests folder are designed for use with the /test url command in isolated non-production test environments. This command posts the raw contents of a specified .md file in the doc/developer/tests folder into Mattermost.

Turning on /test

Access the System Console from the Main Menu. Under Environment > Developer make sure that Enable Testing Commands is set to true, then click Save. You may also change this setting from config.json by setting "EnableTesting": true. This setting is intended only for isolated non-production environments with test users and sample data, and must never be enabled in production. Changing this setting requires a server restart to take effect.

Running the Tests

In the text input box in Mattermost, type: /test url [file-name-in-testing-folder].md. Some examples:

/test url test-emoticons.md
/test url test-links.md

Notes:

  1. If a test has prerequisites, make sure your Mattermost setup meets the requirements described at the top of the test file.
  2. Some tests are over 4000 characters in length and will render across multiple posts.

Manual Testing

It is possible to manually test specific sections of any test, instead of using the /test command. Do this by clicking Raw in the header for the file when its open in GitHub, then copy and paste any section into Mattermost to post it. Manual testing only supports sections of 4000 characters or less per post.

Test plugins

There are three test plugins: testplugin.tar.gz, testplugin-v0.0.2.tar.gz, and testplugin2.tar.gz. These are use in some integration tests in the api4 package. Any changes to the plugin bundles require updating the corresponding signatures.

First, import the public and private development key:

gpg --import ./development-public-key.gpg
gpg --import ./development-private-key.asc

This has to be done only once.

Then update the signatures:

gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin-v0.0.2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin-v0.0.2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin2.tar.gz

Finally, include the updates bundles and signatures in your commit.

Image fixtures

The api4 package tests compare server-generated image thumbnails and previews against fixture files (e.g. orientation_test_1_expected_thumb.jpeg). Comparisons are pixel-based with a small tolerance, so minor encoder drift across patch releases is handled automatically.

However, Go's image/jpeg encoder has changed incompatibly across major versions (e.g. Go 1.25 → 1.26). When upgrading Go, regenerate the JPEG fixtures by running:

go test -run "TestUploadFiles/.*thumbnail" ./channels/api4/ -args -update-fixtures
go test -run "TestGenerateMiniPreviewImage" ./channels/app/imaging/ -args -update-fixtures

Run both from server/. Commit the updated fixture files alongside the Go version bump.