Fork of daniellemaywood.uk/gleam — Wasm codegen work
2

Configure Feed

Select the types of activity you want to include in your feed.

Re-download git packages when their path changes

+57 -9
+57 -9
compiler-core/src/manifest.rs
··· 699 699 Some(old) if old.version == new.version => match (&old.source, &new.source) { 700 700 ( 701 701 ManifestPackageSource::Git { 702 - commit: old_hash, .. 702 + commit: old_hash, 703 + path: old_path, 704 + .. 703 705 }, 704 706 ManifestPackageSource::Git { 705 - commit: new_hash, .. 707 + commit: new_hash, 708 + path: new_path, 709 + .. 706 710 }, 707 - ) if old_hash != new_hash => changed_git.push(ChangedGit { 708 - name: new.name.clone(), 709 - old_hash: old_hash.clone(), 710 - new_hash: new_hash.clone(), 711 - }), 711 + ) if old_hash != new_hash || old_path != new_path => { 712 + changed_git.push(ChangedGit { 713 + name: new.name.clone(), 714 + old_hash: old_hash.clone(), 715 + new_hash: new_hash.clone(), 716 + }) 717 + } 712 718 ( 713 719 ManifestPackageSource::Hex { .. } 714 720 | ManifestPackageSource::Local { .. } ··· 747 753 use ecow::EcoString; 748 754 use hexpm::version::Version; 749 755 750 - use crate::manifest::{Base16Checksum, ManifestPackage, ManifestPackageSource, PackageChanges}; 751 - use crate::manifest::{Changed, Manifest}; 756 + use crate::manifest::{ 757 + Base16Checksum, Changed, ChangedGit, Manifest, ManifestPackage, ManifestPackageSource, 758 + PackageChanges, 759 + }; 752 760 753 761 #[test] 754 762 fn resolved_with_updated() { ··· 853 861 assert!(changes.changed.is_empty()); 854 862 assert_eq!(changes.removed, vec![name.clone()]); 855 863 assert_eq!(changes.added, vec![(name.clone(), version.clone())]); 864 + } 865 + 866 + #[test] 867 + fn resolved_with_git_path_change_same_commit() { 868 + let name = EcoString::from("wibble"); 869 + let commit = EcoString::from("bd9fe02f72250e6a136967917bcb1bdccaffa3c8"); 870 + let package = |path: &str| ManifestPackage { 871 + name: name.clone(), 872 + version: Version::new(1, 0, 0), 873 + build_tools: vec![], 874 + otp_app: None, 875 + requirements: vec![], 876 + source: ManifestPackageSource::Git { 877 + repo: "https://github.com/gleam-lang/gleam.git".into(), 878 + commit: commit.clone(), 879 + path: Some(path.into()), 880 + }, 881 + }; 882 + 883 + let old = Manifest { 884 + requirements: HashMap::new(), 885 + packages: vec![package("packages/a")], 886 + }; 887 + let new = Manifest { 888 + requirements: HashMap::new(), 889 + packages: vec![package("packages/b")], 890 + }; 891 + 892 + let changes = PackageChanges::between_manifests(&old, &new); 893 + assert_eq!( 894 + changes.changed_git, 895 + vec![ChangedGit { 896 + name: name.clone(), 897 + old_hash: commit.clone(), 898 + new_hash: commit.clone(), 899 + }] 900 + ); 901 + assert!(changes.added.is_empty()); 902 + assert!(changes.changed.is_empty()); 903 + assert!(changes.removed.is_empty()); 856 904 } 857 905 } 858 906