253 Commits

Author SHA1 Message Date
Robert Moore
40f0765de1
[Scripts] Update brew only once per run. (#8145)
Attempts to reduce the frequency of #8143
2019-08-01 14:12:29 -04:00
featherless
c8f3973d4a
[scripts] Fix relative link rewriting. (#7205)
Context is in the associated issue.

This affects the perl expression that prepends `docs/` to local urls. Specifically, it makes the perl expression only modify urls that link to a sibling markdown file composed of `\w` characters (e.g. `theming.md`). This is not perfect, but it addresses our needs for now. If/when we encounter other types of local urls that we can address them separately.

For now, this change fixes the incorrect behavior described in the associated bug.

Closes https://github.com/material-components/material-components-ios/issues/7203
2019-04-22 15:45:10 +03:00
featherless
2815006a47 [scripts] Fix the generate_readme script's jazzy symbol generation. (#7196)
Context is described in the associated issue.

The fix here is to force jazzy to only look at a given component when resolving headers. This means the generate_readme script will generate some import errors, so I've added a notice to the script indicating that these errors are likely ok.

Closes https://github.com/material-components/material-components-ios/issues/7195
2019-04-21 21:22:48 -04:00
featherless
0edd1705ab
[scripts/release] Ignore goldens when generating component notes (#6861)
Prior to this change, `./scripts/release notes` would consider commits that affected our snapshot goldens (found in `snapshot_test_goldens` as multi-component changes.

After this change, snapshot tests that change our goldens are properly bucketed in the relevant component.

## Before

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524161) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4d30) (Robert Moore)
* [Examples clean-up. (#6718)](10ed6188a5) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc882a) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c46649db) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e4db) (dmaclach)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d265ad) (Yarden Eitan)
* [update docs (#6772)](c2e912df8f) (Yarden Eitan)

### Snackbar

* [Make initialization threadsafe. (#6768)](530c7b9b61) (Robert Moore)

### Tabs

* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a75e) (Andrew Overton)

## Multi-component changes

* [Add basic Snapshot tests (#6826)](2e5df058e3) (Robert Moore)
* [Add basic Snapshot tests. (#6801)](dd363f1118) (Robert Moore)
* [Add basic Snapshot tests. (#6821)](b1cab54a4f) (Robert Moore)
* [Add basic Snapshot tests. (#6823)](1d058b155b) (Robert Moore)
* [Add basic Snapshot tests. (#6824)](951cc57ba0) (Robert Moore)
* [Add basic Snapshot tests. (#6825)](018e72e3cf) (Robert Moore)
* [Add basic Snapshot tests. (#6828)](32904609b0) (Robert Moore)
* [Add basic snapshot tests. (#6822)](9e8fdc2d7f) (Robert Moore)
* [Dynamic Type 2.0 (#6733)](648f2499e8) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c584) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35f07) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b719) (Robert Moore)
```

## After

```
## Changes

### ActionSheet

* [Fixes broken action sheet tests. (#6743)](fbcf524161) (Robert Moore)

### ActivityIndicator

* [Add basic Snapshot tests (#6826)](2e5df058e3) (Robert Moore)

### BottomNavigation

* [Clean up internal constants (#6834)](585a5f4d30) (Robert Moore)
* [Examples clean-up. (#6718)](10ed6188a5) (Robert Moore)
* [Prevents the client from setting the navigation items directly when using the bottom navigation bar controller. (#6773)](d049bc882a) (Eric Lee)

### Buttons

* [Allow setting `accessibilityTraits`. (#6766)](66c46649db) (Robert Moore)

### Collections

* [Clean up interface by removing NS_REQUIRES_SUPER (#6788)](921ad6e4db) (dmaclach)

### List

* [Add basic snapshot tests. (#6822)](9e8fdc2d7f) (Robert Moore)

### NavigationBar

* [Add basic Snapshot tests. (#6821)](b1cab54a4f) (Robert Moore)

### PageControl

* [Add basic Snapshot tests. (#6823)](1d058b155b) (Robert Moore)

### ProgressView

* [Add basic Snapshot tests. (#6825)](018e72e3cf) (Robert Moore)

### Ripple

* [Added a fix for the ripple sometimes blinking when ending animation (#6792)](6f51d265ad) (Yarden Eitan)
* [update docs (#6772)](c2e912df8f) (Yarden Eitan)

### Snackbar

* [Add basic Snapshot tests. (#6824)](951cc57ba0) (Robert Moore)
* [Make initialization threadsafe. (#6768)](530c7b9b61) (Robert Moore)

### Tabs

* [Add basic Snapshot tests. (#6801)](dd363f1118) (Robert Moore)
* [Fix badge text truncation bug in MDCItemBarCell (#6786)](188f05a75e) (Andrew Overton)

### Typography

* [Add basic Snapshot tests. (#6828)](32904609b0) (Robert Moore)

## Multi-component changes

* [Dynamic Type 2.0 (#6733)](648f2499e8) (ianegordon)
* [Enable -Wunguarded-availability. (#6776)](f17b01c584) (featherless)
* [Revert "[Typography] Dynamic Type 2.0 (#6733)" (#6848)](7f52f35f07) (ianegordon)
* [{Tests} Fix font comparison in Objective-C. (#6789)](3447c7b719) (Robert Moore)
```
2019-03-13 09:55:46 -04:00
Yarden Eitan
c4d24627ee
updated jazzy yaml files to include framework root (#6750)
We have had errors when generating the docs using jazzy specifically around components giving a fatal error around not finding imports when depending on other components. This is because each component for jazzy is isolated and on its own unless we provide the framework root. This caused our website generator to crash each time and fail to generate a new website.

This should resolve this problem.

QA=
Before the fix when running the website generator we got these errors:
```
/material-components-ios/components/BottomAppBar/src/MDCBottomAppBarView.h:17:9: fatal error: 'MaterialButtons.h' file not found
building site
building search index
^C/Library/Ruby/Gems/2.3.0/gems/rouge-3.1.1/lib/rouge/lexer.rb:458:in `load': Interrupt
	from /Library/Ruby/Gems/2.3.0/gems/rouge-3.1.1/lib/rouge/lexer.rb:458:in `load_lexer'
	from /Library/Ruby/Gems/2.3.0/gems/rouge-3.1.1/lib/rouge.rb:50:in `block in <top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/rouge-3.1.1/lib/rouge.rb:49:in `each'
	from /Library/Ruby/Gems/2.3.0/gems/rouge-3.1.1/lib/rouge.rb:49:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/jazzy_markdown.rb:2:in `require'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/jazzy_markdown.rb:2:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/doc.rb:7:in `require'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/doc.rb:7:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/config.rb:5:in `require'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy/config.rb:5:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy.rb:1:in `require'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/lib/jazzy.rb:1:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/bin/jazzy:13:in `require'
	from /Library/Ruby/Gems/2.3.0/gems/jazzy-0.9.3/bin/jazzy:13:in `<top (required)>'
	from /usr/local/bin/jazzy:22:in `load'
	from /usr/local/bin/jazzy:22:in `<top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:74:in `load'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:74:in `kernel_load'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:28:in `run'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli.rb:463:in `exec'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli.rb:27:in `dispatch'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/cli.rb:18:in `start'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/exe/bundle:30:in `block in <top (required)>'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
	from /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/exe/bundle:22:in `<top (required)>'
	from /usr/local/bin/bundle:22:in `load'
	from /usr/local/bin/bundle:22:in `<main>'
/material-components-site-generator/scripts/lib/reporter.js:36
      throw e;
      ^

Error: Command failed: bundle exec jazzy         --output "/material-components-site-generator/.stage/ios/catalog/bottomnavigation/api-docs/"         --theme "/material-components-site-generator/ios-api-docs-src/theme"         --head '/components'         --use-safe-filenames
    at checkExecSyncError (child_process.js:601:13)
    at execSync (child_process.js:641:13)
    at JazzyApiGenerator.build (/material-components-site-generator/scripts/lib/jazzy-api-generator.js:34:5)
    at PlatformSite.generateApiDocs (/material-components-site-generator/scripts/lib/platform-site.js:212:17)
    at platformSites.forEach (/material-components-site-generator/scripts/build:86:14)
    at Array.forEach (<anonymous>)
    at reporter.step (/material-components-site-generator/scripts/build:85:21)
    at Reporter.step (/material-components-site-generator/scripts/lib/reporter.js:32:22)
    at Object.<anonymous> (/material-components-site-generator/scripts/build:84:14)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3
```
Now we no longer get fatal errors or crash when running the script.
2019-03-01 16:52:02 -05:00
Robert Moore
890c46a998
[Scripts] bazel coverage ignores deletions. (#6431)
When looking at which files are included in bazel targets and which are
not, we should exclude any files that were deleted. If not, any PR that
deletes a file could potentially produce a false positive and get
blocked from submission.

Closes #6428
2019-01-22 09:28:20 -05:00
Robert Moore
63947c09f7
{kokoro} Detect snapshot tests missing bazel support. (#6324)
Now that bazel builds support snapshot test targets, we should detect and
fail when they are missing from a bazel target.
2019-01-16 08:02:40 -05:00
Robert Moore
cf38baae08
{kokoro} Only upgrade gem/homebrew when needed. (#6261)
Instead of updating both RubyGems and Homebrew at the beginning of the kokoro
script, they should only be updated if they're going to be used for an install
or update command.

Closes #6256
2019-01-11 10:14:45 -05:00
Robert Moore
6900078aaa {kokoro} Fix affected targets calculation. (#6185)
The affected_targets script was looking at the entire log of changes within a
branch or history. Instead, it should only look at the differences between
HEAD and the diff base.
2019-01-07 10:42:32 -05:00
Robert Moore
79f552c3b3
{kokoro} Exclude Snapshot component from coverage. (#6144)
Since all of the `Snapshot` code is so far completely unbuildable on bazel
(because of the dependency on the snapshot library), changes to it should be
excluded from the bazel coverage job.
2018-12-28 12:10:18 -05:00
Robert Moore
fc4cbc8480
{kokoro} Fix bazel uncovered script failures due to pushd/popd (#6134)
The `files_missing_bazel_target` script was generating errors when trying to "pop" directories from the stack after posting a comment. This was causing spurious errors in jobs (e.g., [#6118](https://fusion.corp.google.com/runanalysis/info/prod%3AMaterialComponents_iOS%2Fmacos_external%2Fpresubmit_bazel_targets_updated/prod%3AMaterialComponents_iOS%2Fmacos_external%2Fpresubmit_bazel_targets_updated/KOKORO/0ba82f15-aa10-4c62-8269-034794d0b9d5/1545981553724/prod%3AMaterialComponents_iOS%2Fmacos_external%2Fpresubmit_bazel_targets_updated%20Build%20%2385/Targets)).  Refactoring the script should result in correctly-balanced `pushd`/`popd` calls.
2018-12-28 10:33:42 -05:00
Robert Moore
77ea164320
[kokoro] Moving library scripts to lib directory. (#6126)
To make it clearer which `scripts` files are executable and which only provide
libraries of functions, the two library scripts are being moved to a separate
directory.
2018-12-27 11:53:46 -05:00
Robert Moore
f5a2f5987b
{kokoro} Remove stale comments from "bazel coverage" job. (#6119)
The bazel coverage job was not removing old comments if the uncovered files
were later corrected (or the script was fixed).
2018-12-27 10:34:01 -05:00
Robert Moore
c154988986
{kokoro} Exclude "snapshot" tests from bazel coverage. (#6115)
Since our snapshot tests cannot currently execute in bazel, we should exclude
them from coverage calculations for bazel targets.
2018-12-26 15:40:23 -05:00
Robert Moore
658901317b
{kokoro} Fix job that checks for source files not covered by a BUILD target (#6092)
The job was broken due to a few things:
* It did not update bazel on the kokoro runner after install.
* It used the wrong bazel query to determine if a file was included in a BUILD package.
* It was not posting comments to the PR, forcing authors to hunt through the logs (which not all authors can access).

Commit eaa9d12554a2d22275124bd7e34c48fab148b0b4 (in this PR's history) originally included several files to test the behavior of the job. Since I cannot turn the job on for the `develop` branch until these changes are made (because it will fail with spurious errors), the testing took place in this branch independently.
2018-12-26 14:11:39 -05:00
Robert Moore
0d8911c99a
{Scripts} Abort merging release if develop is ahead/behind (#6062)
If the local `develop` branch is either ahead or behind of upstream, abort the
merge and make the user bring them up to date.
2018-12-26 09:06:01 -05:00
Robert Moore
aad7c8f697
[kokoro] Extract github comments to a separate file (#6103)
Since posting comments can be helpful outside of the .kokoro script,
extracting the shared logic to a separate file will allow reuse of the
code and ensure fixes are applied to all uses.
2018-12-26 08:38:17 -05:00
Robert Moore
21122b5acb
{Scripts} Create a script to detect changed files not in a bazel rule (#6102)
In order to prevent us from having example code that cannot be compiled internally, we should detect any PRs that might have new code not covered by a bazel rule. Being included by a bazel rule will provide greater chance for the source to be compiled and perhaps even tested.

Supports #2641
Supports #5370
2018-12-21 15:36:13 -05:00
featherless
02ea7cdb61
[scripts/affected_targets] Fix typo in docs. (#6094) 2018-12-21 13:53:54 -05:00
featherless
d2545a7b67
[kokoro] Improvements to the affected_targets job. (#6084)
- The affected_targets script now accepts a range.
- The .kokoro script now determines the correct range of changes using the target branch.
- Changes to `*.bzl`, `WORKSPACE`, `.kokoro`, `affected_targets`, or `.gitattributes` will now result in a complete build.

E.g. this PR should result in a complete build because it is modifying the .kokoro file.

We can now test `scripts/affected_targets` with various commits like so:

```bash
> scripts/affected_targets test 026a2005e74fb75411295b8f44fd778eb2f87db0...8297e5dca167f72ee1b69d3acfec5507fccceaf7
//components/Tabs:unit_tests
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3
//components/Tabs:unit_tests_IPAD_PRO_12_9_IN_9_3_test_bundle
//components/Tabs:unit_tests_IPHONE_5_IN_8_1
//components/Tabs:unit_tests_IPHONE_5_IN_8_1_test_bundle
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3
//components/Tabs:unit_tests_IPHONE_7_PLUS_IN_10_3_test_bundle
//components/Tabs:unit_tests_IPHONE_X_IN_11_0
//components/Tabs:unit_tests_IPHONE_X_IN_11_0_test_bundle
```
2018-12-21 10:30:06 -05:00
featherless
0df5932164
[.kokoro] Add a new affected_targets job. (#6060)
This new bazel job will only build targets that are affected by the change.

Affected targets are determined via the scripts/affected_targets command.

This job has some rough edges that need to be smoothed out:

- Some changes should result in all targets being affected. E.g. the material_components_ios.bzl file.
- We're only picking up srcs and hdrs modifications right now. We will need to pick up other assets as well (bundles, assets, etc...).

This new job will be enabled, but not required, until we've ensured that its coverage is accurate.
2018-12-20 09:08:27 -05:00
Robert Moore
82c9e9813f
[Scripts] Exit on error in release script (#6044)
The release script was continuing after errors failed to generate the
correct local clone of the repository for the API Diff step. This is
because the main release script suppresses non-zero return codes by
default. Instead, we should explicitly exit of any command returns an
unhandled non-zero value.
2018-12-20 08:42:41 -05:00
featherless
d6b743a043 {scripts/release} Disable git lfs cloning when generating API diff. (#6043)
The `scripts/release apidiff` command needs to create two local temporary clones of the repo in order to generate the API diff. Unfortunately, git lfs fails to clone local copies of a git repo, particularly when not using a `file://` prefix.

The fix is to disable git LFS cloning prior to the API diff temporary clone commands.

```bash
hint: The remote resolves to a file:// URL, which can only work with a
hint: standalone transfer agent.  See section "Using a Custom Transfer Type
hint: without the API server" in custom-transfers.md for details.

hint: The remote resolves to a file:// URL, which can only work with a
hint: standalone transfer agent.  See section "Using a Custom Transfer Type
hint: without the API server" in custom-transfers.md for details.

hint: The remote resolves to a file:// URL, which can only work with a
hint: standalone transfer agent.  See section "Using a Custom Transfer Type
hint: without the API server" in custom-transfers.md for details.

hint: The remote resolves to a file:// URL, which can only work with a
hint: standalone transfer agent.  See section "Using a Custom Transfer Type
hint: without the API server" in custom-transfers.md for details.
Downloading snapshot_test_goldens/goldens_64/MDCCardSnapshotTests/testDefaultCard_11_2@2x.png (1.9 KB)

hint: The remote resolves to a file:// URL, which can only work with a
hint: standalone transfer agent.  See section "Using a Custom Transfer Type
hint: without the API server" in custom-transfers.md for details.
Error downloading object: snapshot_test_goldens/goldens_64/MDCCardSnapshotTests/testDefaultCard_11_2@2x.png (96d48d5): Smudge error: Error downloading snapshot_test_goldens/goldens_64/MDCCardSnapshotTests/testDefaultCard_11_2@2x.png (96d48d51f415dc94427e49a361cf68cdadc86d0e00a6706894a7f82b5d13b086): batch request: missing protocol: "file:///Users/featherless/workbench/material-components-ios/.git/info/lfs"

Errors logged to /private/tmp/mdcios/mdc-ios/.git/lfs/logs/20181218T112727.676554.log
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: snapshot_test_goldens/goldens_64/MDCCardSnapshotTests/testDefaultCard_11_2@2x.png: smudge filter lfs failed
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'
```
2018-12-18 12:56:12 -05:00
featherless
73bdc03c2b
[automated] Rename MaterialComponentsAlpha to MaterialComponentsBeta. (#6018)
This is an automated change generated by replacing all instances of MaterialComponentsAlpha with MaterialComponentsBeta. This is not a breaking change because changes to Alpha/Beta components (including renaming them) are not considered breaking.

The MaterialComponentsAlpha podspec was mistakenly named Alpha, when what we meant was more close to Beta. The distinction is that Alpha components are not expected to be used by clients, while Beta components are.
2018-12-14 10:47:31 -05:00
rami-a
615a0e4061
Snapshot Testing Proof of Concept (#5887)
* Snapshot Testing Proof of Concept (#5754)

### The problem
We currently do not have UI tests on a component level. Integrating snapshot tests would allow us to have peace of mind with each PR that it isn't going to introduce any changes to the UI unless its intended to.

### The solution
* Integrate `ios-snapshot-test-case` pod to handle generating and diffing images of components. 
* Integrate `git-lfs` to handle storage of the goldens.

This PR creates one test to showcase the ability to do snapshot tests. Upon merging this PR, you must install git-lfs in order to properly have the images pulled down. The 3 steps to do this:
1. `brew install git-lfs`
2. `git lfs install`
3. `git lfs pull`

Additionally, the golden is generated using an iOS 11 simulator at 2x scale so that the kokoro jobs are happy.

### Related bugs
Closes #5740

### Difference from #5754 
**Note:** This is a re-revert of #5754 that aims to fix issues with Travis CI by ensuring the snapshot test only runs on a single iOS version. I've opened #5888 to expand on this in the future. A few things changed in the approach in this PR:
 * We only run the snapshot test for iOS 11.2.0 until we can have an elegant solution for supporting multiple OS''s (see #5888)
 * The snapshot tests now live in their own test target to avoid issues with having to require an App host for all tests.
* Additionally, a dummy swift file was required for compilation of this new test target (see https://forums.developer.apple.com/thread/88451 for context)
2018-12-05 09:49:41 -05:00
Robert Moore
13781e6d45
[Catalog] Revert "Snapshot Testing Proof of Concept" (#5883)
Reverts material-components/material-components-ios#5754

Travis CI on `develop` branch testing has failed since snapshot testing was introduced. Rolling it back.

https://travis-ci.org/material-components/material-components-ios/builds
2018-11-30 09:20:03 -05:00
rami-a
c6a300ff2c
Snapshot Testing Proof of Concept (#5754)
### The problem
We currently do not have UI tests on a component level. Integrating snapshot tests would allow us to have peace of mind with each PR that it isn't going to introduce any changes to the UI unless its intended to.

### The solution
* Integrate `ios-snapshot-test-case` pod to handle generating and diffing images of components. 
* Integrate `git-lfs` to handle storage of the goldens.

This PR creates one test to showcase the ability to do snapshot tests. Upon merging this PR, you must install git-lfs in order to properly have the images pulled down. The 3 steps to do this:
1. `brew install git-lfs`
2. `git lfs install`
3. `git lfs pull`

Additionally, the golden is generated using an iOS 11 simulator at 2x scale so that the kokoro jobs are happy.

### Related bugs
Closes #5740
2018-11-29 15:56:06 -05:00
featherless
1fa662346f
[scripts/release] Ignore more project-wide files when generating release notes. (#5852)
### Context

When determining whether a change affects multiple components we want to ignore changes to CocoaPods files that live outside of the components directories.

### The problem + fix

Prior to this change, if a commit modified MaterialComponentsAlpha.podspec or catalog/Podfile it was being picked up as a multi-component change in the release notes.

After this change, commits affecting those files will not be treated as multi-component changes unless they also touch other files in the repo.

### Opportunities for further improvement

It's likely fair to say that any modification to files outside of the `components/` directory can be ignored. I'm not sure what the best way to filter these types of changes is, but that would be a welcome follow-up simplification of this change that would require less on-going maintenance.
2018-11-28 13:08:12 -05:00
featherless
5fa9120510
[scripts/release] Improve the notes command output. (#5796)
The script now outputs four groups of changelogs:

1. Breaking changes for specific components.
2. Breaking changes across multiple components.
3. Changes for specific components.
4. Changes acrosss multiple components.
2018-11-20 09:16:00 -05:00
featherless
d7e126772d
[kokoro] Extract more of the clang-format logic out to clang-format-ci. (#5722)
This will make it easier for us to keep all google-owned repositories running the same clang-format version in tandem.

Also moved from a submodule to a clone + version checkout so that our CI gracefully upgrades as we release new non-breaking release to clang-format-ci.

Relies on upstream changes in https://github.com/material-foundation/clang-format-ci/pull/4
2018-11-19 22:09:50 -05:00
Robert Moore
372d6b24f9
No longer using -init for Color Scheme. (#5734)
{MDC iOS} No longer using `-init` for Color Scheme.

Based on the discussions in go/mdc-ios-theming, we should not use the `-init` default initializer. Instead, we should use an explicit set of defaults.

Search regex: '\[\[MDCSemanticColorScheme alloc\] init\]'
2018-11-12 12:54:47 -05:00
featherless
d26fce134b
[kokoro] Migrate github-comment and clang-format-ci to the material-foundation repos. (#5707)
## Context

Two libraries have graduated from the material-components-ios repo so that they can be used more generally across other open source projects: [clang-format-ci](https://github.com/material-foundation/clang-format-ci) and [github-comment](https://github.com/material-foundation/github-comment).

## What's going on here

Both of these libraries have been added as external submodule dependencies and the scripts have been updated to refer to the new external dependency paths.
2018-11-09 07:15:46 -05:00
featherless
531b372815
[CI] Fix the test_all script. (#5538)
## Prior to this change

Our test_all script was using an Xcode schemes search and filter to identify any test schemes that exist in the repository and test them. Unfortunately, the script was not also testing to confirm that it found at least *some* tests, meaning if it did not find any tests it would silently succeed.

The script was essentially optimized for us adding multiple test schemes in the future. In practice, the frequency with which we add new test schemes is low (we've added only one in the past year via MaterialComponentsAlpha).

## The root cause

With d238c86d47eb072617d285106147ace613321aee, our Xcode test scheme names changed and our scheme search was no longer returning our unit test schemes, resulting in test_all succeeding even though it hadn't run any tests.

## After this change

The test_all script will explicitly test specific schemes. If these schemes change or move in the future, this script will fail until we also update the script's schemes.

This script now also pipes the test output through xcpretty if it is available.

Closes https://github.com/material-components/material-components-ios/issues/5539
2018-10-26 15:29:01 -04:00
Yarden Eitan
71711cb2df
added shape theming to the scripting generation (#5463)
This add the shape theming doc generation for our components. Same as we did for color, we are adding the shape theming template so then it can be easily generated for our docs. I will generate the shape theming docs for our components in a follow up PR.
2018-10-19 16:32:33 -04:00
Ian Gordon
8185409c69 Bumped version number to 66.0.0. 2018-10-04 13:43:15 -04:00
featherless
45bbf03603
[scripts/release] Fix component extension output in apidiff command. (#5210)
Prior to this change, `Component+Extension` additions would be incorrectly listed as a "New component" in the API diff.

After this change, `Componet+Extension` additions will be listed as "New extension" in the API diff.
2018-09-24 17:37:39 +03:00
Jeff Verkoeyen
dc3b59873b Update changelog and apidiff tool. 2018-09-12 09:15:40 -04:00
Michelle Dudley
741d375605 [Codelabs] Add documentation for build_codelabs script (#4952)
* Fix typos

* Add build_codelabs documentation

* Add build_codelabs to release
2018-09-11 07:49:43 -07:00
featherless
6915a77f79 [scripts/release] Don't include automated changes in the release notes. (#4999)
Any commit with `[automated]` in its title will be excluded from the release notes.

Closes https://github.com/material-components/material-components-ios/issues/5002
2018-09-05 10:11:12 -04:00
featherless
fcf74f00c5 [scripts/release] Sort the notes output by component. (#5001)
Closes https://github.com/material-components/material-components-ios/issues/5000
2018-09-05 10:10:50 -04:00
featherless
158c9789ce [scripts/release] Remove the #### Changes header from notes output. (#5004)
Closes https://github.com/material-components/material-components-ios/issues/5003
2018-09-05 10:10:35 -04:00
featherless
00f484183c
Update material-motion-apidiff to latest origin/develop. (#4991)
This fixes an upstream bug where entire classes would be printed as part of the API diff. Most recently seen here: https://github.com/material-components/material-components-ios/pull/4988

Upstream change: https://github.com/material-motion/apidiff/pull/23
2018-09-04 15:58:09 -04:00
featherless
41b6011085 [github-comment] When posting diff comments, use only the file to unique the comment. (#4989)
This ensures that if a piece of feedback moves around within a given file (e.g. because lines were added or removed above this feedback) that we won't erroneously post the same comment again.
2018-08-31 16:19:03 -04:00
featherless
bf889f825b
[kokoro] Add a clang-format job. (#4977)
This job is our first official linter.

<img width="830" alt="screen shot 2018-08-30 at 5 12 35 pm" src="https://user-images.githubusercontent.com/45670/44880230-d8049780-ac79-11e8-926b-836b16c86f9f.png">

See https://github.com/material-components/material-components-ios/pull/4954 for an example thread in which I purposefully made some style regressions and let the tool post back to the PR until I resolved them.

This new job will apply clang-format *only* to the lines that have been changed by a given pull request. If any changes are suggested, the diff will be shown in the job's build logs and individual changes will be posted back to the PR at each suggested line.

The provided feedback can be addressed in multiple ways:

1. Manually, by copying the suggested changes into your code.
2. By running git-clang-format on your local branch. The tool will suggest this, including an ideal command line invocation to do so.

This job can be run locally, though it requires a fair amount of configuration to do so. See the job's documentation for more details on which environment variables are required.

---

This change also required modifications to the github-comment command line tool. Notably:

1. A very light-weight diff parser was added. This API takes a git diff [unified diff](https://www.gnu.org/software/diffutils/manual/html_node/Example-Unified.html#Example-Unified) file and parses it into individual [hunks](https://www.gnu.org/software/diffutils/manual/html_node/Hunks.html).
2. A hunk-correlator was added. This is the magic that translates clang-format's suggested diff into individual positions on a GitHub pull request.
3. A new GitHub API method for fetching a single file was added. We require this in order to fetch the pull request diff.
4. A new set of command line parameters was added to the github-comment tool. Use of these new parameters turn a suggested diff into a series of GitHub pull request line comments.

Before posting any new comments to the PR, the command enumerates all of the existing comments into a Set. If desired comment already exists in the set of comments then it will not be posted again. This is the mechanism by which we minimize noise generated from the job on subsequent updates to the PR.

---

The essential workflow for this tool is (on kokoro):

1. Install the clang-format version we're using internally by fetching it from our pre-built binary repository: https://github.com/material-foundation/clang-format
2. Install the git-clang-format tool.
3. Verify the checksums of both tools.
4. Run git-clang-format on the pull request.
5. If there have been no changes, exit with status 0 and post success back to the PR. Deletes any comment that had been made previously about style (this matches the apidiff behavior).
6. Otherwise, output the diff results and feed the diff to github-comment.
7. github-comment parses the pull request diff and the suggested diff, correlates the suggested hunks with the pull request hunks, and then posts individual line comments with the suggested changes.
8. If a summary comment hasn't already been posted to the PR, a summary comment is posted. Otherwise, we update the existing comment.
9. Post a failure status to the PR.
2018-08-31 14:12:14 -04:00
featherless
d9c3e3167b
[scripts/github-comment] Remove duplicate target. (#4975)
This resolves a warning that was appearing when building/running the github-comment project:

```
warning: Ignoring duplicate product 'github-comment'
```

Tested by running:

```
cd scripts/github-comment/
swift run github-comment
```

And verifying that the above warning did not appear and that the command successfully built and executed.
2018-08-31 09:32:22 -04:00
featherless
bac4dce1c7
[scripts/release] Add a dragon to publishing the podspec. (#4971) 2018-08-30 15:59:13 -04:00
featherless
a826d72398
[scripts/release] Allow umbrellas and files to generate info from a given sha. (#4961)
The umbrellas command is fed in to the apidiff tool as a filter for which components to look at.

Prior to this change, the umbrellas command was ignoring the apidiff base sha and always generating results from origin/stable.

After this change, the umbrellas and files commands will both accept an optional base sha from which to generate results.

Tested by running:

```bash
./scripts/release umbrellas HEAD
# Should output nothing
```
2018-08-30 13:57:05 -04:00
featherless
a32cb6d72b
[scripts/release] Remove email step from the release tool. (#4941)
This is no longer part of our release process.
2018-08-29 11:29:38 -04:00
featherless
42d0c8db3d
[scripts/release] Add explanations for each section of the release notes. (#4822)
The release engineer is expected to fill these sections in by gathering the information from the commits. If information is not available in a given commit, then the release engineer is expected to reach out to the commit author and ask them to provide the additional information (and encouraging them to do so in their commits in the future).
2018-08-29 09:26:15 -04:00
featherless
31e5ad0bad
[scripts/generate_readme] Add .jazzy.yaml check. (#4938) 2018-08-29 09:25:35 -04:00