unittests: Fixes unit tests for Windows (part 3)
Currently, there are some unit tests that are failing on Windows due to various reasons: - paths not properly joined (filepath.Join should be used). - Proxy Mode IPVS not supported on Windows. - DeadlineExceeded can occur when trying to read data from an UDP socket. This can be used to detect whether the port was closed or not. - In Windows, with long file name support enabled, file names can have up to 32,767 characters. In this case, the error windows.ERROR_FILENAME_EXCED_RANGE will be encountered instead. - files not closed, which means that they cannot be removed / renamed. - time.Now() is not as precise on Windows, which means that 2 consecutive calls may return the same timestamp. - path.Base() will return the same path. filepath.Base() should be used instead. - path.Join() will always join the paths with a / instead of the OS specific separator. filepath.Join() should be used instead.
This commit is contained in:
@@ -20,7 +20,6 @@ limitations under the License.
|
||||
package fs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
@@ -105,7 +104,7 @@ func diskUsage(currPath string, info os.FileInfo) (int64, error) {
|
||||
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
s, err := diskUsage(fmt.Sprintf("%s/%s", currPath, file.Name()), file)
|
||||
s, err := diskUsage(filepath.Join(currPath, file.Name()), file)
|
||||
if err != nil {
|
||||
return size, err
|
||||
}
|
||||
|
@@ -47,6 +47,12 @@ func TestDiskUsage(t *testing.T) {
|
||||
t.Fatalf("TestDiskUsage failed: %s", err.Error())
|
||||
}
|
||||
|
||||
// File creation is not atomic. If we're calculating the DiskUsage before the data is flushed,
|
||||
// we'd get zeroes for sizes, and fail with this error:
|
||||
// TestDiskUsage failed: expected 0, got -1
|
||||
tmpfile1.Sync()
|
||||
tmpfile2.Sync()
|
||||
|
||||
dirInfo1, err := os.Lstat(dir1)
|
||||
if err != nil {
|
||||
t.Fatalf("TestDiskUsage failed: %s", err.Error())
|
||||
|
Reference in New Issue
Block a user