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

pulibrary / tigerdata-app / c9cc5bd1-5545-45fd-aea5-122080e1b208

04 Nov 2025 01:10PM UTC coverage: 91.403%. Remained the same
c9cc5bd1-5545-45fd-aea5-122080e1b208

push

circleci

web-flow
Bump tar from 7.5.1 to 7.5.2 in the npm_and_yarn group across 1 directory (#2126)

Bumps the npm_and_yarn group with 1 update in the / directory:
[tar](https://github.com/isaacs/node-tar).

Updates `tar` from 7.5.1 to 7.5.2
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/node-tar/commit/d9ea73a9b"><code>d9ea73a</code></a>
7.5.2</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/5e1a8e638"><code>5e1a8e6</code></a>
Fix sync tar.list when file size reduces while reading</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/0fbeaeddf"><code>0fbeaed</code></a>
formatting</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/2dbacfe33"><code>2dbacfe</code></a>
add types for make-tar util</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/c5865d312"><code>c5865d3</code></a>
remove unused taprc file</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/bdb38096a"><code>bdb3809</code></a>
header: only read from ustar block if not specified in Pax</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/d094cd7b7"><code>d094cd7</code></a>
BlueOak-1.0.0</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/4a6ae729b"><code>4a6ae72</code></a>
Verify invulnerability to tarmageddon attack</li>
<li>See full diff in <a
href="https://github.com/isaacs/node-tar/compare/v7.5.1...v7.5.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tar&package-manager=npm_and_yarn&previous-version=7.5.1&new-version=7.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores... (continued)

2828 of 3094 relevant lines covered (91.4%)

493.13 hits per line

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

92.68
/app/services/project_import.rb
1
require "csv"
3✔
2

3
class ProjectImport
3✔
4

5
    attr_accessor :csv_data, :test_run
3✔
6

7
    def initialize(csv_data, test_run: false)
3✔
8
        @csv_data = csv_data
7✔
9
        @test_run = test_run
7✔
10
    end
11

12
    def self.run_with_report(mediaflux_session:)
3✔
13
      report = Mediaflux::ProjectReport.new(session_token: mediaflux_session)
3✔
14
      return [report.response_error[:message]] if report.error?
3✔
15

16
      importer = self.new(report.csv_data.gsub("\r\n",""))
3✔
17
      importer.run
3✔
18
    end
19

20
    def run
3✔
21
        output = []
8✔
22
        mediaflux_projects = CSV.new(csv_data, headers: true, liberal_parsing: true)
8✔
23
        mediaflux_projects.each do |project_metadata|
8✔
24
          project_id = project_metadata["projectID"]
40✔
25
          existing_project = Project.where("metadata_json @> ?", JSON.dump(project_id:))
40✔
26
          if existing_project.count > 0
40✔
27
            output << "Skipping project #{project_id}.  There are already #{existing_project.count} version of that project in the system"
18✔
28
          else
29
            metadata = convert_csv(project_metadata:, project_id:)
22✔
30
            if test_run
22✔
31
              output << metadata.to_json
×
32
            else
33
              if metadata.data_user_read_only.first == "n/a" && metadata.data_user_read_only.count == 1
22✔
34
                metadata.data_user_read_only = []
×
35
              end
36
              # Create the Rails record for the project
37
              project = Project.create(metadata:, mediaflux_id: project_metadata["asset"])
22✔
38
              if (project.valid?)
22✔
39
                output << "Created project for #{project_id}"
12✔
40
              else
41
                output << "Error creating project for #{project_metadata["asset"]}: #{project.errors.to_a.join(";")}"
10✔
42
              end
43
            end
44
          end
45
        end
46
        output
8✔
47
    rescue CSV::MalformedCSVError => error
48
      ["Error parsing response #{ csv_data.to_s.slice(0,200) } error: #{error}"]
×
49
    end
50

51
    private
3✔
52
        def convert_csv(project_metadata:, project_id:)
3✔
53
            data_user = parse_multiple(project_metadata, "dataUser")
22✔
54
            department_names = parse_multiple(project_metadata,"department")
22✔
55
            departments = department_names.map {|name| Affiliation.find_fuzzy_by_name(name)&.code || name }
55✔
56

57
            storage_size_gb = project_metadata["quota"].downcase.to_f/1000000000.0
22✔
58
            ProjectMetadata.new_from_hash({
22✔
59
              project_id:,
60
              title: project_metadata["title"],
61
              description: project_metadata["description"],
62
              status: Project::ACTIVE_STATUS,
63
              data_sponsor: project_metadata["dataSponsor"],
64
              data_manager: project_metadata["dataManager"],
65
              departments: departments,
66
              data_user_read_only: data_user,
67
              project_directory: project_metadata["path"],
68
              storage_capacity: {size: { approved: storage_size_gb, requested: storage_size_gb}, unit: {approved: "GB", requested: "GB"}},
69
              storage_performance_expectations: { requested: "Standard", approved: "Standard" },
70
              created_by: project_metadata["creatorUser"],
71
              created_on: project_metadata["createdOn"]
72
            })
73
        end
74

75
        def parse_multiple(project_metadata, key)
3✔
76
            if project_metadata[key].blank?
44✔
77
            []
13✔
78
            else
79
            project_metadata[key].split(",").map(&:strip)
31✔
80
            end
81
        end
82
end
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

© 2025 Coveralls, Inc