Explorar o código

Add terminal color golden test

xuty %!s(int64=3) %!d(string=hai) anos
pai
achega
b7fa190786

+ 4 - 0
test/_fixture/_fixture.dart

@@ -4,4 +4,8 @@ abstract class TestFixtures {
   static String htop_80x25_3s() {
     return File('test/_fixture/htop_80x25_3s.txt').readAsStringSync();
   }
+
+  static String colors() {
+    return File('test/_fixture/colors.txt').readAsStringSync();
+  }
 }

+ 73 - 0
test/_fixture/colors.txt

@@ -0,0 +1,73 @@
+\e[0;30;40m \e[0;30;41m \e[0;30;42m \e[0;30;43m \e[0;30;44m \e[0;30;45m \e[0;30;46m \e[0;30;47m 
+\e[0;31;40m \e[0;31;41m \e[0;31;42m \e[0;31;43m \e[0;31;44m \e[0;31;45m \e[0;31;46m \e[0;31;47m 
+\e[0;32;40m \e[0;32;41m \e[0;32;42m \e[0;32;43m \e[0;32;44m \e[0;32;45m \e[0;32;46m \e[0;32;47m 
+\e[0;33;40m \e[0;33;41m \e[0;33;42m \e[0;33;43m \e[0;33;44m \e[0;33;45m \e[0;33;46m \e[0;33;47m 
+\e[0;34;40m \e[0;34;41m \e[0;34;42m \e[0;34;43m \e[0;34;44m \e[0;34;45m \e[0;34;46m \e[0;34;47m 
+\e[0;35;40m \e[0;35;41m \e[0;35;42m \e[0;35;43m \e[0;35;44m \e[0;35;45m \e[0;35;46m \e[0;35;47m 
+\e[0;36;40m \e[0;36;41m \e[0;36;42m \e[0;36;43m \e[0;36;44m \e[0;36;45m \e[0;36;46m \e[0;36;47m 
+\e[0;37;40m \e[0;37;41m \e[0;37;42m \e[0;37;43m \e[0;37;44m \e[0;37;45m \e[0;37;46m \e[0;37;47m 
+\e[1;30;40m \e[1;30;41m \e[1;30;42m \e[1;30;43m \e[1;30;44m \e[1;30;45m \e[1;30;46m \e[1;30;47m 
+\e[1;31;40m \e[1;31;41m \e[1;31;42m \e[1;31;43m \e[1;31;44m \e[1;31;45m \e[1;31;46m \e[1;31;47m 
+\e[1;32;40m \e[1;32;41m \e[1;32;42m \e[1;32;43m \e[1;32;44m \e[1;32;45m \e[1;32;46m \e[1;32;47m 
+\e[1;33;40m \e[1;33;41m \e[1;33;42m \e[1;33;43m \e[1;33;44m \e[1;33;45m \e[1;33;46m \e[1;33;47m 
+\e[1;34;40m \e[1;34;41m \e[1;34;42m \e[1;34;43m \e[1;34;44m \e[1;34;45m \e[1;34;46m \e[1;34;47m 
+\e[1;35;40m \e[1;35;41m \e[1;35;42m \e[1;35;43m \e[1;35;44m \e[1;35;45m \e[1;35;46m \e[1;35;47m 
+\e[1;36;40m \e[1;36;41m \e[1;36;42m \e[1;36;43m \e[1;36;44m \e[1;36;45m \e[1;36;46m \e[1;36;47m 
+\e[1;37;40m \e[1;37;41m \e[1;37;42m \e[1;37;43m \e[1;37;44m \e[1;37;45m \e[1;37;46m \e[1;37;47m 
+\e[2;30;40m \e[2;30;41m \e[2;30;42m \e[2;30;43m \e[2;30;44m \e[2;30;45m \e[2;30;46m \e[2;30;47m 
+\e[2;31;40m \e[2;31;41m \e[2;31;42m \e[2;31;43m \e[2;31;44m \e[2;31;45m \e[2;31;46m \e[2;31;47m 
+\e[2;32;40m \e[2;32;41m \e[2;32;42m \e[2;32;43m \e[2;32;44m \e[2;32;45m \e[2;32;46m \e[2;32;47m 
+\e[2;33;40m \e[2;33;41m \e[2;33;42m \e[2;33;43m \e[2;33;44m \e[2;33;45m \e[2;33;46m \e[2;33;47m 
+\e[2;34;40m \e[2;34;41m \e[2;34;42m \e[2;34;43m \e[2;34;44m \e[2;34;45m \e[2;34;46m \e[2;34;47m 
+\e[2;35;40m \e[2;35;41m \e[2;35;42m \e[2;35;43m \e[2;35;44m \e[2;35;45m \e[2;35;46m \e[2;35;47m 
+\e[2;36;40m \e[2;36;41m \e[2;36;42m \e[2;36;43m \e[2;36;44m \e[2;36;45m \e[2;36;46m \e[2;36;47m 
+\e[2;37;40m \e[2;37;41m \e[2;37;42m \e[2;37;43m \e[2;37;44m \e[2;37;45m \e[2;37;46m \e[2;37;47m 
+\e[3;30;40m \e[3;30;41m \e[3;30;42m \e[3;30;43m \e[3;30;44m \e[3;30;45m \e[3;30;46m \e[3;30;47m 
+\e[3;31;40m \e[3;31;41m \e[3;31;42m \e[3;31;43m \e[3;31;44m \e[3;31;45m \e[3;31;46m \e[3;31;47m 
+\e[3;32;40m \e[3;32;41m \e[3;32;42m \e[3;32;43m \e[3;32;44m \e[3;32;45m \e[3;32;46m \e[3;32;47m 
+\e[3;33;40m \e[3;33;41m \e[3;33;42m \e[3;33;43m \e[3;33;44m \e[3;33;45m \e[3;33;46m \e[3;33;47m 
+\e[3;34;40m \e[3;34;41m \e[3;34;42m \e[3;34;43m \e[3;34;44m \e[3;34;45m \e[3;34;46m \e[3;34;47m 
+\e[3;35;40m \e[3;35;41m \e[3;35;42m \e[3;35;43m \e[3;35;44m \e[3;35;45m \e[3;35;46m \e[3;35;47m 
+\e[3;36;40m \e[3;36;41m \e[3;36;42m \e[3;36;43m \e[3;36;44m \e[3;36;45m \e[3;36;46m \e[3;36;47m 
+\e[3;37;40m \e[3;37;41m \e[3;37;42m \e[3;37;43m \e[3;37;44m \e[3;37;45m \e[3;37;46m \e[3;37;47m 
+\e[4;30;40m \e[4;30;41m \e[4;30;42m \e[4;30;43m \e[4;30;44m \e[4;30;45m \e[4;30;46m \e[4;30;47m 
+\e[4;31;40m \e[4;31;41m \e[4;31;42m \e[4;31;43m \e[4;31;44m \e[4;31;45m \e[4;31;46m \e[4;31;47m 
+\e[4;32;40m \e[4;32;41m \e[4;32;42m \e[4;32;43m \e[4;32;44m \e[4;32;45m \e[4;32;46m \e[4;32;47m 
+\e[4;33;40m \e[4;33;41m \e[4;33;42m \e[4;33;43m \e[4;33;44m \e[4;33;45m \e[4;33;46m \e[4;33;47m 
+\e[4;34;40m \e[4;34;41m \e[4;34;42m \e[4;34;43m \e[4;34;44m \e[4;34;45m \e[4;34;46m \e[4;34;47m 
+\e[4;35;40m \e[4;35;41m \e[4;35;42m \e[4;35;43m \e[4;35;44m \e[4;35;45m \e[4;35;46m \e[4;35;47m 
+\e[4;36;40m \e[4;36;41m \e[4;36;42m \e[4;36;43m \e[4;36;44m \e[4;36;45m \e[4;36;46m \e[4;36;47m 
+\e[4;37;40m \e[4;37;41m \e[4;37;42m \e[4;37;43m \e[4;37;44m \e[4;37;45m \e[4;37;46m \e[4;37;47m 
+\e[5;30;40m \e[5;30;41m \e[5;30;42m \e[5;30;43m \e[5;30;44m \e[5;30;45m \e[5;30;46m \e[5;30;47m 
+\e[5;31;40m \e[5;31;41m \e[5;31;42m \e[5;31;43m \e[5;31;44m \e[5;31;45m \e[5;31;46m \e[5;31;47m 
+\e[5;32;40m \e[5;32;41m \e[5;32;42m \e[5;32;43m \e[5;32;44m \e[5;32;45m \e[5;32;46m \e[5;32;47m 
+\e[5;33;40m \e[5;33;41m \e[5;33;42m \e[5;33;43m \e[5;33;44m \e[5;33;45m \e[5;33;46m \e[5;33;47m 
+\e[5;34;40m \e[5;34;41m \e[5;34;42m \e[5;34;43m \e[5;34;44m \e[5;34;45m \e[5;34;46m \e[5;34;47m 
+\e[5;35;40m \e[5;35;41m \e[5;35;42m \e[5;35;43m \e[5;35;44m \e[5;35;45m \e[5;35;46m \e[5;35;47m 
+\e[5;36;40m \e[5;36;41m \e[5;36;42m \e[5;36;43m \e[5;36;44m \e[5;36;45m \e[5;36;46m \e[5;36;47m 
+\e[5;37;40m \e[5;37;41m \e[5;37;42m \e[5;37;43m \e[5;37;44m \e[5;37;45m \e[5;37;46m \e[5;37;47m 
+\e[6;30;40m \e[6;30;41m \e[6;30;42m \e[6;30;43m \e[6;30;44m \e[6;30;45m \e[6;30;46m \e[6;30;47m 
+\e[6;31;40m \e[6;31;41m \e[6;31;42m \e[6;31;43m \e[6;31;44m \e[6;31;45m \e[6;31;46m \e[6;31;47m 
+\e[6;32;40m \e[6;32;41m \e[6;32;42m \e[6;32;43m \e[6;32;44m \e[6;32;45m \e[6;32;46m \e[6;32;47m 
+\e[6;33;40m \e[6;33;41m \e[6;33;42m \e[6;33;43m \e[6;33;44m \e[6;33;45m \e[6;33;46m \e[6;33;47m 
+\e[6;34;40m \e[6;34;41m \e[6;34;42m \e[6;34;43m \e[6;34;44m \e[6;34;45m \e[6;34;46m \e[6;34;47m 
+\e[6;35;40m \e[6;35;41m \e[6;35;42m \e[6;35;43m \e[6;35;44m \e[6;35;45m \e[6;35;46m \e[6;35;47m 
+\e[6;36;40m \e[6;36;41m \e[6;36;42m \e[6;36;43m \e[6;36;44m \e[6;36;45m \e[6;36;46m \e[6;36;47m 
+\e[6;37;40m \e[6;37;41m \e[6;37;42m \e[6;37;43m \e[6;37;44m \e[6;37;45m \e[6;37;46m \e[6;37;47m 
+\e[7;30;40m \e[7;30;41m \e[7;30;42m \e[7;30;43m \e[7;30;44m \e[7;30;45m \e[7;30;46m \e[7;30;47m 
+\e[7;31;40m \e[7;31;41m \e[7;31;42m \e[7;31;43m \e[7;31;44m \e[7;31;45m \e[7;31;46m \e[7;31;47m 
+\e[7;32;40m \e[7;32;41m \e[7;32;42m \e[7;32;43m \e[7;32;44m \e[7;32;45m \e[7;32;46m \e[7;32;47m 
+\e[7;33;40m \e[7;33;41m \e[7;33;42m \e[7;33;43m \e[7;33;44m \e[7;33;45m \e[7;33;46m \e[7;33;47m 
+\e[7;34;40m \e[7;34;41m \e[7;34;42m \e[7;34;43m \e[7;34;44m \e[7;34;45m \e[7;34;46m \e[7;34;47m 
+\e[7;35;40m \e[7;35;41m \e[7;35;42m \e[7;35;43m \e[7;35;44m \e[7;35;45m \e[7;35;46m \e[7;35;47m 
+\e[7;36;40m \e[7;36;41m \e[7;36;42m \e[7;36;43m \e[7;36;44m \e[7;36;45m \e[7;36;46m \e[7;36;47m 
+\e[7;37;40m \e[7;37;41m \e[7;37;42m \e[7;37;43m \e[7;37;44m \e[7;37;45m \e[7;37;46m \e[7;37;47m 
+\e[8;30;40m \e[8;30;41m \e[8;30;42m \e[8;30;43m \e[8;30;44m \e[8;30;45m \e[8;30;46m \e[8;30;47m 
+\e[8;31;40m \e[8;31;41m \e[8;31;42m \e[8;31;43m \e[8;31;44m \e[8;31;45m \e[8;31;46m \e[8;31;47m 
+\e[8;32;40m \e[8;32;41m \e[8;32;42m \e[8;32;43m \e[8;32;44m \e[8;32;45m \e[8;32;46m \e[8;32;47m 
+\e[8;33;40m \e[8;33;41m \e[8;33;42m \e[8;33;43m \e[8;33;44m \e[8;33;45m \e[8;33;46m \e[8;33;47m 
+\e[8;34;40m \e[8;34;41m \e[8;34;42m \e[8;34;43m \e[8;34;44m \e[8;34;45m \e[8;34;46m \e[8;34;47m 
+\e[8;35;40m \e[8;35;41m \e[8;35;42m \e[8;35;43m \e[8;35;44m \e[8;35;45m \e[8;35;46m \e[8;35;47m 
+\e[8;36;40m \e[8;36;41m \e[8;36;42m \e[8;36;43m \e[8;36;44m \e[8;36;45m \e[8;36;46m \e[8;36;47m 
+\e[8;37;40m \e[8;37;41m \e[8;37;42m \e[8;37;43m \e[8;37;44m \e[8;37;45m \e[8;37;46m \e[8;37;47m 
+

BIN=BIN
test/src/_goldens/colors.png


+ 29 - 2
test/src/terminal_view_test.dart

@@ -10,8 +10,8 @@ void main() {
   final binding = TestWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets(
-    'Golden test',
-    (WidgetTester tester) async {
+    'htop golden test',
+    (tester) async {
       final terminal = Terminal();
       await tester.pumpWidget(MaterialApp(
         home: Scaffold(
@@ -30,6 +30,33 @@ void main() {
     skip: !Platform.isMacOS,
   );
 
+  testWidgets(
+    'color golden test',
+    (tester) async {
+      final terminal = Terminal();
+
+      // terminal.lineFeedMode = true;
+
+      await tester.pumpWidget(MaterialApp(
+        home: Scaffold(
+          body: TerminalView(
+            terminal,
+            textStyle: TerminalStyle(fontSize: 8),
+          ),
+        ),
+      ));
+
+      terminal.write(TestFixtures.colors().replaceAll('\n', '\r\n'));
+      await tester.pump();
+
+      await expectLater(
+        find.byType(TerminalView),
+        matchesGoldenFile('_goldens/colors.png'),
+      );
+    },
+    skip: !Platform.isMacOS,
+  );
+
   group('TerminalView.readOnly', () {
     testWidgets('works', (WidgetTester tester) async {
       final terminalOutput = <String>[];