@@ -18,8 +18,6 @@ import (
1818 "bytes"
1919 "context"
2020 "fmt"
21- "os"
22- "path/filepath"
2321 "testing"
2422
2523 "github.com/slackapi/slack-cli/internal/api"
@@ -31,6 +29,7 @@ import (
3129 "github.com/slackapi/slack-cli/internal/shared/types"
3230 "github.com/slackapi/slack-cli/internal/slackcontext"
3331 "github.com/slackapi/slack-cli/internal/slackerror"
32+ "github.com/spf13/afero"
3433 "github.com/stretchr/testify/assert"
3534 "github.com/stretchr/testify/mock"
3635 "github.com/stretchr/testify/require"
@@ -1734,78 +1733,72 @@ func Test_resolveIconPath(t *testing.T) {
17341733 tests := map [string ]struct {
17351734 envIconPath string
17361735 manifestIcon string
1737- setupFiles func (t * testing.T , dir string )
1736+ setupFiles func (t * testing.T , fs afero. Fs )
17381737 expected string
17391738 }{
17401739 "env var takes priority over manifest icon" : {
17411740 envIconPath : "env-icon.png" ,
17421741 manifestIcon : "manifest-icon.png" ,
1743- setupFiles : func (t * testing.T , dir string ) {
1744- require .NoError (t , os .WriteFile (filepath . Join ( dir , "env-icon.png" ) , []byte ("img" ), 0o644 ))
1745- require .NoError (t , os .WriteFile (filepath . Join ( dir , "manifest-icon.png" ) , []byte ("img" ), 0o644 ))
1742+ setupFiles : func (t * testing.T , fs afero. Fs ) {
1743+ require .NoError (t , afero .WriteFile (fs , "env-icon.png" , []byte ("img" ), 0o644 ))
1744+ require .NoError (t , afero .WriteFile (fs , "manifest-icon.png" , []byte ("img" ), 0o644 ))
17461745 },
17471746 expected : "env-icon.png" ,
17481747 },
1749- "env var takes priority over icon.png fallback" : {
1748+ "env var takes priority over fallback" : {
17501749 envIconPath : "env-icon.png" ,
1751- setupFiles : func (t * testing.T , dir string ) {
1752- require .NoError (t , os .WriteFile (filepath . Join ( dir , "env-icon.png" ) , []byte ("img" ), 0o644 ))
1753- require .NoError (t , os .WriteFile (filepath . Join ( dir , "icon.png" ) , []byte ("img" ), 0o644 ))
1750+ setupFiles : func (t * testing.T , fs afero. Fs ) {
1751+ require .NoError (t , afero .WriteFile (fs , "env-icon.png" , []byte ("img" ), 0o644 ))
1752+ require .NoError (t , afero .WriteFile (fs , "assets/ icon.png" , []byte ("img" ), 0o644 ))
17541753 },
17551754 expected : "env-icon.png" ,
17561755 },
17571756 "manifest icon used when no env var" : {
17581757 manifestIcon : "manifest-icon.png" ,
1759- setupFiles : func (t * testing.T , dir string ) {
1760- require .NoError (t , os .WriteFile (filepath . Join ( dir , "manifest-icon.png" ) , []byte ("img" ), 0o644 ))
1758+ setupFiles : func (t * testing.T , fs afero. Fs ) {
1759+ require .NoError (t , afero .WriteFile (fs , "manifest-icon.png" , []byte ("img" ), 0o644 ))
17611760 },
17621761 expected : "manifest-icon.png" ,
17631762 },
1764- "falls back to icon.png when no env var or manifest" : {
1765- setupFiles : func (t * testing.T , dir string ) {
1766- require .NoError (t , os .WriteFile (filepath .Join (dir , "icon.png" ), []byte ("img" ), 0o644 ))
1763+ "falls back to assets/icon.png when no env var or manifest" : {
1764+ setupFiles : func (t * testing.T , fs afero.Fs ) {
1765+ require .NoError (t , afero .WriteFile (fs , "assets/icon.png" , []byte ("img" ), 0o644 ))
1766+ },
1767+ expected : "assets/icon.png" ,
1768+ },
1769+ "falls back to icon.png in root when no assets" : {
1770+ setupFiles : func (t * testing.T , fs afero.Fs ) {
1771+ require .NoError (t , afero .WriteFile (fs , "icon.png" , []byte ("img" ), 0o644 ))
17671772 },
17681773 expected : "icon.png" ,
17691774 },
17701775 "returns empty when no icon found" : {
1771- setupFiles : func (t * testing.T , dir string ) {},
1776+ setupFiles : func (t * testing.T , fs afero. Fs ) {},
17721777 expected : "" ,
17731778 },
17741779 "env var file not found returns empty" : {
17751780 envIconPath : "missing-icon.png" ,
17761781 manifestIcon : "manifest-icon.png" ,
1777- setupFiles : func (t * testing.T , dir string ) {
1778- require .NoError (t , os .WriteFile (filepath . Join ( dir , "manifest-icon.png" ) , []byte ("img" ), 0o644 ))
1782+ setupFiles : func (t * testing.T , fs afero. Fs ) {
1783+ require .NoError (t , afero .WriteFile (fs , "manifest-icon.png" , []byte ("img" ), 0o644 ))
17791784 },
17801785 expected : "" ,
17811786 },
17821787 "manifest icon file not found returns empty with warning" : {
17831788 manifestIcon : "missing-manifest-icon.png" ,
1784- setupFiles : func (t * testing.T , dir string ) {
1785- require .NoError (t , os .WriteFile (filepath . Join ( dir , "icon.png" ) , []byte ("img" ), 0o644 ))
1789+ setupFiles : func (t * testing.T , fs afero. Fs ) {
1790+ require .NoError (t , afero .WriteFile (fs , "assets/ icon.png" , []byte ("img" ), 0o644 ))
17861791 },
17871792 expected : "" ,
17881793 },
1789- "manifest icon file not found and no icon.png returns empty" : {
1790- manifestIcon : "missing-manifest-icon.png" ,
1791- setupFiles : func (t * testing.T , dir string ) {},
1792- expected : "" ,
1793- },
17941794 }
17951795 for name , tc := range tests {
17961796 t .Run (name , func (t * testing.T ) {
1797- dir := t .TempDir ()
1798- tc .setupFiles (t , dir )
1799-
1800- origDir , err := os .Getwd ()
1801- require .NoError (t , err )
1802- require .NoError (t , os .Chdir (dir ))
1803- defer func () { require .NoError (t , os .Chdir (origDir )) }()
1804-
18051797 ctx := slackcontext .MockContext (t .Context ())
18061798 clientsMock := shared .NewClientsMock ()
18071799 clientsMock .AddDefaultMocks ()
18081800 clientsMock .Config .AppIconPathFlag = tc .envIconPath
1801+ tc .setupFiles (t , clientsMock .Fs )
18091802 output := & bytes.Buffer {}
18101803 clientsMock .IO .Stdout .SetOutput (output )
18111804 clients := shared .NewClientFactory (clientsMock .MockClientFactory ())
0 commit comments