MCPcopy Index your code
hub / github.com/coder/coder / TestExtractOrReadBinFS

Function TestExtractOrReadBinFS

site/site_test.go:805–890  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

803}
804
805func TestExtractOrReadBinFS(t *testing.T) {
806 t.Parallel()
807 t.Run("DoubleExtractDoesNotModifyFiles", func(t *testing.T) {
808 t.Parallel()
809
810 siteFS := sampleBinFS()
811 dest := t.TempDir()
812 _, _, err := site.ExtractOrReadBinFS(dest, siteFS)
813 require.NoError(t, err)
814
815 checkModtime := func() map[string]time.Time {
816 m := make(map[string]time.Time)
817
818 err = filepath.WalkDir(dest, func(path string, d fs.DirEntry, err error) error {
819 if err != nil {
820 return err
821 }
822 if d.IsDir() {
823 return nil // Only check the files.
824 }
825 stat, err := d.Info()
826 if err != nil {
827 return err
828 }
829
830 m[path] = stat.ModTime()
831 return nil
832 })
833 require.NoError(t, err)
834
835 return m
836 }
837
838 firstModtimes := checkModtime()
839
840 _, _, err = site.ExtractOrReadBinFS(dest, siteFS)
841 require.NoError(t, err)
842
843 secondModtimes := checkModtime()
844
845 assert.Equal(t, firstModtimes, secondModtimes, "second extract should not modify files")
846 })
847 t.Run("SHA256MismatchCausesReExtract", func(t *testing.T) {
848 t.Parallel()
849
850 siteFS := sampleBinFS()
851 dest := t.TempDir()
852 _, _, err := site.ExtractOrReadBinFS(dest, siteFS)
853 require.NoError(t, err)
854
855 bin := filepath.Join(dest, "bin", "coder-linux-amd64")
856 f, err := os.OpenFile(bin, os.O_WRONLY, 0o600)
857 require.NoError(t, err)
858
859 dontWant := []byte("hello")
860 _, err = f.WriteAt(dontWant, 0) // Overwrite the start of file.
861 assert.NoError(t, err) // Assert to allow f.Close.
862

Callers

nothing calls this directly

Calls 9

ExtractOrReadBinFSFunction · 0.92
sampleBinFSFunction · 0.85
RunMethod · 0.65
TempDirMethod · 0.65
CloseMethod · 0.65
ReadMethod · 0.65
InfoMethod · 0.45
EqualMethod · 0.45
OpenMethod · 0.45

Tested by

no test coverage detected