Update CI (#37)

Use latest CI setup
Sort directives
Remove null-safety prerelease entries from changelog
diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml
index e55702c..70d8c5a 100644
--- a/.github/workflows/test-package.yml
+++ b/.github/workflows/test-package.yml
@@ -23,9 +23,9 @@
         sdk: [dev]
     steps:
       - uses: actions/checkout@v2
-      - uses: dart-lang/setup-dart@v0.1
+      - uses: dart-lang/setup-dart@v1.0
         with:
-          channel: ${{ matrix.sdk }}
+          sdk: ${{ matrix.sdk }}
       - id: install
         name: Install dependencies
         run: dart pub get
@@ -36,9 +36,6 @@
         run: dart analyze --fatal-infos
         if: always() && steps.install.outcome == 'success'
 
-  # Run tests on a matrix consisting of two dimensions:
-  # 1. OS: ubuntu-latest, (macos-latest, windows-latest)
-  # 2. release channel: dev
   test:
     needs: analyze
     runs-on: ${{ matrix.os }}
@@ -47,12 +44,12 @@
       matrix:
         # Add macos-latest and/or windows-latest if relevant for this package.
         os: [ubuntu-latest]
-        sdk: [dev]
+        sdk: [2.12.0, dev]
     steps:
       - uses: actions/checkout@v2
-      - uses: dart-lang/setup-dart@v0.1
+      - uses: dart-lang/setup-dart@v1.0
         with:
-          channel: ${{ matrix.sdk }}
+          sdk: ${{ matrix.sdk }}
       - id: install
         name: Install dependencies
         run: dart pub get
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e238b0f..abfb484 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,24 +1,9 @@
+## 2.1.1-dev
+
 ## 2.1.0
 
 * Stable release for null safety.
 
-## 2.1.0-nullsafety.3
-
-* Update SDK constraints to `>=2.12.0-0 <3.0.0` based on beta release
-  guidelines.
-
-## 2.1.0-nullsafety.2
-
-* Allow prerelease versions of the 2.12 sdk.
-
-## 2.1.0-nullsafety.1
-
-* Allow 2.10 stable and 2.11.0 dev SDK versions.
-
-## 2.1.0-nullsafety
-
-* Migrate to null safety. There are no expected semantic changes.
-
 ## 2.0.0
 
 * Breaking: `BooleanSelector.evaluate` always takes a `bool Function(String)`.
diff --git a/pubspec.yaml b/pubspec.yaml
index a7b6158..6ae4e1c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,19 +1,17 @@
 name: boolean_selector
-version: 2.1.0
+version: 2.1.1-dev
 description: >-
   A flexible syntax for boolean expressions, based on a simplified version of
   Dart's expression syntax.
-homepage: https://github.com/dart-lang/boolean_selector
+repository: https://github.com/dart-lang/boolean_selector
 
 environment:
-  sdk: ">=2.12.0-0 <3.0.0"
+  sdk: ">=2.12.0 <3.0.0"
 
 dependencies:
   source_span: ^1.8.0
   string_scanner: ^1.1.0
 
 dev_dependencies:
-  pedantic: ^1.10.0-nullsafety
-  test: ^1.16.0-nullsafety
-  test_api: ^0.2.19-nullsafety
-  test_core: ^0.3.12-nullsafety
+  pedantic: ^1.10.0
+  test: ^1.16.0
diff --git a/test/equality_test.dart b/test/equality_test.dart
index b0d2500..c5ccb64 100644
--- a/test/equality_test.dart
+++ b/test/equality_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/boolean_selector.dart';
+import 'package:test/test.dart';
 
 void main() {
   test('variable', () {
diff --git a/test/evaluate_test.dart b/test/evaluate_test.dart
index eb69335..2d94906 100644
--- a/test/evaluate_test.dart
+++ b/test/evaluate_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/boolean_selector.dart';
+import 'package:test/test.dart';
 
 void main() {
   group('operator:', () {
diff --git a/test/parser_test.dart b/test/parser_test.dart
index 5eca512..0b9db48 100644
--- a/test/parser_test.dart
+++ b/test/parser_test.dart
@@ -2,10 +2,9 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/src/ast.dart';
 import 'package:boolean_selector/src/parser.dart';
+import 'package:test/test.dart';
 
 /// A matcher that asserts that a value is a [ConditionalNode].
 final _isConditionalNode = TypeMatcher<ConditionalNode>();
diff --git a/test/scanner_test.dart b/test/scanner_test.dart
index c684278..de9c416 100644
--- a/test/scanner_test.dart
+++ b/test/scanner_test.dart
@@ -2,10 +2,9 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/src/scanner.dart';
 import 'package:boolean_selector/src/token.dart';
+import 'package:test/test.dart';
 
 void main() {
   group('peek()', () {
diff --git a/test/to_string_test.dart b/test/to_string_test.dart
index 1047fd1..971e5b9 100644
--- a/test/to_string_test.dart
+++ b/test/to_string_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/boolean_selector.dart';
+import 'package:test/test.dart';
 
 void main() {
   group('toString() for', () {
diff --git a/test/validate_test.dart b/test/validate_test.dart
index f040069..ec5b7eb 100644
--- a/test/validate_test.dart
+++ b/test/validate_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/boolean_selector.dart';
+import 'package:test/test.dart';
 
 var _selector = BooleanSelector.parse('foo && bar && baz');
 
diff --git a/test/variables_test.dart b/test/variables_test.dart
index e354907..5331409 100644
--- a/test/variables_test.dart
+++ b/test/variables_test.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:test/test.dart';
-
 import 'package:boolean_selector/boolean_selector.dart';
+import 'package:test/test.dart';
 
 void main() {
   test('a variable reports itself', () {