Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions lib/sentry_dart_plugin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -246,32 +246,33 @@ class SentryDartPlugin {
return results;
}

Future<List<String>> _findAllJsFilePaths() => _collectWebFiles<String>(
extension: '.js',
builder: (file) => file.path,
);

Future<List<File>> _findAllSourceMapFiles() => _collectWebFiles<File>(
extension: '.js.map',
builder: (file) => file.absolute,
);

Future<bool> _injectDebugIds() async {
List<String> params = [];
params.add('sourcemaps');

// There is currently a sentry-cli bug that mutates the Flutter Web source map
// in such a way that it becomes corrupt / invalid -> that's why we need to
// inject each file separately instead of using a directory
// TODO(buenaflor): in the future we should use the directory when sentry-cli is fixed
final jsFilePaths = await _findAllJsFilePaths();
if (jsFilePaths.isEmpty) {
final fs = injector.get<FileSystem>();
final webDir = fs.directory(_configuration.webBuildFilesFolder);
if (!await webDir.exists()) {
Log.warn(
'Web build directory "${_configuration.webBuildFilesFolder}" does not exist, '
'skipping debug id injection.',
);
return false;
}

List<String> params = [];
params.add('sourcemaps');
params.add('inject');
for (final path in jsFilePaths) {
params.add(path);
params.add(_configuration.webBuildFilesFolder);

// Honor ignore_web_source_paths during injection so ignored files are not
// mutated in-place. Patterns are gitignore-style globs interpreted relative
// to the web build folder, matching the upload step.
for (final ignorePattern in _configuration.ignoreWebSourcePaths) {
params.add('--ignore');
params.add(ignorePattern);
}

params.addAll(_baseCliParams());
Expand Down
18 changes: 9 additions & 9 deletions test/plugin_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ void main() {
expect(commandLog, [
'$cli $args debug-files upload $orgAndProject --include-sources $buildDir/app/outputs',
'$cli $args releases $orgAndProject new $release',
'$cli sourcemaps inject $buildDir/web/file.js $orgAndProject',
'$cli sourcemaps inject $buildDir/web --ignore testdir/**/*.js $orgAndProject',
'$cli $args sourcemaps upload --release $release $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ ./ --ext dart --ignore testdir/**/*.js $orgAndProject',
'$cli $args releases $orgAndProject set-commits $release --auto --ignore-missing',
'$cli $args releases $orgAndProject finalize $release'
Expand Down Expand Up @@ -293,7 +293,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $release',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $release $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $release --auto',
'$cli $args releases $orgAndProject finalize $release'
Expand All @@ -314,7 +314,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $configRelease',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $configRelease $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $configRelease --auto',
'$cli $args releases $orgAndProject finalize $configRelease'
Expand All @@ -337,7 +337,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $release',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $release --dist $build $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $release --auto',
'$cli $args releases $orgAndProject finalize $release'
Expand All @@ -359,7 +359,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $configRelease',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $configRelease $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $configRelease --auto',
'$cli $args releases $orgAndProject finalize $configRelease'
Expand All @@ -381,7 +381,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $release',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $release --dist $configDist $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $release --auto',
'$cli $args releases $orgAndProject finalize $release'
Expand All @@ -406,7 +406,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $release',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $release --dist $configDist $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $release --auto',
'$cli $args releases $orgAndProject finalize $release'
Expand All @@ -429,7 +429,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $configRelease',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $configRelease --dist $configDist $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $configRelease --auto',
'$cli $args releases $orgAndProject finalize $configRelease'
Expand Down Expand Up @@ -457,7 +457,7 @@ void main() {
final args = commonArgs;
expect(commandLog, [
'$cli $args releases $orgAndProject new $configRelease',
'$cli sourcemaps inject build/web/file.js $orgAndProject',
'$cli sourcemaps inject build/web $orgAndProject',
'$cli $args sourcemaps upload --release $configRelease --dist $configDist --url-prefix ~/app/ $buildDir/web --ext js --ext map --strip-prefix ../../Documents --strip-prefix ../../../../ --strip-prefix ../../ --strip-prefix ../ $orgAndProject',
'$cli $args releases $orgAndProject set-commits $configRelease --auto',
'$cli $args releases $orgAndProject finalize $configRelease'
Expand Down
Loading