hunk.code_window:     sourceType: 'unambiguous',
   };
   // Jest needs module transformation
   config.env = {
       test: {
           presets: config.presets,
  
hunk.labels: keep keep keep replace keep keep keep
hunk.file_path: webapp/channels/babel.config.js
hunk.type: replace
file: // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
  // See LICENSE.txt for license information.
  
  package plugin
  
  import (
  	"os"
  	"path/filepath"
  	"testing"
  
  	"github.com/stretchr/testify/assert"
  	"github.com/stretchr/testify/require"
  
  	"github.com/mattermost/mattermost-server/server/public/model"
  	"github.com/mattermost/mattermost-server/server/public/plugin/utils"
  	"github.com/mattermost/mattermost-server/server/public/shared/mlog"
  )
  
  func TestSupervisor(t *testing.T) {
  	for name, f := range map[string]func(*testing.T){
  		"Supervisor_InvalidExecutablePath":     testSupervisorInvalidExecutablePath,
  		"Supervisor_NonExistentExecutablePath": testSupervisorNonExistentExecutablePath,
  		"Supervisor_StartTimeout":              testSupervisorStartTimeout,
  	} {
  		t.Run(name, f)
  	}
  }
  
  func testSupervisorInvalidExecutablePath(t *testing.T) {
  	dir, err := os.MkdirTemp("", "")
  	require.NoError(t, err)
  	defer os.RemoveAll(dir)
  
  	os.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "server": {"executable": "/foo/../../backend.exe"}}`), 0600)
  
  	bundle := model.BundleInfoForPath(dir)
  	log := mlog.CreateConsoleTestLogger(true, mlog.LvlError)
  	defer log.Shutdown()
  	supervisor, err := newSupervisor(bundle, nil, nil, log, nil)
  	assert.Nil(t, supervisor)
  	assert.Error(t, err)
  }
  
  func testSupervisorNonExistentExecutablePath(t *testing.T) {
  	dir, err := os.MkdirTemp("", "")
  	require.NoError(t, err)
  	defer os.RemoveAll(dir)
  
  	os.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "server": {"executable": "thisfileshouldnotexist"}}`), 0600)
  
  	bundle := model.BundleInfoForPath(dir)
  	log := mlog.CreateConsoleTestLogger(true, mlog.LvlError)
  	defer log.Shutdown()
  	supervisor, err := newSupervisor(bundle, nil, nil, log, nil)
  	require.Error(t, err)
  	require.Nil(t, supervisor)
  }
  
  // If plugin development goes really wrong, let's make sure plugin activation won't block forever.
  func testSupervisorStartTimeout(t *testing.T) {
  	dir, err := os.MkdirTemp("", "")
  	require.NoError(t, err)
  	defer os.RemoveAll(dir)
  
  	backend := filepath.Join(dir, "backend.exe")
  	utils.CompileGo(t, `
  		package main
  
  		func main() {
  			for {
  			}
  		}
  	`, backend)
  
  	os.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "server": {"executable": "backend.exe"}}`), 0600)
  
  	bundle := model.BundleInfoForPath(dir)
  	log := mlog.CreateConsoleTestLogger(true, mlog.LvlError)
  	defer log.Shutdown()
  	supervisor, err := newSupervisor(bundle, nil, nil, log, nil)
  	require.Error(t, err)
  	require.Nil(t, supervisor)
  }
  