Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

Add Basic Junit Tests to some plugins #4108

Merged
merged 7 commits into from
Jun 29, 2021

Conversation

bparrishMines
Copy link
Contributor

@bparrishMines bparrishMines commented Jun 25, 2021

flutter/flutter#83358

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Note that unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
  • I updated CHANGELOG.md to add a description of the change.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

public class GoogleSignInTest {
@Test
public void aTest() {
assertEquals(2, 2);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there something from the plugin implementation that we could test?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could, but I think this would require me to change the code of each plugin to add a meaningful test. The Java code in most of these plugins weren't designed to be tested and adding a test would require making a method/field public and mocking stuff. I'll add some arbitrary tests

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stuartmorgan any thoughts?

Copy link
Contributor

@stuartmorgan stuartmorgan Jun 28, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The primary goal is to have the structure in place so that we can point PR authors to a file to add tests to, rather than saying "you need to add a test file in the right place, then update the build, etc."

A meaningful test is obviously better than not since it provides more of an example to follow, but I'm fine with just having a placeholder in the interests of getting the basic test harness infrastructure in place everywhere. If we do placeholders we should:

  • Clearly comment that it's a placeholder until some real tests are in place (I know it should be obvious, but a first-time contributor could be confused).
  • Ideally have the placeholder do something with the plugin (e.g., in the corresponding iOS changes Jenn had the placeholder test just instantiate the plugin; could we do something similar?). That guarantees that we don't have, say, linking or import issues that someone trying to use it for the first time would immediately hit.

@blasten
Copy link

blasten commented Jun 25, 2021

once the test is updated, we also need to enable these tests in CI

@stuartmorgan
Copy link
Contributor

once the test is updated, we also need to enable these tests in CI

Isn't that what https://github.com/flutter/plugins/blob/master/.cirrus.yml#L154 is doing? If not, what are the extra steps to enable them?

@blasten
Copy link

blasten commented Jun 28, 2021

@stuartmorgan ah, nvm. I thought it required a manual line.

final Iterable<Directory> examplesWithTests = getExamplesForPlugin(package)


public class SharedPreferencesTest {
@Test
public void initPlugin() {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it make sense to change it to initPluginDoesNotThrow?

Copy link

@blasten blasten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % comment

bparrishMines and others added 2 commits June 28, 2021 19:41
…utter/plugins/videoplayer/VideoPlayerTest.java

Co-authored-by: Emmanuel Garcia <[email protected]>
@bparrishMines bparrishMines merged commit 94caa8a into flutter:master Jun 29, 2021
@bparrishMines bparrishMines deleted the junit branch June 29, 2021 21:32
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 29, 2021
Ralph-Li pushed a commit to Insight-Timer/plugins that referenced this pull request Jul 1, 2021
* upstream_v0_8_1+3: (99 commits)
  [image_picker] Fixed IOException when cache directory is removed (flutter#4117)
  [in_app_purchase] Fix app exceptions caused by missing App Store receipt (flutter#4096)
  Add Basic Junit Tests to some plugins (flutter#4108)
  [image_picker]Update example app (flutter#4103)
  [flutter_plugin_tools] Restructure version-check (flutter#4111)
  Split some Cirrus script steps (flutter#4112)
  [flutter_plugin_tools] Migrate java-test to new base command (flutter#4105)
  [flutter_plugin_tools] ignore flutter_plugin_tools when publishing (flutter#4110)
  [in_app_purchase] Add support for SKPaymentQueueDelegate and showPriceConsentIfNeeded (flutter#4085)
  [flutter_plugin_tools] release 0.3.0 (flutter#4109)
  Migrate command, add failure test, remove skip (flutter#4106)
  Don't install cocoapods; use the version in the image (flutter#4104)
  [flutter_plugin_tools] Migrate analyze to new base command (flutter#4084)
  Add release status badge to README (flutter#4102)
  Build all iOS example apps on current Flutter stable (flutter#4101)
  [url_launcher] Fix test button check for iOS 15 (flutter#4088)
  Update .ci.yaml documentation link (flutter#4090)
  [image_picker] Updated pickImage and pickVideo docs to expose the possible errors that can be thrown (flutter#4089)
  [flutter_plugin_tools] `publish-plugin` check against pub to determine if a release should happen (flutter#4068)
  [webview_flutter] Suppress iOS 9 deprecation warnings (flutter#4100)
  ...

# Conflicts:
#	packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m
amantoux pushed a commit to amantoux/plugins that referenced this pull request Jul 10, 2021
fotiDim pushed a commit to fotiDim/plugins that referenced this pull request Sep 13, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants