@@ -26,85 +26,89 @@ import (
2626 "github.com/containerd/continuity/testutil"
2727)
2828
29- func TestSetupLoop (t * testing.T ) {
30- testutil .RequiresRoot (t )
31- const randomdata = "randomdata"
29+ var randomData = []byte ("randomdata" )
3230
33- /* Non-existing loop */
34- backingFile := "setup-loop-test-no-such-file"
35- _ , err := setupLoop (backingFile , LoopParams {})
36- if err == nil {
37- t .Fatalf ("setupLoop with non-existing file should fail" )
38- }
31+ func createTempFile (t * testing.T ) string {
32+ t .Helper ()
3933
4034 f , err := ioutil .TempFile ("" , "losetup" )
4135 if err != nil {
4236 t .Fatal (err )
4337 }
38+ defer f .Close ()
39+
4440 if err = f .Truncate (512 ); err != nil {
4541 t .Fatal (err )
4642 }
47- backingFile = f .Name ()
48- f .Close ()
43+
44+ return f .Name ()
45+ }
46+
47+ func TestNonExistingLoop (t * testing.T ) {
48+ testutil .RequiresRoot (t )
49+
50+ backingFile := "setup-loop-test-no-such-file"
51+ _ , err := setupLoop (backingFile , LoopParams {})
52+ if err == nil {
53+ t .Fatalf ("setupLoop with non-existing file should fail" )
54+ }
55+ }
56+
57+ func TestRoLoop (t * testing.T ) {
58+ testutil .RequiresRoot (t )
59+
60+ backingFile := createTempFile (t )
4961 defer func () {
5062 if err := os .Remove (backingFile ); err != nil {
5163 t .Fatal (err )
5264 }
5365 }()
5466
55- /* RO loop */
5667 path , err := setupLoop (backingFile , LoopParams {Readonly : true , Autoclear : true })
5768 if err != nil {
5869 t .Fatal (err )
5970 }
60- ff , err := os .OpenFile (path , os .O_RDWR , 0 )
61- if err != nil {
62- t .Fatal (err )
63- }
64- if _ , err = ff .Write ([]byte (randomdata )); err == nil {
71+
72+ if err := ioutil .WriteFile (path , randomData , os .ModePerm ); err == nil {
6573 t .Fatalf ("writing to readonly loop device should fail" )
6674 }
67- if err = ff .Close (); err != nil {
68- t .Fatal (err )
69- }
75+ }
7076
71- /* RW loop */
72- path , err = setupLoop (backingFile , LoopParams {Autoclear : true })
73- if err != nil {
74- t .Fatal (err )
75- }
76- ff , err = os .OpenFile (path , os .O_RDWR , 0 )
77+ func TestRwLoop (t * testing.T ) {
78+ testutil .RequiresRoot (t )
79+
80+ backingFile := createTempFile (t )
81+ defer func () {
82+ if err := os .Remove (backingFile ); err != nil {
83+ t .Fatal (err )
84+ }
85+ }()
86+
87+ path , err := setupLoop (backingFile , LoopParams {Autoclear : true })
7788 if err != nil {
7889 t .Fatal (err )
7990 }
80- if _ , err = ff .Write ([]byte (randomdata )); err != nil {
81- t .Fatal (err )
82- }
83- if err = ff .Close (); err != nil {
91+
92+ if err := ioutil .WriteFile (path , randomData , os .ModePerm ); err != nil {
8493 t .Fatal (err )
8594 }
8695}
8796
8897func TestAttachDetachLoopDevice (t * testing.T ) {
8998 testutil .RequiresRoot (t )
90- f , err := ioutil .TempFile ("" , "losetup" )
91- if err != nil {
92- t .Fatal (err )
93- }
94- if err = f .Truncate (512 ); err != nil {
95- t .Fatal (err )
96- }
97- f .Close ()
99+
100+ path := createTempFile (t )
98101 defer func () {
99- if err := os .Remove (f . Name () ); err != nil {
102+ if err := os .Remove (path ); err != nil {
100103 t .Fatal (err )
101104 }
102105 }()
103106
104- dev , err := AttachLoopDevice (f . Name () )
107+ dev , err := AttachLoopDevice (path )
105108 if err != nil {
106109 t .Fatal (err )
107110 }
111+
108112 if err = DetachLoopDevice (dev ); err != nil {
109113 t .Fatal (err )
110114 }
0 commit comments