From 1222d37137665feee6e7c3170d236941847c4764 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 16 May 2019 15:15:28 -0500 Subject: [PATCH] Set up CI with Azure Pipelines --- .travis.yml | 29 ----------------------- README.md | 2 ++ appveyor.yml | 19 --------------- azure-pipelines.yml | 49 +++++++++++++++++++++++++++++++++++++++ ci/azure-install-rust.yml | 23 ++++++++++++++++++ ci/azure-test-all.yml | 11 +++++++++ src/cred.rs | 11 ++++++--- src/panic.rs | 22 ------------------ 8 files changed, 93 insertions(+), 73 deletions(-) delete mode 100644 .travis.yml delete mode 100644 appveyor.yml create mode 100644 azure-pipelines.yml create mode 100644 ci/azure-install-rust.yml create mode 100644 ci/azure-test-all.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1ec058b16c..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: rust -git: - submodules: false - -matrix: - include: - - rust: 1.32.0 - - rust: stable - - os: osx - rust: stable - before_install: - - export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include - - export OPENSSL_LIB_DIR=`brew --prefix openssl`/lib - - rust: beta - - rust: nightly - -script: - - git submodule update --init - - cargo test --no-default-features - - cargo test - - cargo run --manifest-path systest/Cargo.toml --release - - if [ "$TRAVIS_RUST_VERSION" = "nightly" ]; then - cargo test --features unstable; - cargo test --manifest-path git2-curl/Cargo.toml; - fi - -notifications: - email: - on_success: never diff --git a/README.md b/README.md index 462193b331..21b43af80a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # git2-rs +[![Build Status](https://dev.azure.com/rust-lang/git2-rs/_apis/build/status/rust-lang.git2-rs?branchName=master)](https://dev.azure.com/rust-lang/git2-rs/_build/latest?definitionId=9&branchName=master) + [Documentation](https://docs.rs/git2) libgit2 bindings for Rust diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 0182bfd8b6..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,19 +0,0 @@ -environment: - matrix: - - TARGET: x86_64-pc-windows-msvc - - TARGET: i686-pc-windows-msvc -install: - - ps: Start-FileDownload "https://static.rust-lang.org/dist/rust-nightly-${env:TARGET}.exe" - - rust-nightly-%TARGET%.exe /VERYSILENT /NORESTART /DIR="C:\Program Files (x86)\Rust" - - set PATH=%PATH%;C:\Program Files (x86)\Rust\bin - - if defined MSYS_BITS set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH% - - set CARGO_TARGET_DIR=%APPVEYOR_BUILD_FOLDER%\target - - rustc -V - - cargo -V - -build: false - -test_script: - - cargo test --target %TARGET% - - cargo test --no-default-features --target %TARGET% - - cargo run --manifest-path systest/Cargo.toml --target %TARGET% diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000000..65091dfc00 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,49 @@ +trigger: + - master + +jobs: + - job: MSRV + pool: + vmImage: ubuntu-16.04 + steps: + - template: ci/azure-install-rust.yml + - script: cargo build + displayName: "Build crate" + variables: + TOOLCHAIN: 1.32.0 + + - job: Linux + pool: + vmImage: ubuntu-16.04 + steps: + - template: ci/azure-test-all.yml + strategy: + matrix: + stable: + TOOLCHAIN: stable + beta: + TOOLCHAIN: beta + nightly: + TOOLCHAIN: nightly + + - job: macOS + pool: + vmImage: macos-10.13 + steps: + - template: ci/azure-test-all.yml + strategy: + matrix: + x86_64: + TARGET: x86_64-apple-darwin + + - job: Windows + pool: + vmImage: vs2017-win2016 + steps: + - template: ci/azure-test-all.yml + strategy: + matrix: + x86_64-msvc: + TARGET: x86_64-pc-windows-msvc + i686-msvc: + TARGET: i686-pc-windows-msvc diff --git a/ci/azure-install-rust.yml b/ci/azure-install-rust.yml new file mode 100644 index 0000000000..fa7eae459b --- /dev/null +++ b/ci/azure-install-rust.yml @@ -0,0 +1,23 @@ +steps: + - bash: | + set -e + toolchain=$TOOLCHAIN + if [ "$toolchain" = "" ]; then + toolchain=stable + fi + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $toolchain + echo "##vso[task.prependpath]$HOME/.cargo/bin" + displayName: Install rust (unix) + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + + - script: | + curl -sSf -o rustup-init.exe https://win.rustup.rs + rustup-init.exe -y --default-toolchain stable-%TARGET% + echo ##vso[task.prependpath]%USERPROFILE%\.cargo\bin + displayName: Install rust (windows) + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + + - script: | + rustc -Vv + cargo -V + displayName: Query rust and cargo versions diff --git a/ci/azure-test-all.yml b/ci/azure-test-all.yml new file mode 100644 index 0000000000..5f9124c302 --- /dev/null +++ b/ci/azure-test-all.yml @@ -0,0 +1,11 @@ +steps: + - template: azure-install-rust.yml + + - bash: cargo test --no-default-features + displayName: "cargo test --no-default-features" + - bash: cargo test + displayName: "cargo test" + - bash: cargo run --manifest-path systest/Cargo.toml + displayName: "run systest" + - bash: cargo test --manifest-path git2-curl/Cargo.toml + displayName: "test git2-curl" diff --git a/src/cred.rs b/src/cred.rs index 37d3a228d4..12ddcbdbce 100644 --- a/src/cred.rs +++ b/src/cred.rs @@ -408,7 +408,7 @@ impl CredentialHelper { } } -#[cfg(all(test, feature = "unstable"))] +#[cfg(test)] mod test { use std::env; use std::fs::File; @@ -467,6 +467,8 @@ mod test { #[test] fn credential_helper4() { + if cfg!(windows) { return } // shell scripts don't work on Windows + let td = TempDir::new("git2-rs").unwrap(); let path = td.path().join("script"); File::create(&path).unwrap().write(br"\ @@ -488,6 +490,7 @@ echo username=c #[test] fn credential_helper5() { + if cfg!(windows) { return } // shell scripts don't work on Windows let td = TempDir::new("git2-rs").unwrap(); let path = td.path().join("git-credential-script"); File::create(&path).unwrap().write(br"\ @@ -524,6 +527,7 @@ echo username=c #[test] fn credential_helper7() { + if cfg!(windows) { return } // shell scripts don't work on Windows let td = TempDir::new("git2-rs").unwrap(); let path = td.path().join("script"); File::create(&path).unwrap().write(br"\ @@ -543,6 +547,7 @@ echo password=$2 } #[test] + #[cfg(feature = "ssh")] fn ssh_key_from_memory() { let cred = Cred::ssh_key_from_memory( "test", @@ -551,7 +556,7 @@ echo password=$2 -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,818C7722D3B01F2161C2ACF6A5BBAAE8 - + 3Cht4QB3PcoQ0I55j1B3m2ZzIC/mrh+K5nQeA1Vy2GBTMyM7yqGHqTOv7qLhJscd H+cB0Pm6yCr3lYuNrcKWOCUto+91P7ikyARruHVwyIxKdNx15uNulOzQJHQWNbA4 RQHlhjON4atVo2FyJ6n+ujK6QiBg2PR5Vbbw/AtV6zBCFW3PhzDn+qqmHjpBFqj2 @@ -582,7 +587,7 @@ echo password=$2 Some("test123")); assert!(cred.is_ok()); } - + #[cfg(unix)] fn chmod(path: &Path) { diff --git a/src/panic.rs b/src/panic.rs index 35f2c09394..7444df1099 100644 --- a/src/panic.rs +++ b/src/panic.rs @@ -5,7 +5,6 @@ thread_local!(static LAST_ERROR: RefCell>> = { RefCell::new(None) }); -#[cfg(feature = "unstable")] pub fn wrap T + ::std::panic::UnwindSafe>(f: F) -> Option { use std::panic; if LAST_ERROR.with(|slot| slot.borrow().is_some()) { @@ -22,27 +21,6 @@ pub fn wrap T + ::std::panic::UnwindSafe>(f: F) -> Option { } } -#[cfg(not(feature = "unstable"))] -pub fn wrap T>(f: F) -> Option { - struct Bomb { - enabled: bool, - } - impl Drop for Bomb { - fn drop(&mut self) { - if !self.enabled { - return - } - panic!("callback has panicked, and continuing to unwind into C \ - is not safe, so aborting the process"); - - } - } - let mut bomb = Bomb { enabled: true }; - let ret = Some(f()); - bomb.enabled = false; - ret -} - pub fn check() { let err = LAST_ERROR.with(|slot| slot.borrow_mut().take()); if let Some(err) = err {