• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

leeonky / test-charm-java / 156

20 Mar 2025 01:53PM UTC coverage: 74.243% (-0.2%) from 74.475%
156

push

circleci

leeonky
Refactor

14 of 15 new or added lines in 12 files covered. (93.33%)

126 existing lines in 29 files now uncovered.

7947 of 10704 relevant lines covered (74.24%)

0.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.74
/DAL-extension-basic/src/main/java/com/github/leeonky/dal/extensions/basic/file/util/Util.java
1
package com.github.leeonky.dal.extensions.basic.file.util;
2

3
import com.github.leeonky.dal.runtime.inspector.Dumper;
4
import com.github.leeonky.util.Sneaky;
5

6
import java.io.File;
7
import java.io.FileNotFoundException;
8
import java.nio.file.Files;
9
import java.nio.file.Path;
10
import java.nio.file.attribute.PosixFileAttributes;
11
import java.nio.file.attribute.PosixFilePermissions;
12
import java.util.Collections;
13
import java.util.LinkedHashSet;
14
import java.util.Set;
15
import java.util.stream.Collectors;
16

17
import static java.lang.String.format;
18
import static java.util.Arrays.stream;
19
import static java.util.Comparator.comparing;
20

UNCOV
21
public class Util {
×
22
    public static final Dumper FILE_DIR_DUMPER = new FileDirDumper(),
1✔
23
            FILE_FILE_DUMPER = new FileFileDumper(),
1✔
24
            PATH_DIR_DUMPER = new PathDirDumper(),
1✔
25
            PATH_FILE_DUMPER = new PathFileDumper();
1✔
26

27
    public static String formatFileSize(long size) {
28
        if (size < 10000)
1✔
29
            return String.valueOf(size);
1✔
30
        double sizeInUnit = size / 1024.0;
1✔
31
        if (sizeInUnit < 1000)
1✔
32
            return format("%.1fK", sizeInUnit);
1✔
33
        sizeInUnit /= 1024;
1✔
34
        if (sizeInUnit < 1000)
1✔
35
            return format("%.1fM", sizeInUnit);
1✔
36
        sizeInUnit /= 1024;
1✔
37
        if (sizeInUnit < 1000)
1✔
38
            return format("%.1fG", sizeInUnit);
1✔
39
        sizeInUnit /= 1024;
1✔
40
        return format("%.1fT", sizeInUnit);
1✔
41
    }
42

43
    public static String attribute(Path path) {
44
        PosixFileAttributes posixFileAttributes = Sneaky.get(() -> Files.readAttributes(path, PosixFileAttributes.class));
1✔
45
        return format("%s %s %s %6s %s %s", PosixFilePermissions.toString(posixFileAttributes.permissions()),
1✔
46
                posixFileAttributes.group(), posixFileAttributes.owner(), formatFileSize(path.toFile().length()),
1✔
47
                posixFileAttributes.lastModifiedTime(), path.getFileName().toString());
1✔
48
    }
49

50
    public static Object getSubFile(File file, String name) {
51
        File subFile = new File(file, name);
1✔
52
        if (subFile.exists())
1✔
53
            return subFile;
1✔
54
        String[] list = file.list();
1✔
55
        if (list != null && stream(list).anyMatch(f -> f.startsWith(name + ".")))
1✔
56
            return new IOFileFileGroup(file, name);
1✔
UNCOV
57
        return Sneaky.sneakyThrow(new FileNotFoundException(format("File or File Group <%s> not found", name)));
×
58
    }
59

60
    public static Set<String> listFileNames(File file) {
61
        return listFile(file).stream().map(File::getName).collect(Collectors.toCollection(LinkedHashSet::new));
1✔
62
    }
63

64
    public static Set<File> listFile(File file) {
65
        File[] files = file.listFiles();
1✔
66
        return files == null ? Collections.emptySet() : stream(files)
1✔
67
                .sorted(comparing(File::isDirectory).thenComparing(File::getName))
1✔
68
                .collect(Collectors.toCollection(LinkedHashSet::new));
1✔
69
    }
70

71
    public static Set<Path> listFile(Path path) {
72
        File[] files = path.toFile().listFiles();
1✔
73
        return (files == null ? Collections.emptySet() : stream(files)
1✔
74
                .sorted(comparing(File::isDirectory).thenComparing(File::getName)).map(File::toPath)
1✔
75
                .collect(Collectors.toCollection(LinkedHashSet::new)));
1✔
76
    }
77
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc