Change license to AGPL
This commit:
- Updates the `LICENSE` file
- Start every file with something like:
// Copyright YEAR_FIRST_PUBLISHED Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
---
First, I removed existing license headers with this Ruby 3.1.2 script:
require 'set'
EXTENSIONS_TO_CHECK = Set['.h', '.hpp', '.cpp', '.m', '.mm', '.pch', '.swift']
same = 0
different = 0
all_files = `git ls-files`.lines.map { |line| line.strip }
all_files.each do |relative_path|
if relative_path == 'Pods'
next
end
unless EXTENSIONS_TO_CHECK.include? File.extname(relative_path)
next
end
path = File.expand_path(relative_path)
contents = File.read(path)
new_contents = contents.sub(/\/\/\n\/\/ Copyright .*\n\/\/\n\n/, '')
if contents == new_contents
same += 1
else
different += 1
end
File.write(path, new_contents)
end
puts "updated #{different} file(s), left #{same} untouched"
I'm sure this script could be improved, but it worked well enough.
Then, I created `Scripts/lint/lint-license-headers` and ran it to auto-
fix a lot of files. This changed the mode of some files, but I think
that's actually desirable. For example,
`SignalServiceKit/src/Util/AppContext.m` previously had a mode of
`0755/-rwxr-xr-x`, and it's now `0644/-rw-r--r--`.
Then I fixed some stragglers and updated the precommit script.
See [a similar change in the Desktop app][0].
[0]: 8bfaf598af
88 lines
2.8 KiB
Swift
88 lines
2.8 KiB
Swift
//
|
|
// Copyright 2020 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
import XCTest
|
|
|
|
@testable import SignalServiceKit
|
|
|
|
class NSHTTPURLResponseTests: SSKBaseTestSwift {
|
|
|
|
func testHTTPDateRetryAfter() {
|
|
let strings = [
|
|
"Thu, 01 Jan 1970 00:00:00 GMT",
|
|
"Wed, 21 Oct 2015 07:28:00 GMT",
|
|
"Wed, 21 Oct 2015 07:28:01 GMT",
|
|
"Thu, 22 Oct 2015 07:28:00 GMT",
|
|
"Thu, 22 Oct 2015 07:28:01 GMT",
|
|
"Tue, 11 Aug 2020 05:54:39 GMT"
|
|
]
|
|
strings.forEach { string in
|
|
XCTAssertEqual(OWSHttpHeaders.parseRetryAfterHeaderValue(string), Date.ows_parseFromHTTPDateString(string)!)
|
|
}
|
|
}
|
|
|
|
func testISO8601RetryAfter() {
|
|
let strings = [
|
|
"1970-01-01T00:00:00+0000",
|
|
"1969-12-31T16:00:00-0800",
|
|
"2015-10-21T07:28:00+0000",
|
|
"2015-10-20T023:28:00-0800",
|
|
"2015-10-21T07:28:01+0000",
|
|
"2015-10-22T07:28:00+0000",
|
|
"2015-10-22T07:28:01+0000",
|
|
"2020-08-10T21:54:39-0800",
|
|
"2020-08-11T05:54:39+0000"
|
|
]
|
|
strings.forEach { string in
|
|
XCTAssertEqual(OWSHttpHeaders.parseRetryAfterHeaderValue(string), Date.ows_parseFromISO8601String(string)!)
|
|
}
|
|
}
|
|
|
|
// Verifies that double retry-after values are parsed as a delay from the current time
|
|
func testDelayRetryAfter() {
|
|
let delayStrings = [
|
|
"1",
|
|
"2",
|
|
"1.001",
|
|
"120",
|
|
"1200.0",
|
|
"1200.1",
|
|
"86400.000",
|
|
" 86400.000 ",
|
|
" \t \t86400.000\t \t "
|
|
]
|
|
delayStrings.forEach { (string) in
|
|
let date = OWSHttpHeaders.parseRetryAfterHeaderValue(string)
|
|
XCTAssertEqual(
|
|
date!.timeIntervalSinceNow,
|
|
Double(string.trimmingCharacters(in: .whitespacesAndNewlines))!,
|
|
accuracy: 0.1)
|
|
}
|
|
}
|
|
|
|
// Verifies that if we can't parse a retry-after string, we'll default to 60s
|
|
func testInvalidRetryAfter() {
|
|
let invalidStrings = [
|
|
"8/11/1994 01:02:03",
|
|
"blahhh",
|
|
"one",
|
|
"soon",
|
|
"later"
|
|
]
|
|
invalidStrings.forEach { (string) in
|
|
let date = OWSHttpHeaders.parseRetryAfterHeaderValue(string)
|
|
XCTAssertEqual(date!.timeIntervalSinceNow, 60, accuracy: 0.1)
|
|
}
|
|
}
|
|
|
|
func testEmptyRetryAfter() {
|
|
XCTAssertNil(OWSHttpHeaders.parseRetryAfterHeaderValue(nil))
|
|
XCTAssertNil(OWSHttpHeaders.parseRetryAfterHeaderValue(""))
|
|
XCTAssertNil(OWSHttpHeaders.parseRetryAfterHeaderValue(" "))
|
|
XCTAssertNil(OWSHttpHeaders.parseRetryAfterHeaderValue("\n"))
|
|
}
|
|
}
|