diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-11-01 01:13:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-01 01:13:35 -0500 |
commit | 291f393723d22a582bb9a49ef7294ec14eca2127 (patch) | |
tree | 6bff5ca222554e11f70f48674f561593202e219f | |
parent | c69c6cf58bb31de36af98d4b84dfdec2724d5b5b (diff) | |
parent | 32ba45ab6fe350c70aaad0ed29b66995571186c7 (diff) | |
download | servo-291f393723d22a582bb9a49ef7294ec14eca2127.tar.gz servo-291f393723d22a582bb9a49ef7294ec14eca2127.zip |
Auto merge of #13986 - iamrohit7:tidy-feature-attrs, r=Wafflespeanut
Make test-tidy check for alphabetical ordering of #![feature(...)] statements
<!-- Please describe your changes on the following line: -->
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [x] These changes fix #13954 (github issue number if applicable).
<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13986)
<!-- Reviewable:end -->
-rw-r--r-- | components/net/lib.rs | 2 | ||||
-rw-r--r-- | components/plugins/lib.rs | 3 | ||||
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 25 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/lib.rs | 14 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 8 | ||||
-rw-r--r-- | tests/unit/style/lib.rs | 2 |
6 files changed, 51 insertions, 3 deletions
diff --git a/components/net/lib.rs b/components/net/lib.rs index 822c2105c6e..4ca85975344 100644 --- a/components/net/lib.rs +++ b/components/net/lib.rs @@ -2,9 +2,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#![feature(box_syntax)] #![feature(custom_attribute)] #![feature(custom_derive)] -#![feature(box_syntax)] #![feature(fnbox)] #![feature(mpsc_select)] #![feature(plugin)] diff --git a/components/plugins/lib.rs b/components/plugins/lib.rs index 30009d63aeb..e62243e8024 100644 --- a/components/plugins/lib.rs +++ b/components/plugins/lib.rs @@ -13,7 +13,8 @@ //! - `#[dom_struct]` : Implies `#[privatize]`,`#[derive(JSTraceable)]`, and `#[must_root]`. //! Use this for structs that correspond to a DOM type -#![feature(plugin_registrar, quote, plugin, box_syntax, rustc_private, slice_patterns)] + +#![feature(box_syntax, plugin, plugin_registrar, quote, rustc_private, slice_patterns)] #![deny(unsafe_code)] diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index b0e420988d7..98eb8fa2d94 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -385,11 +385,14 @@ def check_rust(file_name, lines): import_block = False whitespace = False + is_lib_rs_file = file_name.endswith("lib.rs") + prev_use = None prev_open_brace = False current_indent = 0 prev_crate = {} prev_mod = {} + prev_feature_name = "" decl_message = "{} is not in alphabetical order" decl_expected = "\n\t\033[93mexpected: {}\033[0m" @@ -517,6 +520,28 @@ def check_rust(file_name, lines): + decl_found.format(crate_name)) prev_crate[indent] = crate_name + # check alphabetical order of feature attributes in lib.rs files + if is_lib_rs_file: + match = re.search(r"#!\[feature\((.*)\)\]", line) + + if match: + features = map(lambda w: w.strip(), match.group(1).split(',')) + sorted_features = sorted(features) + if sorted_features != features: + yield(idx + 1, decl_message.format("feature attribute") + + decl_expected.format(tuple(sorted_features)) + + decl_found.format(tuple(features))) + + if prev_feature_name > sorted_features[0]: + yield(idx + 1, decl_message.format("feature attribute") + + decl_expected.format(prev_feature_name + " after " + sorted_features[0]) + + decl_found.format(prev_feature_name + " before " + sorted_features[0])) + + prev_feature_name = sorted_features[0] + else: + # not a feature attribute line, so empty previous name + prev_feature_name = "" + # imports must be in the same line, alphabetically sorted, and merged # into a single import block if line.startswith("use "): diff --git a/python/tidy/servo_tidy_tests/lib.rs b/python/tidy/servo_tidy_tests/lib.rs new file mode 100644 index 00000000000..4ca395d8e6d --- /dev/null +++ b/python/tidy/servo_tidy_tests/lib.rs @@ -0,0 +1,14 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#![feature(def)] +#![feature(abc)] + +#![feature(abc, def, ghi)] +#![feature(aaa)] + +#![feature(def, ghi, abc)] + +#![feature(ghi)] +#![feature(abd, hef)] diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py index 7bec2c61718..d997bb00f82 100644 --- a/python/tidy/servo_tidy_tests/test_tidy.py +++ b/python/tidy/servo_tidy_tests/test_tidy.py @@ -127,6 +127,14 @@ class CheckTidiness(unittest.TestCase): self.assertEqual('extra space after test_fun', errors.next()[2]) self.assertNoMoreErrors(errors) + feature_errors = tidy.collect_errors_for_files(iterFile('lib.rs'), [], [tidy.check_rust], print_text=False) + + self.assertTrue('feature attribute is not in alphabetical order' in feature_errors.next()[2]) + self.assertTrue('feature attribute is not in alphabetical order' in feature_errors.next()[2]) + self.assertTrue('feature attribute is not in alphabetical order' in feature_errors.next()[2]) + self.assertTrue('feature attribute is not in alphabetical order' in feature_errors.next()[2]) + self.assertNoMoreErrors(feature_errors) + def test_spec_link(self): tidy.SPEC_BASE_PATH = base_path errors = tidy.collect_errors_for_files(iterFile('speclink.rs'), [], [tidy.check_spec], print_text=False) diff --git a/tests/unit/style/lib.rs b/tests/unit/style/lib.rs index 164ccadef10..240cac4eb79 100644 --- a/tests/unit/style/lib.rs +++ b/tests/unit/style/lib.rs @@ -3,8 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #![cfg(test)] -#![feature(plugin)] #![feature(core_intrinsics)] +#![feature(plugin)] extern crate app_units; extern crate cssparser; |