blob: f9d557c23c3739eb5027904257aeb547302309cf [file] [log] [blame]
#!/usr/bin/python3
#
# Copyright (C) 2020 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import unittest
import os
from GitClient import *
from AndroidXMarkdown import *
class GitClientTestImpl(GitClient):
def __init__(self, workingDir):
self.workingDir = workingDir
self.gitRoot = self.findGitDirInParentFilepath(workingDir)
if self.gitRoot == None:
self.gitRoot = workingDir
self.commandReplies = {}
def executeCommand(self, command):
if command in self.commandReplies:
return self.commandReplies[command]
else:
print_e('FAILED: The following command was not given a reply for the mock GitClient: \n%s\n ' % command)
return None
def addReply(self, command, reply):
self.commandReplies[command] = reply
class TestGitClient(unittest.TestCase):
def test_gitClientFindsGitDir(self):
gitClient = GitClientTestImpl(os.getcwd())
self.assertTrue(os.path.exists(gitClient.gitRoot + "/.git"))
def test_parseMalformattedReleaseNoteLine(self):
projectDir = "group/artifact"
commitWithABugFixString = """
_CommitStart
Here is an explanation of my commit that changes a kotlin file
Relnote: "Missing close quote in the release note block.
This is the second line of the release notes. It should not be included in the
release notes because this commit is missing the closing quote.
Bug: 111111, 222222
Test: ./gradlew buildOnServer
Change-Id: myChangeId
""" + \
projectDir + "/a.java"
commitWithABugFix = Commit(
commitWithABugFixString,
projectDir
)
self.assertEqual(
"Missing close quote in the release note block.",
commitWithABugFix.releaseNote
)
def test_parseAPICommitWithMultiLineReleaseNote(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: "Added a new API that does something awesome and does a whole bunch
of other things that are also awesome and I just can't elaborate enough how
incredible this API is"
"This is an extra set of quoted text"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("Added a new API!", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt"
],
commitWithApiChange.files
)
self.assertEqual(
"Added a new API that does something awesome and does a whole bunch\n" +
" of other things that are also awesome and I just can't elaborate " +
"enough how\n incredible this API is",
commitWithApiChange.releaseNote
)
def test_parseCommitWithMultiLineTripleQuoteReleaseNote(self):
commitWithApiChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: """Added a new API that does something awesome and does a whole bunch
of other things that are also awesome and I just can't elaborate enough how
incredible this API is"""
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual(
"Added a new API that does something awesome and does a whole bunch\n" +
" " +
"of other things that are also awesome and I just can't elaborate enough how\n" +
" " +
"incredible this API is",
commitWithApiChange.releaseNote
)
def test_parseCommitWithTripleQuoteReleaseNoteWithContainedQuotes(self):
commitWithApiChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: """
Added a new API `myFoo`. This means you can now
call `myFoo("bar")` instead of `myFooBar("barbar").myBaz()`.
"""
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual(
'Added a new API `myFoo`. This means you can now\n' +
' ' +
'call `myFoo("bar")` instead of `myFooBar("barbar").myBaz()`.',
commitWithApiChange.releaseNote
)
def test_parseCommitWithOneLineTripleQuoteReleaseNote(self):
commitWithApiChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: """Added a new API!"""
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual(
"Added a new API!",
commitWithApiChange.releaseNote
)
def test_parseCommitWithTripleQuoteAndBackslashQuoteReleaseNote(self):
commitWithApiChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: """
Added a new API `myFoo`. This means you can now
call `myFoo("bar")` instead of `myFooBar("barbar").myBaz()`.
"""
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual(
'Added a new API `myFoo`. This means you can now\n' +
' ' +
'call `myFoo("bar")` instead of `myFooBar("barbar").myBaz()`.',
commitWithApiChange.releaseNote
)
commitWithEdgeCaseRelnoteChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: """Testing that \\"quotes\\" work when we put ten of them in the \\"message\\" """
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithEdgeCaseRelnoteChange = Commit(commitWithEdgeCaseRelnoteChangeString, "/projectdir/")
self.assertEqual(
'Testing that "quotes" work when we put ten of them in the "message"',
commitWithEdgeCaseRelnoteChange.releaseNote
)
def test_parseCommitWithOneLineAndBackslashQuoteReleaseNote(self):
commitWithIOneLineEdgeCaseRelnoteChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: Testing that escaped quoted work on one \\"line\\"
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithIOneLineEdgeCaseRelnoteChange = Commit(commitWithIOneLineEdgeCaseRelnoteChangeString, "/projectdir/")
self.assertEqual(
'Testing that escaped quoted work on one "line"',
commitWithIOneLineEdgeCaseRelnoteChange.releaseNote
)
commitWithIOneLineTrailingBackslashRelnoteChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: Testing that we handle trailing back slashes properly \\
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithIOneLineTrailingBackslashRelnoteChange = Commit(commitWithIOneLineTrailingBackslashRelnoteChangeString, "/projectdir/")
self.assertEqual(
'Testing that we handle trailing back slashes properly \\',
commitWithIOneLineTrailingBackslashRelnoteChange.releaseNote
)
commitWithIOneLineMalformattedRelnoteChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: "Testing that we handle trailing back slashes properly \\"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithIOneLineMalformattedRelnoteChange = Commit(commitWithIOneLineMalformattedRelnoteChangeString, "/projectdir/")
self.assertEqual(
'Testing that we handle trailing back slashes properly \"',
commitWithIOneLineMalformattedRelnoteChange.releaseNote
)
def test_parseCommitWithSingleQuoteAndBackslashQuoteReleaseNote(self):
commitWithApiChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: "
Added a new API `myFoo`. This means you can now
call `myFoo(\\"bar\\")` instead of `myFooBar(\\"barbar\\").myBaz()`.
"
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual(
'Added a new API `myFoo`. This means you can now\n' +
' ' +
'call `myFoo("bar")` instead of `myFooBar("barbar").myBaz()`.',
commitWithApiChange.releaseNote
)
commitWithEdgeCaseRelnoteChangeString = '''
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Relnote: "Testing that \\"quotes\\" work when we put six of them in the \\"message\\""
"This is an extra set of quoted text"
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
'''
commitWithEdgeCaseRelnoteChange = Commit(commitWithEdgeCaseRelnoteChangeString, "/projectdir/")
self.assertEqual(
'Testing that "quotes" work when we put six of them in the "message"',
commitWithEdgeCaseRelnoteChange.releaseNote
)
def test_parseAPICommitWithDefaultDelimiters(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Relnote: Added an awesome new API!
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("Added a new API!", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt"
],
commitWithApiChange.files
)
self.assertEqual("Added an awesome new API!", commitWithApiChange.releaseNote)
self.assertEqual(
"Added a new API! ([myChan]" +
"(https://android-review.googlesource.com/#/q/myChangeId), " +
"[b/123456](https://issuetracker.google.com/issues/123456), " +
"[b/1234567](https://issuetracker.google.com/issues/1234567), " +
"[b/123123](https://issuetracker.google.com/issues/123123))",
str(commitWithApiChange)
)
def test_parseAPICommitWithOneBug(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Relnote: Added an awesome new API!
Bug: 123456
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("Added an awesome new API!", commitWithApiChange.releaseNote)
self.assertEqual([123456], commitWithApiChange.bugs)
self.assertEqual(
"Added a new API! ([myChan]" +
"(https://android-review.googlesource.com/#/q/myChangeId), " +
"[b/123456](https://issuetracker.google.com/issues/123456))",
str(commitWithApiChange)
)
def test_parseAPICommitWithMultipleBugs(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Relnote: Added an awesome new API!
Bug: 123456, 1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Change-Id: myChangeId
projectdir/a.java
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("Added an awesome new API!", commitWithApiChange.releaseNote)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual(
"Added a new API! ([myChan]" +
"(https://android-review.googlesource.com/#/q/myChangeId), " +
"[b/123456](https://issuetracker.google.com/issues/123456), " +
"[b/1234567](https://issuetracker.google.com/issues/1234567), " +
"[b/123123](https://issuetracker.google.com/issues/123123))",
str(commitWithApiChange)
)
def test_parseAPICommitWithDefaultDelimitersAndNonstandardQuoteCharacters(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Relnote: “Added an awesome new API!
It will make your life easier.”
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("Added a new API!", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt"
],
commitWithApiChange.files
)
self.assertEqual("Added an awesome new API!\n" + \
" It will make your life easier."
, commitWithApiChange.releaseNote)
def test_parseAPICommitWithDefaultDelimitersAndUncapitalizedRelnoteTag(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
relnote: Added an awesome new API!
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("Added a new API!", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt"
],
commitWithApiChange.files
)
self.assertEqual("Added an awesome new API!", commitWithApiChange.releaseNote)
def test_parseAPICommitWithDefaultDelimitersAndCapitalizedRelnoteTag(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
"This is a quote about why it's great!"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
RelNotE: Added an awesome new API!
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("Added a new API!", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt"
],
commitWithApiChange.files
)
self.assertEqual("Added an awesome new API!", commitWithApiChange.releaseNote)
def test_parseAPICommitWithNotApplicableWithSlashRelnoteTag(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:API Tracking Improvements
_Body:Also fixed some other bugs
This CL fixes some infrastructure bugs
"This is a quote"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Relnote: N/A
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
projectdir/api/restricted_current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("API Tracking Improvements", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt",
"projectdir/api/restricted_current.txt"
],
commitWithApiChange.files
)
self.assertEqual("", commitWithApiChange.releaseNote)
def test_parseAPICommitWithMalformattedNotApplicableRelnoteTag(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:API Tracking Improvements
_Body:Also fixed some other bugs
This CL fixes some infrastructure bugs
"This is a quote"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Relnote: "N/A
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
projectdir/api/restricted_current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("API Tracking Improvements", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt",
"projectdir/api/restricted_current.txt"
],
commitWithApiChange.files
)
self.assertEqual("", commitWithApiChange.releaseNote)
def test_parseAPICommitWithNotApplicableWithoutSlashRelnoteTag(self):
commitWithApiChangeString = """
_CommitStart
_CommitSHA:mySha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:API Tracking Improvements
_Body:Also fixed some other bugs
This CL fixes some infrastructure bugs
"This is a quote"
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Relnote: na
Change-Id: myChangeId
projectdir/a.java
projectdir/b.java
projectdir/androidTest/c.java
projectdir/api/some_api_file.txt
projectdir/api/current.txt
projectdir/api/restricted_current.txt
"""
commitWithApiChange = Commit(commitWithApiChangeString, "/projectdir/")
self.assertEqual("mySha", commitWithApiChange.sha)
self.assertEqual("anemail@google.com", commitWithApiChange.authorEmail)
self.assertEqual("myChangeId", commitWithApiChange.changeId)
self.assertEqual("API Tracking Improvements", commitWithApiChange.summary)
self.assertEqual(CommitType.API_CHANGE, commitWithApiChange.changeType)
self.assertEqual([123456, 1234567, 123123], commitWithApiChange.bugs)
self.assertEqual([
"projectdir/a.java",
"projectdir/b.java",
"projectdir/androidTest/c.java",
"projectdir/api/some_api_file.txt",
"projectdir/api/current.txt",
"projectdir/api/restricted_current.txt"
],
commitWithApiChange.files
)
self.assertEqual("", commitWithApiChange.releaseNote)
def test_parseBugFixCommitWithCustomDelimiters(self):
commitSHADelimiter = "_MyCommitSHA:"
authorEmailDelimiter = "_MyAuthor:"
subjectDelimiter = "_MySubject:"
projectDir = "group/artifact"
commitWithABugFixString = "_CommitStart\n" + \
commitSHADelimiter + "mySha\n" + \
authorEmailDelimiter + "anemail@google.com\n" + \
"_Date:Tue Aug 6 15:05:55 2019 -0700\n" + \
subjectDelimiter + "Fixed a bug!\n" + \
"""
_Body:Also fixed some other bugs
Here is an explanation of my commit that changes a kotlin file
Relnote: "Fixed a critical bug"
Bug: 111111, 222222
Test: ./gradlew buildOnServer
Change-Id: myChangeId
""" + \
projectDir + "/a.java\n" + \
projectDir + "/b.kt\n" + \
projectDir + "/androidTest/c.java\n"
commitWithABugFix = Commit(
gitCommit = commitWithABugFixString,
projectDir = projectDir,
commitSHADelimiter = commitSHADelimiter,
subjectDelimiter = subjectDelimiter,
authorEmailDelimiter = authorEmailDelimiter
)
self.assertEqual("mySha", commitWithABugFix.sha)
self.assertEqual("anemail@google.com", commitWithABugFix.authorEmail)
self.assertEqual("myChangeId", commitWithABugFix.changeId)
self.assertEqual("Fixed a bug!", commitWithABugFix.summary)
self.assertEqual(CommitType.BUG_FIX, commitWithABugFix.changeType)
self.assertEqual([111111, 222222], commitWithABugFix.bugs)
self.assertEqual([
projectDir + "/a.java",
projectDir + "/b.kt",
projectDir + "/androidTest/c.java"
],
commitWithABugFix.files
)
self.assertEqual("Fixed a critical bug", commitWithABugFix.releaseNote)
def test_parseExternalContributorCommitWithCustomDelimiters(self):
commitSHADelimiter = "_MyCommitSHA:"
subjectDelimiter = "_MySubject:"
authorEmailDelimiter = "_MyAuthor:"
projectDir = "group/artifact"
commitFromExternalContributorString = "_CommitStart\n" + \
commitSHADelimiter + "mySha\n" + \
authorEmailDelimiter + "externalcontributor@gmail.com\n" + \
"_Date:Thurs Aug 8 15:05:55 2019 -0700\n" + \
subjectDelimiter + "New compat API!\n" + \
"""
_Body:Also fixed some other bugs
Here is an explanation of my commit that changes a java file
Relnote: Added a new compat API!
Bug: 111111, 222222
Test: ./gradlew buildOnServer
Change-Id: myChangeId
""" + \
projectDir + "/a.java\n" + \
projectDir + "/b.java\n" + \
projectDir + "/androidTest/c.java\n" + \
projectDir + "/api/current.txt\n" + \
projectDir + "/api/1.2.0-alpha04.txt\n"
commitFromExternalContributor = Commit(
commitFromExternalContributorString,
projectDir,
commitSHADelimiter = commitSHADelimiter,
subjectDelimiter = subjectDelimiter,
authorEmailDelimiter = authorEmailDelimiter
)
self.assertEqual("mySha", commitFromExternalContributor.sha)
self.assertEqual("externalcontributor@gmail.com", commitFromExternalContributor.authorEmail)
self.assertEqual("myChangeId", commitFromExternalContributor.changeId)
self.assertEqual("New compat API!", commitFromExternalContributor.summary)
self.assertEqual(CommitType.EXTERNAL_CONTRIBUTION, commitFromExternalContributor.changeType)
self.assertEqual([111111, 222222], commitFromExternalContributor.bugs)
self.assertEqual([
projectDir + "/a.java",
projectDir + "/b.java",
projectDir + "/androidTest/c.java",
projectDir + "/api/current.txt",
projectDir + "/api/1.2.0-alpha04.txt"
],
commitFromExternalContributor.files
)
self.assertEqual("Added a new compat API!", commitFromExternalContributor.releaseNote)
def test_parseGitLog(self):
mockGitRootDir = "gitRoot"
gitClient = GitClientTestImpl(mockGitRootDir)
# This is the default set-up boilerplate from `GitClientImpl.getGitLog` to set up the
# default git log command (gitLogCmd)
commitStartDelimiter = "_CommitStart"
commitSHADelimiter = "_CommitSHA:"
subjectDelimiter = "_Subject:"
authorEmailDelimiter = "_Author:"
dateDelimiter = "_Date:"
bodyDelimiter = "_Body:"
projectDir = "group/artifact"
gitLogOptions = "--pretty=format:" + \
commitStartDelimiter + "\%n" + \
commitSHADelimiter + "\%H\%n" + \
authorEmailDelimiter + "\%ae\%n" + \
dateDelimiter + "\%ad\%n" + \
subjectDelimiter + "\%s\%n" + \
bodyDelimiter + "\%b" + \
" --no-merges"
fullProjectDir = os.path.join(mockGitRootDir, projectDir)
gitLogCmd = GIT_LOG_CMD_PREFIX + " " + gitLogOptions + " sha..topSha -- " + fullProjectDir
# Check with default delimiters
gitLogString = """
_CommitStart
_CommitSHA:topSha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Added a new API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
Bug: 123456
Bug: b/1234567
Fixes: 123123
Test: ./gradlew buildOnServer
Change-Id: myChangeId\n
""" + \
projectDir + "/a.java\n" + \
projectDir + "/b.java\n" + \
projectDir + "/androidTest/c.java\n" + \
projectDir + "/api/some_api_file.txt\n" + \
projectDir + "/api/current.txt\n" + \
"""
_CommitStart
_CommitSHA:midSha
_Author:anemail@google.com
_Date:Tue Aug 6 15:05:55 2019 -0700
_Subject:Fixed a bug!
_Body:Also fixed some other bugs
Here is an explanation of my commit
Bug: 111111, 222222
Test: ./gradlew buildOnServer
Change-Id: myChangeId\n
""" + \
projectDir + "/a.java\n" + \
projectDir + "/b.java\n" + \
projectDir + "/androidTest/c.java\n" + \
"""
_CommitStart
_CommitSHA:sha
_Author:externalcontributor@gmail.com
_Date:Thurs Aug 8 15:05:55 2019 -0700
_Subject:New compat API!
_Body:Also fixed some other bugs
Here is an explanation of my commit
Bug: 111111, 222222
Test: ./gradlew buildOnServer
Change-Id: myChangeId\n
""" + \
projectDir + "/a.java\n" + \
projectDir + "/b.java\n" + \
projectDir + "/androidTest/c.java\n" + \
projectDir + "/api/current.txt\n" + \
projectDir + "/api/1.2.0-alpha04.txt\n"
gitClient.addReply(
gitLogCmd,
gitLogString
)
commitWithAPIChange = Commit("", projectDir)
commitWithAPIChange.sha = "topSha"
commitWithAPIChange.authorEmail = "anemail@google.com"
commitWithAPIChange.changeId = "myChangeId"
commitWithAPIChange.summary = "Added a new API!"
commitWithAPIChange.type = CommitType.API_CHANGE
commitWithAPIChange.bugs = [123456, 1234567, 123123]
commitWithAPIChange.files = [
projectDir + "/a.java",
projectDir + "/b.java",
projectDir + "/androidTest/c.java",
projectDir + "/api/some_api_file.txt",
projectDir + "/api/current.txt"
]
commitWithBugFix = Commit("", projectDir)
commitWithBugFix.sha = "midSha"
commitWithBugFix.authorEmail = "anemail@google.com"
commitWithBugFix.changeId = "myChangeId"
commitWithBugFix.summary = "Fixed a bug!"
commitWithBugFix.type = CommitType.BUG_FIX
commitWithBugFix.bugs = [111111, 222222]
commitWithBugFix.files = [
projectDir + "/a.java",
projectDir + "/b.java",
projectDir + "/androidTest/c.java"
]
commitFromExternalContributor = Commit("", projectDir)
commitFromExternalContributor.sha = "sha"
commitFromExternalContributor.authorEmail = "externalcontributor@gmail.com"
commitFromExternalContributor.changeId = "myChangeId"
commitFromExternalContributor.summary = "New compat API!"
commitFromExternalContributor.type = CommitType.EXTERNAL_CONTRIBUTION
commitFromExternalContributor.bugs = [111111, 222222]
commitFromExternalContributor.files = [
projectDir + "/a.java",
projectDir + "/b.java",
projectDir + "/androidTest/c.java",
projectDir + "/api/current.txt",
projectDir + "/api/1.2.0-alpha04.txt"
]
# In this test case, we pass an empty string as the subProjectDir because "group/artifact"
# is the git root dir and the git client will prepend that to the subProjectDir.
gitLogList = gitClient.getGitLog(
fromExclusiveSha = "sha",
untilInclusiveSha = "topSha",
keepMerges = False,
subProjectDir = projectDir
)
self.assertEqual(3, len(gitLogList))
for commit in gitLogList:
if commit.sha == "topSha":
self.assertCommitsAreEqual(commitWithAPIChange, commit)
elif commit.sha == "midSha":
self.assertCommitsAreEqual(commitWithBugFix, commit)
elif commit.sha == "sha":
self.assertCommitsAreEqual(commitFromExternalContributor, commit)
else:
self.assertFalse("Unable to parse commit")
def test_checkLatestCommitExists(self):
# Do not use the MockCommandRunner because it's a better test to check the validity of
# the git command against the actual git in the repo
gitClient = GitClient(os.getcwd())
subProjectDir = os.getcwd().split("frameworks/support/")[1]
commitList = gitClient.getGitLog(
fromExclusiveSha = "",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 1
)
self.assertEqual(1, len(commitList))
def test_checkLatestNCommitExists(self):
# Do not use the MockCommandRunner because it's a better test to check the validity of
# the git command against the actual git in the repo
gitClient = GitClient(os.getcwd())
subProjectDir = os.getcwd().split("frameworks/support/")[1]
commitList = gitClient.getGitLog(
fromExclusiveSha = "",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 0
)
self.assertEqual(0, len(commitList))
commitList = gitClient.getGitLog(
fromExclusiveSha = "",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 1
)
self.assertEqual(1, len(commitList))
commitList = gitClient.getGitLog(
fromExclusiveSha = "",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 2
)
self.assertEqual(2, len(commitList))
commitList = gitClient.getGitLog(
fromExclusiveSha = "HEAD~3",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 1
)
self.assertEqual(1, len(commitList))
def test_gitLogFailsWhenPassedAnAbsolutePath(self):
# Tests that you cannot pass an absolute file path to git log
gitClient = GitClient(os.getcwd())
subProjectDir = os.getcwd().split("frameworks/support/")[1]
subProjectDir = '/' + subProjectDir
self.assertRaises(RuntimeError, gitClient.getGitLog,
fromExclusiveSha = "",
untilInclusiveSha = "HEAD",
keepMerges = False,
subProjectDir = subProjectDir,
n = 1
)
def assertCommitsAreEqual(self, commitA, commitB):
self.assertEqual(commitA.summary, commitB.summary)
self.assertEqual(commitA.files, commitB.files)
self.assertEqual(commitA.sha, commitB.sha)
self.assertEqual(commitA.changeId, commitB.changeId)
self.assertEqual(commitA.authorEmail, commitB.authorEmail)
self.assertEqual(commitA.type, commitB.changeType)
self.assertEqual(commitA.projectDir, commitB.projectDir)
self.assertEqual(commitA.summary, commitB.summary)
self.assertEqual(commitA.releaseNote, commitB.releaseNote)
class TestMarkdown(unittest.TestCase):
def test_markdownCorrectlyFormatsForOneArtifactWithNoCommit(self):
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifactId"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = True,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "groupId")
self.assertEqual(releaseNotes.artifactIds, ["artifactId"])
self.assertEqual(releaseNotes.version, "version")
self.assertEqual(str(releaseNotes.releaseDate), "January 1, 1970")
self.assertEqual(releaseNotes.fromSHA, "fromSHA")
self.assertEqual(releaseNotes.untilSHA, "untilSHA")
self.assertEqual(releaseNotes.projectDir, "projectDir")
self.assertEqual(releaseNotes.requiresSameVersion, True)
self.assertEqual(releaseNotes.forceIncludeAllCommits, False)
self.assertEqual(str(releaseNotes.header),
"### Groupid Version version {:#version}")
self.assertEqual(str(releaseNotes.diffLogLink),
"[Version version contains" + \
" these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)"
)
self.assertEqual(releaseNotes.commits, [])
self.assertEqual(str(releaseNotes.commitMarkdownList),
"\n**New Features**\n\n" + \
"\n**API Changes**\n\n" + \
"\n**Bug Fixes**\n\n" + \
"\n**External Contribution**\n\n"
)
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`groupId:artifactId:version` is released." + \
" [Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
self.assertEqual(releaseNotes.bugsFixed, [])
def test_markdownCorrectlyFormatsForTwoArtifactsWithFalseRequiresSameVersion(self):
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifactId1", "artifactId2"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "groupId")
self.assertEqual(releaseNotes.artifactIds, ["artifactId1", "artifactId2"])
self.assertEqual(releaseNotes.version, "version")
self.assertEqual(str(releaseNotes.releaseDate), "January 1, 1970")
self.assertEqual(releaseNotes.fromSHA, "fromSHA")
self.assertEqual(releaseNotes.untilSHA, "untilSHA")
self.assertEqual(releaseNotes.projectDir, "projectDir")
self.assertEqual(releaseNotes.requiresSameVersion, False)
self.assertEqual(releaseNotes.forceIncludeAllCommits, False)
self.assertEqual(str(releaseNotes.header),
"### Artifactid1 Artifactid2 Version version {:#version}")
self.assertEqual(str(releaseNotes.diffLogLink),
"[Version version contains" + \
" these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)"
)
self.assertEqual(releaseNotes.commits, [])
self.assertEqual(str(releaseNotes.commitMarkdownList),
"\n**New Features**\n\n" + \
"\n**API Changes**\n\n" + \
"\n**Bug Fixes**\n\n" + \
"\n**External Contribution**\n\n"
)
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`groupId:artifactId1:version` and `groupId:artifactId2:version` are released." + \
" [Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
self.assertEqual(releaseNotes.bugsFixed, [])
def test_markdownCorrectlyFormatsForThreeArtifactsWithFalseRequiresSameVersion(self):
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifactId1", "artifactId2", "artifactId3"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "groupId")
self.assertEqual(releaseNotes.artifactIds,
["artifactId1", "artifactId2", "artifactId3"])
self.assertEqual(releaseNotes.version, "version")
self.assertEqual(str(releaseNotes.releaseDate), "January 1, 1970")
self.assertEqual(releaseNotes.fromSHA, "fromSHA")
self.assertEqual(releaseNotes.untilSHA, "untilSHA")
self.assertEqual(releaseNotes.projectDir, "projectDir")
self.assertEqual(releaseNotes.requiresSameVersion, False)
self.assertEqual(releaseNotes.forceIncludeAllCommits, False)
self.assertEqual(str(releaseNotes.header),
"### Artifactid1 Artifactid2 Artifactid3 Version version {:#version}")
self.assertEqual(str(releaseNotes.diffLogLink),
"[Version version contains" + \
" these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)"
)
self.assertEqual(releaseNotes.commits, [])
self.assertEqual(str(releaseNotes.commitMarkdownList),
"\n**New Features**\n\n" + \
"\n**API Changes**\n\n" + \
"\n**Bug Fixes**\n\n" + \
"\n**External Contribution**\n\n"
)
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`groupId:artifactId1:version`, `groupId:artifactId2:version`, and " + \
"`groupId:artifactId3:version` are released. " + \
"[Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
self.assertEqual(releaseNotes.bugsFixed, [])
def test_markdownCorrectlyFormatsForFiveArtifactsWithFalseRequiresSameVersion(self):
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifact-Id1", "artifact-Id2", "artifact-Id3",
"artifact-Id4", "artifact-Id5"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "groupId")
self.assertEqual(releaseNotes.artifactIds,
["artifact-Id1", "artifact-Id2", "artifact-Id3",
"artifact-Id4", "artifact-Id5"])
self.assertEqual(releaseNotes.version, "version")
self.assertEqual(str(releaseNotes.releaseDate), "January 1, 1970")
self.assertEqual(releaseNotes.fromSHA, "fromSHA")
self.assertEqual(releaseNotes.untilSHA, "untilSHA")
self.assertEqual(releaseNotes.projectDir, "projectDir")
self.assertEqual(releaseNotes.requiresSameVersion, False)
self.assertEqual(releaseNotes.forceIncludeAllCommits, False)
self.assertEqual(str(releaseNotes.header),
"### Groupid Version version {:#version}")
self.assertEqual(str(releaseNotes.diffLogLink),
"[Version version contains" + \
" these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)"
)
self.assertEqual(releaseNotes.commits, [])
self.assertEqual(str(releaseNotes.commitMarkdownList),
"\n**New Features**\n\n" + \
"\n**API Changes**\n\n" + \
"\n**Bug Fixes**\n\n" + \
"\n**External Contribution**\n\n"
)
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`groupId:artifact-*:version` is released. " + \
"[Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
self.assertEqual(releaseNotes.bugsFixed, [])
def test_markdownCorrectlyCapitalizesGroupIds(self):
releaseNotes = LibraryReleaseNotes(
groupId = "androidx.recyclerview",
artifactIds = ["recyclerview"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "androidx.recyclerview")
self.assertEqual(str(releaseNotes.header),
"### RecyclerView Version version {:#recyclerview-version}")
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`androidx.recyclerview:recyclerview:version` is released. " + \
"[Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
releaseNotes = LibraryReleaseNotes(
groupId = "androidx.swiperefreshlayout",
artifactIds = ["swiperefreshlayout"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = True,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.groupId, "androidx.swiperefreshlayout")
self.assertEqual(str(releaseNotes.header),
"### SwipeRefreshLayout Version version {:#version}")
self.assertEqual(releaseNotes.getFormattedReleaseSummary(),
"`androidx.swiperefreshlayout:swiperefreshlayout:version` is released. " + \
"[Version version contains these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/fromSHA..untilSHA/projectDir)\n"
)
def test_markdownCorrectlyFormatsGittilesLinkWithNoFromSHA(self):
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifactId"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = True,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(releaseNotes.fromSHA, "")
self.assertEqual(releaseNotes.untilSHA, "untilSHA")
self.assertEqual(releaseNotes.projectDir, "projectDir")
self.assertEqual(str(releaseNotes.diffLogLink),
"[Version version contains" + \
" these commits.](https://android.googlesource.com/" + \
"platform/frameworks/support/+log/untilSHA/projectDir)"
)
def test_markdownCorrectlyGeneratesChannelSummary(self):
releaseNotes = LibraryReleaseNotes(
groupId = "androidx.recyclerview",
artifactIds = ["recyclerview"],
version = "1.2.0-alpha04",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(str(releaseNotes.channelSummary),
"* [RecyclerView Version 1.2.0-alpha04]" + \
"(/jetpack/androidx/releases/recyclerview#recyclerview-1.2.0-alpha04)\n")
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifact-Id1", "artifact-Id2", "artifact-Id3",
"artifact-Id4", "artifact-Id5"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(str(releaseNotes.channelSummary),
"* [Groupid Version version]" + \
"(/jetpack/androidx/releases/groupid#version)\n")
releaseNotes = LibraryReleaseNotes(
groupId = "groupId",
artifactIds = ["artifactId1", "artifactId2", "artifactId3"],
version = "version",
releaseDate = "01-01-1970",
fromSHA = "fromSHA",
untilSHA = "untilSHA",
projectDir = "projectDir",
requiresSameVersion = False,
commitList = [],
forceIncludeAllCommits = False
)
self.assertEqual(str(releaseNotes.channelSummary),
"* [Artifactid1 Artifactid2 Artifactid3 Version version]" + \
"(/jetpack/androidx/releases/groupid#version)\n")
if __name__ == '__main__':
unittest.main()