Bump tar from 1.0.5 to 2.0.0 (#4307)

* Bump tar from 1.0.5 to 2.0.0

Bumps [tar](https://github.com/simolus3/tar) from 1.0.5 to 2.0.0.
- [Release notes](https://github.com/simolus3/tar/releases)
- [Changelog](https://github.com/simolus3/tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simolus3/tar/compare/v1.0.5...v2.0.0)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix tests (#4308)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>
diff --git a/pubspec.yaml b/pubspec.yaml
index 232663d..9525507 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -23,7 +23,7 @@
   shelf: ^1.4.1
   source_span: ^1.10.0
   stack_trace: ^1.11.1
-  tar: ^1.0.3
+  tar: ^2.0.0
   typed_data: ^1.3.2
   yaml: ^3.1.2
   yaml_edit: ^2.1.1
diff --git a/test/io_test.dart b/test/io_test.dart
index 4877ebb..a8ffa2e 100644
--- a/test/io_test.dart
+++ b/test/io_test.dart
@@ -15,6 +15,9 @@
 import 'descriptor.dart' as d;
 import 'test_pub.dart';
 
+const _defaultMode = 420; // 644₈
+const _executableMask = 0x49; // 001 001 001
+
 void main() {
   group('process', () {
     final nonExisting = p.join(p.dirname(Platform.resolvedExecutable), 'gone');
@@ -424,7 +427,11 @@
       return withTempDir((tempDir) async {
         final entries = Stream<TarEntry>.fromIterable([
           TarEntry.data(
-            TarHeader(name: 'lib/main.txt', typeFlag: TypeFlag.reg),
+            TarHeader(
+              name: 'lib/main.txt',
+              typeFlag: TypeFlag.reg,
+              mode: _defaultMode,
+            ),
             utf8.encode('text content'),
           ),
           TarEntry.data(
@@ -432,6 +439,7 @@
               name: 'bin/main.txt',
               typeFlag: TypeFlag.symlink,
               linkName: '../lib/main.txt',
+              mode: _defaultMode,
             ),
             const [],
           ),
@@ -441,6 +449,7 @@
               typeFlag: TypeFlag.link,
               // TypeFlag.link is resolved against the root of the tar file
               linkName: 'lib/main.txt',
+              mode: _defaultMode,
             ),
             const [],
           ),
@@ -469,6 +478,7 @@
             TarHeader(
               name: 'bin/',
               typeFlag: TypeFlag.dir,
+              mode: _defaultMode | _executableMask,
             ),
             const [],
           ),
@@ -496,6 +506,7 @@
             TarHeader(
               name: '../other_package-1.2.3/lib/file.dart',
               typeFlag: TypeFlag.reg,
+              mode: _defaultMode,
             ),
             const [],
           ),
@@ -521,6 +532,7 @@
               name: 'nested/bad_link',
               typeFlag: TypeFlag.symlink,
               linkName: '../../outside.txt',
+              mode: _defaultMode,
             ),
             const [],
           ),
@@ -543,6 +555,7 @@
               name: 'nested/bad_link',
               typeFlag: TypeFlag.link,
               linkName: '../outside.txt',
+              mode: _defaultMode,
             ),
             const [],
           ),
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 527d1af..4373664 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -1048,6 +1048,9 @@
   };
 }
 
+const _defaultMode = 420; // 644₈
+const _executableMask = 0x49; // 001 001 001
+
 Stream<List<int>> tarFromDescriptors(Iterable<d.Descriptor> contents) {
   final entries = <TarEntry>[];
   void addDescriptor(d.Descriptor descriptor, String path) {
@@ -1058,6 +1061,7 @@
             TarHeader(
               name: p.posix.join(path, descriptor.name),
               typeFlag: TypeFlag.dir,
+              mode: _defaultMode | _executableMask,
             ),
             Stream.fromIterable([]),
           ),