(t *testing.T)
| 1125 | } |
| 1126 | |
| 1127 | func TestIssue55(t *testing.T) { |
| 1128 | t.Parallel() |
| 1129 | |
| 1130 | writeObject := func(fs billy.Filesystem) { |
| 1131 | t.Helper() |
| 1132 | |
| 1133 | dir := New(fs) |
| 1134 | err := dir.Initialize() |
| 1135 | require.NoError(t, err) |
| 1136 | |
| 1137 | w, err := dir.NewObject() |
| 1138 | require.NoError(t, err) |
| 1139 | |
| 1140 | err = w.WriteHeader(plumbing.BlobObject, 14) |
| 1141 | require.NoError(t, err) |
| 1142 | n, err := w.Write([]byte("this is a test")) |
| 1143 | require.NoError(t, err) |
| 1144 | assert.Equal(t, 14, n) |
| 1145 | |
| 1146 | assert.Equal(t, "a8a940627d132695a9769df883f85992f0ff4a43", w.Hash().String()) |
| 1147 | |
| 1148 | err = w.Close() |
| 1149 | require.NoError(t, err) |
| 1150 | } |
| 1151 | |
| 1152 | for _, tc := range []struct { |
| 1153 | name string |
| 1154 | fs billy.Filesystem |
| 1155 | }{ |
| 1156 | {"BoundOS", osfs.New(t.TempDir(), osfs.WithBoundOS())}, |
| 1157 | {"ChrootOS", osfs.New(t.TempDir(), osfs.WithChrootOS())}, |
| 1158 | } { |
| 1159 | t.Run(tc.name, func(t *testing.T) { |
| 1160 | t.Parallel() |
| 1161 | path := filepath.Join("objects", "a8", "a940627d132695a9769df883f85992f0ff4a43") |
| 1162 | |
| 1163 | writeObject(tc.fs) |
| 1164 | i, err := tc.fs.Stat(path) |
| 1165 | require.NoError(t, err) |
| 1166 | assert.Equal(t, int64(34), i.Size()) |
| 1167 | |
| 1168 | ro, err := isReadOnly(tc.fs, path) |
| 1169 | require.NoError(t, err) |
| 1170 | assert.True(t, ro, "file %q is not read-only", path) |
| 1171 | |
| 1172 | // Recreate the same object. |
| 1173 | writeObject(tc.fs) |
| 1174 | i, err = tc.fs.Stat(path) |
| 1175 | require.NoError(t, err) |
| 1176 | assert.Equal(t, int64(34), i.Size()) |
| 1177 | |
| 1178 | ro, err = isReadOnly(tc.fs, path) |
| 1179 | require.NoError(t, err) |
| 1180 | assert.True(t, ro, "file %q is not read-only", path) |
| 1181 | }) |
| 1182 | } |
| 1183 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…