Add web safe indirection to Platform.isPlatform getters (#33406)

This commit is contained in:
Jonah Williams 2019-06-03 10:55:36 -07:00 committed by GitHub
parent c4f5f42a0a
commit d92b3b40d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 145 additions and 147 deletions

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/animation.dart';
import 'package:flutter/widgets.dart';
@ -85,7 +83,7 @@ void main() {
),
moreOrLessEquals(0.0),
);
}, skip: Platform.isWindows); // floating point math not quite deterministic on Windows?
}, skip: isWindows); // floating point math not quite deterministic on Windows?
test('ConstantTween', () {
final ConstantTween<double> tween = ConstantTween<double>(100.0);

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'dart:ui';
import 'package:flutter/cupertino.dart';
@ -845,7 +844,7 @@ void main() {
await expectLater(
find.byType(CupertinoDatePicker),
matchesGoldenFile('date_picker_test.datetime.initial.1.png'),
skip: !Platform.isLinux
skip: !isLinux
);
// Slightly drag the hour component to make the current hour off-center.
@ -855,7 +854,7 @@ void main() {
await expectLater(
find.byType(CupertinoDatePicker),
matchesGoldenFile('date_picker_test.datetime.drag.1.png'),
skip: !Platform.isLinux
skip: !isLinux
);
});
});

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
@ -806,7 +804,7 @@ void main() {
},
// TODO(xster): remove once https://github.com/flutter/flutter/issues/17483
// is fixed.
skip: !Platform.isLinux,
skip: !isLinux,
);
testWidgets(
@ -840,7 +838,7 @@ void main() {
},
// TODO(xster): remove once https://github.com/flutter/flutter/issues/17483
// is fixed.
skip: !Platform.isLinux,
skip: !isLinux,
);

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/widgets.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_test/flutter_test.dart';
@ -1329,7 +1327,7 @@ void main() {
find.byType(RepaintBoundary),
matchesGoldenFile('segmented_control_test.0.0.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('Golden Test Pressed State', (WidgetTester tester) async {
final Map<int, Widget> children = <int, Widget>{};
@ -1367,5 +1365,5 @@ void main() {
find.byType(RepaintBoundary),
matchesGoldenFile('segmented_control_test.1.0.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
}

View file

@ -3,7 +3,6 @@
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/rendering.dart';
@ -376,7 +375,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('text_field_cursor_test.0.2.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('cursor iOS golden', (WidgetTester tester) async {
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
@ -406,7 +405,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('text_field_cursor_test.1.2.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets(
'can control text content via controller',

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
@ -83,7 +81,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('bottom_app_bar_theme.custom_shape.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:ui';
import 'package:flutter/material.dart';
@ -1436,7 +1435,7 @@ void main() {
await expectLater(
find.byType(BottomNavigationBar),
matchesGoldenFile('bottom_navigation_bar.shifting_transition.2.$pump.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
}
});

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
@ -140,7 +138,7 @@ void main() {
await expectLater(
find.byKey(painterKey),
matchesGoldenFile('card_theme.custom_shape.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
}

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:ui';
import 'package:flutter/rendering.dart';
@ -20,7 +19,7 @@ void main() {
},
// Skip on Windows because this test is quite flaky when run on Windows,
// until https://github.com/flutter/flutter/issues/19696 is fixed.
skip: Platform.isWindows,
skip: isWindows,
);
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
@ -133,7 +131,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('dialog_theme.dialog_with_custom_border.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:math' as math;
import 'dart:ui' show window;
@ -142,7 +141,7 @@ void main() {
await expectLater(
find.ancestor(of: buttonFinder, matching: find.byType(RepaintBoundary)).first,
matchesGoldenFile('dropdown_test.default.0.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -155,7 +154,7 @@ void main() {
await expectLater(
find.ancestor(of: buttonFinder, matching: find.byType(RepaintBoundary)).first,
matchesGoldenFile('dropdown_test.expanded.0.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:ui';
import 'package:flutter/material.dart';
@ -737,7 +736,7 @@ void main() {
await expectLater(
find.byKey(key),
matchesGoldenFile('floating_action_button_test.clip.2.png'), // .clip.1.png is obsolete and can be removed
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -3,7 +3,6 @@
// found in the LICENSE file.
import 'dart:async';
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
@ -2031,17 +2030,17 @@ void main() {
await expectLater(
find.byType(InputDecorator),
matchesGoldenFile('input_decorator.outline_icon_label.ltr.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await tester.pumpWidget(buildFrame(TextDirection.rtl));
await expectLater(
find.byType(InputDecorator),
matchesGoldenFile('input_decorator.outline_icon_label.rtl.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
},
skip: !Platform.isLinux,
skip: !isLinux,
);
testWidgets('InputDecorator draws and animates hoverColor', (WidgetTester tester) async {

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/rendering.dart';
@ -619,7 +617,7 @@ void main() {
await expectLater(
find.byKey(painterKey),
matchesGoldenFile('material.border_paint_above.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -660,7 +658,7 @@ void main() {
await expectLater(
find.byKey(painterKey),
matchesGoldenFile('material.border_paint_below.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'dart:ui';
import 'package:flutter/rendering.dart';
@ -278,7 +277,7 @@ void main() {
await expectLater(
find.byKey(painterKey),
matchesGoldenFile('radio.ink_ripple.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
@ -270,7 +268,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('tab_bar_theme.tab_indicator_size_tab.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -282,7 +280,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('tab_bar_theme.tab_indicator_size_label.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -299,7 +297,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('tab_bar_theme.custom_tab_indicator.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -316,7 +314,7 @@ void main() {
await expectLater(
find.byKey(_painterKey),
matchesGoldenFile('tab_bar_theme.beveled_rect_indicator.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
}

View file

@ -3,7 +3,6 @@
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'dart:math' as math;
import 'dart:ui' as ui show window;
@ -405,7 +404,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('text_field_cursor_test.0.0.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('cursor iOS golden', (WidgetTester tester) async {
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
@ -434,7 +433,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('text_field_cursor_test.1.0.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('text field selection toolbar renders correctly inside opacity', (WidgetTester tester) async {
await tester.pumpWidget(
@ -484,7 +483,7 @@ void main() {
// The toolbar exists in the Overlay above the MaterialApp.
find.byType(Overlay),
matchesGoldenFile('text_field_opacity_test.0.2.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter_test/flutter_test.dart';
@ -73,7 +72,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('continuous_rectangle_border.golden_test_even_radii.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -95,7 +94,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('continuous_rectangle_border.golden_test_varying_radii.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -114,7 +113,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('continuous_rectangle_border.golden_test_large_radii.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/painting.dart';
import 'package:flutter_test/flutter_test.dart';
@ -321,7 +319,7 @@ void main() {
);
},
// Ahem-based tests don't yet quite work on Windows or some MacOS environments
skip: Platform.isWindows || Platform.isMacOS);
skip: !isLinux);
test('TextPainter - line wrap mid-word', () {
final TextPainter painter = TextPainter()

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
@ -54,7 +52,7 @@ void main() {
matchesGoldenFile('localized_fonts.rich_text.styled_text_span.png'),
);
},
skip: !Platform.isLinux,
skip: !isLinux,
);
testWidgets(
@ -106,7 +104,7 @@ void main() {
matchesGoldenFile('localized_fonts.text_ambient_locale.chars.png'),
);
},
skip: !Platform.isLinux,
skip: !isLinux,
);
testWidgets(
@ -150,7 +148,7 @@ void main() {
matchesGoldenFile('localized_fonts.text_explicit_locale.chars.png'),
);
},
skip: !Platform.isLinux,
skip: !isLinux,
);
}

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:ui' as ui show TextBox;
import 'package:flutter/rendering.dart';
@ -71,7 +70,7 @@ void main() {
expect(boxes.any((ui.TextBox box) => box.right == 100 && box.top == 10), isTrue);
},
// Ahem-based tests don't yet quite work on Windows or some MacOS environments
skip: Platform.isWindows || Platform.isMacOS);
skip: isLinux);
test('getWordBoundary control test', () {
final RenderParagraph paragraph = RenderParagraph(
@ -193,7 +192,7 @@ void main() {
layoutAt(3);
expect(paragraph.size.height, 30.0);
}, skip: Platform.isWindows); // Ahem-based tests don't yet quite work on Windows
}, skip: isWindows); // Ahem-based tests don't yet quite work on Windows
test('changing color does not do layout', () {
final RenderParagraph paragraph = RenderParagraph(

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'dart:ui';
import 'package:flutter/widgets.dart';
@ -44,7 +43,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary).first,
matchesGoldenFile('backdrop_filter_test.cull_rect.1.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
@ -94,7 +92,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('editable_text_test.0.3.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('cursor layout has correct radius', (WidgetTester tester) async {
final GlobalKey<EditableTextState> editableTextKey = GlobalKey<EditableTextState>();
@ -145,7 +143,7 @@ void main() {
find.byKey(const ValueKey<int>(1)),
matchesGoldenFile('editable_text_test.1.3.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('Cursor animates on iOS', (WidgetTester tester) async {
final Widget widget = MaterialApp(
@ -724,6 +722,6 @@ void main() {
matchesGoldenFile('editable_text_test.2.0.png'),
);
debugDefaultTargetPlatformOverride = null;
}, skip: !Platform.isLinux);
}, skip: !isLinux);
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
@ -23,7 +21,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('invert_colors_test.0.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -42,7 +40,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('invert_colors_test.1.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
@ -538,7 +536,7 @@ void main() {
await expectLater(
find.byKey(const Key('list_wheel_scroll_view')),
matchesGoldenFile('list_wheel_scroll_view.center_child.magnified.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -593,7 +591,7 @@ void main() {
await expectLater(
find.byKey(const Key('list_wheel_scroll_view')),
matchesGoldenFile('list_wheel_scroll_view.curved_wheel.left.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
@ -180,7 +178,7 @@ void main() {
await expectLater(
find.byType(RepaintBoundary).first,
matchesGoldenFile('opacity_test.offset.1.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'dart:math' as math show pi;
import 'package:flutter/material.dart';
@ -112,7 +111,7 @@ void main() {
await expectLater(
find.byKey(key),
matchesGoldenFile('physical_model_overflow.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
@ -30,13 +28,11 @@ void main() {
debugDisableShadows = false;
tester.binding.reassembleApplication();
await tester.pump();
if (Platform.isLinux) {
// TODO(ianh): use the skip argument instead once that doesn't hang, https://github.com/dart-lang/test/issues/830
await expectLater(
find.byType(Container),
matchesGoldenFile('shadow.BoxDecoration.enabled.png'),
); // shadows render differently on different platforms
}
await expectLater(
find.byType(Container),
matchesGoldenFile('shadow.BoxDecoration.enabled.png'),
skip: !isLinux
); // shadows render differently on different platforms
debugDisableShadows = true;
});
@ -65,7 +61,7 @@ void main() {
);
}
debugDisableShadows = true;
}, skip: !Platform.isLinux); // shadows render differently on different platforms
}, skip: !isLinux); // shadows render differently on different platforms
testWidgets('Shadows with PhysicalLayer', (WidgetTester tester) async {
await tester.pumpWidget(
@ -93,13 +89,11 @@ void main() {
debugDisableShadows = false;
tester.binding.reassembleApplication();
await tester.pump();
if (Platform.isLinux) {
// TODO(ianh): use the skip argument instead once that doesn't hang, https://github.com/dart-lang/test/issues/830
await expectLater(
find.byType(Container),
matchesGoldenFile('shadow.PhysicalModel.enabled.png'),
); // shadows render differently on different platforms
}
await expectLater(
find.byType(Container),
matchesGoldenFile('shadow.PhysicalModel.enabled.png'),
skip: !isLinux,
); // shadows render differently on different platforms
debugDisableShadows = true;
});
@ -132,5 +126,5 @@ void main() {
);
}
debugDisableShadows = true;
}, skip: !Platform.isLinux); // shadows render differently on different platforms
}, skip: !isLinux); // shadows render differently on different platforms
}

View file

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io' show Platform;
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
@ -57,7 +55,7 @@ void main() {
find.byType(Container),
matchesGoldenFile('text_golden.Centered.wrap.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('Text Foreground', (WidgetTester tester) async {
@ -133,7 +131,7 @@ void main() {
find.byType(RepaintBoundary),
matchesGoldenFile('text_golden.Foreground.stroke_and_gradient.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
// TODO(garyq): This test requires an update when the background
// drawing from the beginning of the line bug is fixed. The current
@ -183,7 +181,7 @@ void main() {
find.byType(RepaintBoundary),
matchesGoldenFile('text_golden.Background.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('Text Fade', (WidgetTester tester) async {
await tester.pumpWidget(
@ -219,7 +217,7 @@ void main() {
find.byType(RepaintBoundary).first,
matchesGoldenFile('text_golden.Fade.1.png'),
);
}, skip: !Platform.isLinux);
}, skip: !isLinux);
testWidgets('Default Strut text', (WidgetTester tester) async {
await tester.pumpWidget(
@ -480,7 +478,7 @@ void main() {
find.byType(Container),
matchesGoldenFile('text_golden.Decoration.1.0.png'),
);
}, skip: !Platform.isLinux); // Coretext uses different thicknesses for decoration
}, skip: !isLinux); // Coretext uses different thicknesses for decoration
testWidgets('Decoration thickness', (WidgetTester tester) async {
final TextDecoration allDecorations = TextDecoration.combine(
@ -519,5 +517,5 @@ void main() {
find.byType(Container),
matchesGoldenFile('text_golden.DecorationThickness.1.0.png'),
);
}, skip: !Platform.isLinux); // Coretext uses different thicknesses for decoration
}, skip: !isLinux); // Coretext uses different thicknesses for decoration
}

View file

@ -4,7 +4,6 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io' show Platform;
import 'dart:math';
import 'dart:ui' as ui;
@ -1583,7 +1582,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
_CreationLocation location = knownLocations[id];
expect(location.file, equals(file));
// ClockText widget.
expect(location.line, equals(51));
expect(location.line, equals(50));
expect(location.column, equals(9));
expect(count, equals(1));
@ -1592,7 +1591,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
location = knownLocations[id];
expect(location.file, equals(file));
// Text widget in _ClockTextState build method.
expect(location.line, equals(89));
expect(location.line, equals(88));
expect(location.column, equals(12));
expect(count, equals(1));
@ -1617,7 +1616,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
location = knownLocations[id];
expect(location.file, equals(file));
// ClockText widget.
expect(location.line, equals(51));
expect(location.line, equals(50));
expect(location.column, equals(9));
expect(count, equals(3)); // 3 clock widget instances rebuilt.
@ -1626,7 +1625,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
location = knownLocations[id];
expect(location.file, equals(file));
// Text widget in _ClockTextState build method.
expect(location.line, equals(89));
expect(location.line, equals(88));
expect(location.column, equals(12));
expect(count, equals(3)); // 3 clock widget instances rebuilt.
@ -1897,7 +1896,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
layer.toImage(renderObject.semanticBounds.inflate(50.0)),
matchesGoldenFile('inspector.repaint_boundary_margin.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Regression test for how rendering with a pixel scale other than 1.0
@ -1908,7 +1907,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
pixelRatio: 0.5,
),
matchesGoldenFile('inspector.repaint_boundary_margin_small.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -1917,7 +1916,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
pixelRatio: 2.0,
),
matchesGoldenFile('inspector.repaint_boundary_margin_large.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
final Layer layerParent = layer.parent;
@ -1933,7 +1932,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 300.0,
),
matchesGoldenFile('inspector.repaint_boundary.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Verify that taking a screenshot didn't change the layers associated with
@ -1951,7 +1950,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
margin: 50.0,
),
matchesGoldenFile('inspector.repaint_boundary_margin.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Verify that taking a screenshot didn't change the layers associated with
@ -1972,7 +1971,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.repaint_boundary_debugPaint.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Verify that taking a screenshot with debug paint on did not change
// the number of children the layer has.
@ -1983,7 +1982,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
find.byType(RepaintBoundaryWithDebugPaint),
matchesGoldenFile('inspector.repaint_boundary.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
expect(renderObject.debugLayer, equals(layer));
@ -1997,7 +1996,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 100.0,
),
matchesGoldenFile('inspector.container.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2008,7 +2007,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.container_debugPaint.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
{
@ -2029,7 +2028,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.container_debugPaint.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
expect(container.debugNeedsLayout, isFalse);
}
@ -2042,7 +2041,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 100.0,
),
matchesGoldenFile('inspector.container_small.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2053,7 +2052,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
maxPixelRatio: 3.0,
),
matchesGoldenFile('inspector.container_large.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// This screenshot will show the clip rect debug paint but no other
@ -2066,7 +2065,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.clipRect_debugPaint.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
final Element clipRect = find.byType(ClipRRect).evaluate().single;
@ -2083,7 +2082,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
clipRectScreenshot,
matchesGoldenFile('inspector.clipRect_debugPaint_margin.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Verify we get the same image if we go through the service extension
@ -2111,7 +2110,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
screenshotImage,
matchesReferenceImage(await clipRectScreenshot),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Test with a very visible debug paint
@ -2123,7 +2122,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.padding_debugPaint.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// The bounds for this box crop its rendered content.
@ -2135,7 +2134,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.sizedBox_debugPaint.1.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Verify that setting a margin includes the previously cropped content.
@ -2148,7 +2147,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
debugPaint: true,
),
matchesGoldenFile('inspector.sizedBox_debugPaint_margin.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -2220,7 +2219,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
find.byKey(mainStackKey),
matchesGoldenFile('inspector.composited_transform.only_offsets.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2230,13 +2229,13 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 500.0,
),
matchesGoldenFile('inspector.composited_transform.only_offsets_follower.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
WidgetInspectorService.instance.screenshot(find.byType(Stack).evaluate().first, width: 300.0, height: 300.0),
matchesGoldenFile('inspector.composited_transform.only_offsets_small.1.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2246,7 +2245,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 500.0,
),
matchesGoldenFile('inspector.composited_transform.only_offsets_target.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
});
@ -2319,7 +2318,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
await expectLater(
find.byKey(mainStackKey),
matchesGoldenFile('inspector.composited_transform.with_rotations.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2329,7 +2328,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 500.0,
),
matchesGoldenFile('inspector.composited_transform.with_rotations_small.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2339,7 +2338,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 500.0,
),
matchesGoldenFile('inspector.composited_transform.with_rotations_target.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
await expectLater(
@ -2349,7 +2348,7 @@ class TestWidgetInspectorService extends Object with WidgetInspectorService {
height: 500.0,
),
matchesGoldenFile('inspector.composited_transform.with_rotations_follower.png'),
skip: !Platform.isLinux,
skip: !isLinux,
);
// Make sure taking screenshots hasn't modified the positions of the

View file

@ -54,6 +54,7 @@ export 'src/finders.dart';
export 'src/goldens.dart';
export 'src/matchers.dart';
export 'src/nonconst.dart';
export 'src/platform.dart';
export 'src/stack_manipulation.dart';
export 'src/test_async_utils.dart';
export 'src/test_compat.dart';

View file

@ -0,0 +1,47 @@
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
// Whether the current dart code is running in an environment that was compiled
// to JavaScript.
const bool _kIsCompiledToJavaScript = identical(0, 0.0);
/// Whether the test is running on the Windows operating system.
///
/// This does not include test compiled to JavaScript running in a browser on
/// the Windows operating system.
bool get isWindows {
if (_kIsCompiledToJavaScript) {
return false;
}
return Platform.isWindows;
}
/// Whether the test is running on the macOS operating system.
///
/// This does not include test compiled to JavaScript running in a browser on
/// the macOS operating system.
bool get isMacOS {
if (_kIsCompiledToJavaScript) {
return false;
}
return Platform.isMacOS;
}
/// Whether the test is running on the Linux operating system.
///
/// This does not include test compiled to JavaScript running in a browser on
/// the Linux operating system.
bool get isLinux {
if (_kIsCompiledToJavaScript) {
return false;
}
return Platform.isLinux;
}
/// Whether the test is running in a web browser compiled to JavaScript.
bool get isBrowser {
return _kIsCompiledToJavaScript;
}