Skip to content

Commit

Permalink
Merge branch 'main' into feat/apply-before-breadcrumb-on-native-crumbs
Browse files Browse the repository at this point in the history
  • Loading branch information
buenaflor authored Mar 7, 2024
2 parents d747a3e + bffc2c5 commit c6d50de
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

- Fix transaction end timestamp trimming ([#1916](https://github.com/getsentry/sentry-dart/pull/1916))
- Transaction end timestamps are now correctly trimmed to the latest child span end timestamp
- remove transitive dart:io reference for web ([#1898](https://github.com/getsentry/sentry-dart/pull/1898))

### Features

Expand Down
4 changes: 3 additions & 1 deletion dart/lib/src/utils/transport_utils.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:http/http.dart';

import '../../sentry_io.dart';
import '../client_reports/discard_reason.dart';
import '../protocol.dart';
import '../sentry_envelope.dart';
import '../sentry_options.dart';
import '../transport/data_category.dart';

class TransportUtils {
Expand Down
86 changes: 86 additions & 0 deletions dart/test/example_web_compile_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
@TestOn('vm')
import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:test/test.dart';

// Tests for the following issue
// https://github.com/getsentry/sentry-dart/issues/1893
void main() {
group('Compile example_web', () {
test(
'dart pub get and compilation should run successfully',
() async {
final result = await _runProcess('dart pub get',
workingDirectory: _exampleWebWorkingDir);
expect(result.exitCode, 0,
reason: 'Could run `dart pub get` for example_web. '
'Likely caused by outdated dependencies');
// running this test locally require clean working directory
final cleanResult = await _runProcess('dart run build_runner clean',
workingDirectory: _exampleWebWorkingDir);
expect(cleanResult.exitCode, 0);
final compileResult = await _runProcess(
'dart run build_runner build -r web -o build --delete-conflicting-outputs',
workingDirectory: _exampleWebWorkingDir);
expect(compileResult.exitCode, 0,
reason: 'Could not compile example_web project');
expect(
compileResult.stdout,
isNot(contains(
'Skipping compiling sentry_dart_web_example|web/main.dart')),
reason:
'Could not compile main.dart, likely because of dart:io import.');
expect(
compileResult.stdout,
contains(
'build_web_compilers:entrypoint on web/main.dart:Compiled'));
},
timeout: Timeout(const Duration(minutes: 1)), // double of detault timeout
);
});
}

/// Runs [command] with command's stdout and stderr being forwrarded to
/// test runner's respective streams. It buffers stdout and returns it.
///
/// Returns [_CommandResult] with exitCode and stdout as a single sting
Future<_CommandResult> _runProcess(String command,
{String workingDirectory = '.'}) async {
final parts = command.split(' ');
assert(parts.isNotEmpty);
final cmd = parts[0];
final args = parts.skip(1).toList();
final process =
await Process.start(cmd, args, workingDirectory: workingDirectory);
// forward standard streams
unawaited(stderr.addStream(process.stderr));
final buffer = <int>[];
final stdoutCompleter = Completer.sync();
process.stdout.listen(
(units) {
buffer.addAll(units);
stdout.add(units);
},
cancelOnError: true,
onDone: () {
stdoutCompleter.complete();
},
);
await stdoutCompleter.future;
final processOut = utf8.decode(buffer);
int exitCode = await process.exitCode;
return _CommandResult(exitCode: exitCode, stdout: processOut);
}

String get _exampleWebWorkingDir {
return '${Directory.current.path}${Platform.pathSeparator}example_web';
}

class _CommandResult {
final int exitCode;
final String stdout;

const _CommandResult({required this.exitCode, required this.stdout});
}

0 comments on commit c6d50de

Please sign in to comment.