github.com/exercism/v2-configlet@v3.9.2+incompatible/cmd/fmt_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestFmtCommand(t *testing.T) {
    13  	trackCfg, err := ioutil.ReadFile(filepath.FromSlash("../fixtures/format/formatted/config.json"))
    14  	if err != nil {
    15  		t.Fatal(err)
    16  	}
    17  
    18  	maintainerCfg, err := ioutil.ReadFile(filepath.FromSlash("../fixtures/format/formatted/config/maintainers.json"))
    19  	if err != nil {
    20  		t.Fatal(err)
    21  	}
    22  
    23  	// The fmt command does not rewrite a correctly formatted file.
    24  	formattedDir, err := ioutil.TempDir("", "formatted")
    25  	if err != nil {
    26  		t.Fatal(err)
    27  	}
    28  	defer os.Remove(formattedDir)
    29  	runFmt("../fixtures/format/formatted/", formattedDir, false)
    30  
    31  	_, err = os.Stat(filepath.Join(formattedDir, "config.json"))
    32  	assert.True(t, os.IsNotExist(err))
    33  
    34  	_, err = os.Stat(filepath.Join(formattedDir, "config", "maintainers.json"))
    35  	assert.True(t, os.IsNotExist(err))
    36  
    37  	// It rewrites an incorrectly formatted file.
    38  	malformedDir, err := ioutil.TempDir("", "malformed")
    39  	if err != nil {
    40  		t.Fatal(err)
    41  	}
    42  	defer os.Remove(malformedDir)
    43  	runFmt("../fixtures/format/malformed/", malformedDir, false)
    44  
    45  	track, err := ioutil.ReadFile(filepath.Join(malformedDir, "config.json"))
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	assert.Equal(t, track, trackCfg)
    50  
    51  	maintainer, err := ioutil.ReadFile(filepath.Join(malformedDir, "config", "maintainers.json"))
    52  	if err != nil {
    53  		t.Fatal(err)
    54  	}
    55  	assert.Equal(t, maintainer, maintainerCfg)
    56  }
    57  
    58  func TestSemanticsOfMissingTopics(t *testing.T) {
    59  	semanticsDir, err := ioutil.TempDir("", "semantics")
    60  	if err != nil {
    61  		t.Fatal(err)
    62  	}
    63  	defer os.Remove(semanticsDir)
    64  	runFmt("../fixtures/format/semantics/", semanticsDir, false)
    65  
    66  	// No change; nothing should be written to out dir.
    67  	_, err = os.Stat(filepath.Join(semanticsDir, "config.json"))
    68  	assert.True(t, os.IsNotExist(err))
    69  }